動機
前回のズゴックでのXFDとズゴック温度計から気づくとはや半年以上が経過していました。
当初はネタとしても、用途としても満足をしていたのものの、使っていくうちに幾つか不満が出てきました。
- Bambooへの問い合わせがすべてRasperryPiで動いているGroovyのコードにかかれているため、Bambooの構成が変わるたびにGroovy修正→パッケージ→再デプロイが必要でメンテナンスが面倒でした、結果的にBambooの監視は途中から止めてしまっていました。
- Bambooのビルドのイベント以外でもLED光らせたら楽しいかなぁというイベント(プルリクエストとか)があるのに、上記の通りメンテナンスが面倒なので結局応用がきかせにくく、せっかくアイディアが思いついてもそのまま寝かせてしまっていました。
- 温度、湿度情報もMackerel以外でも使えそうなのに、RasperryPi上でコマンドを実行しないと値が取れないので使いにくくせっかくのデータが行かせていませんでした。
そこで今回は、この不満を解消しつつ、
- Go言語なんか目につく機会が多くなったんで、ここいらでちょっと使ってみたいなぁ。何ならDockerとかHashicorpとかコード読めるようになったら嬉しい!
- Rundeckって社内で使っている人も増えてるし、世間的にも流行ってるっぽいからちょっと使ってみたい。いやむしろ使うべき!
という個人的な野望を満たすため、ズゴックのアップデートを行うことにしました。
なんで姫路城?
という経緯でズゴックをアップデートしようと思い立ったものの
- スゴックは職場に置きっぱなしで手元になかった(そもそものうっかり!)
- ガンダムネタは鉄板かと思っていたが、最近入社した若者の中にはガンダムを知らないというケースがあった(ジェネレーションギャップ!!!)
- アニメより歴史的な建造物とかのほうが一般受けするんじゃないか(という下心!)
- 人型ロボットはスペースが少なくてセンサーの設置やケーブルの取り回しが大変
といういくつか問題と前回の反省点がありました。
そんなことを考えて悶々とした日々を送っていたところ。
「なんか最近テレビで城の特集とかやってるし下町ロケットで仮面ライダードライブ(役だったひと)が入院中の子供に姫路城プレゼントしてたしこれはもう絶対城しかない」
というひらめきを得て、ズゴックから路線を変えて姫路城をベースに新しいデバイスを作ることにしました。
なんでGo言語
なんか(いまになって)流行ってる風なのと、風のうわさで「Go言語いいよいいよ」みたいな話は聞くものの、具体的に何がいいのかピンとこなかったので使ったらわかるかもしれないという淡い期待を込めてGo言語を採用しました。
なんでRundeckとかつかったの?
IBM Tivoli Workload SchedulerとかJP1 AJSとかControll-Mとかで苦しんできた過去を踏まえて、いま流行りっぽいオープンソースのジョブスケジューラの実力(の片鱗)を見てみたかったのと、「SSHログインしたら負け」というポリシーのもと、一旦作ったプロダクトの運用はSSHを使わずにできないといけないという流派の存在をしり、そのムーブメントに乗ってみようかと思ったので採用してみました。
アーキテクチャ
今回のポイントとしては
- センサー、LEDの制御をREST API化して、Raspi本体からも、外部からも気軽に使えるようにする。
- 物理ボタンを押した際のアクションをRundeckのJOB定義にすることにより、ブラウザからボタンの振る舞いを変更できるようにする。
の2点です。
シンプルなのであまり参考になりませんが、LED、温度センサー、物理ボタンの処理シーケンスを書いてみました。
準備
材料
- 童友社 DOYUSHA
JOYJOYコレクション 1/800 姫路城- 関係ないですが、ヨドバシはプラモが常に安くていいですね。
- Raspberry Pi 2 Model B
- RGBフルカラーLED 5mm4本足 OSTA5131A カソードコモン
- フルカラーLEDなら何でもいいですが、マイコン内蔵のLEDはPaspberryPiからの制御が難しいという話を聞いて今回は避けました。
- 温湿度センサ モジュール AM2320
- 違うモジュールを試してみようと思いましたが、今回は個人的に実績のあるこちらのモジュールにしました
- カーボン抵抗(炭素皮膜抵抗) 1/4W 330Ω
- タクトスイッチ(大)10個セット
適当なジャンパ線
- ハンダゴテ+はんだ
- 私は温度計の足を直接はんだ付けしたくなかったので分割ロングピンソケット 1x42 (42P) を使いました。
電子部品系は秋月電子で購入し、プラモはヨドバシカメラで購入しました。
次回
今回は、なんとなくの設計と、材料を揃えました。
次回は、姫路城の築城について書きたいと思います。