水耕栽培しているアボカドの植物育成LEDライトの点灯や消灯をHubotを使って実装しています。リモートからライトを制御できるのですが、様子が見えないので本当にライトが点いたどうか分かりません。Raspberry PiにWebcamをつけてアボカドをライブ配信しながらライトの制御を確認してみます。
Logicool C270
Webcamは安価なLogicool C270を2,000円くらいで購入しました。国内外でRaspberry Piと一緒に使う例がたくさん見つかるので安心です。
- Raspberry PiのWebカメラをLogicool C270にグレードアップする
- How to make a DIY home alarm system with a raspberry pi and a webcam
Motion
Raspberry Piの動画配信ツール
Raspberry PiにWebcamをUSBで接続して動画配信をするツールを調べるといくつか見つかりました。
今回はdebパッケージでインストールできて、設定が簡単なMotionを使ってみます。
Motionのインストール
Raspberry PiにWebcamをUSB接続します。lsusbコマンドを実行してカメラが認識されているか確認します。
$ lsusb |
Motionをapt-get installします。motion
ユーザーとvideo
グループも同時に作成されました。
$ sudo apt-get update |
設定ファイル
最初に設定ファイルのバックアップをとります。
$ sudo cp /etc/motion/motion.conf{,.orig} |
motion.confを以下のように修正します。設定は以下のサイトを参考にさせていただきました。
width 640 # 幅 |
Motionの起動
ノンデーモン起動
テスト用にMotionをnon-daemonモードで起動します。
$ sudo motion -n |
Raspberry Piはローカルネットワーク上にあります。
同じLANにOSXを接続してブラウザを開きます。Chromeは直接URLから開けませんでした。
- Chrome: x
- Safari: ○
- Firefox: ○
デーモン起動
Motionをデモナイズする場合、設定ファイルは2つ修正が必要です。/etc/default/motion
のstart_motion_daemon
をyesにします。
# set to 'yes' to enable the motion daemon |
/etc/motion/motion.conf
のdaemon
をonにします。
# Start in daemon (background) mode and release terminal (default: off) |
/etc/init.d/motion
が有効になるのでMotionのサービスを起動します。
$ sudo service motion start |
設定ファイルのdiff
設定ファイルの変更箇所をdiffで確認します。
$ sudo diff -u motion.conf.orig motion.conf > /tmp/motion.diff |
--- motion.conf.orig 2015-08-04 15:32:52.354807944 +0900 |
ngrok
ngrokのダウンロードページからLinux/ARMのバイナリをRaspberry Piにインストールします。
$ wget https://dl.ngrok.com/ngrok_2.0.19_linux_arm.zip |
最初にngrokをフォアグラウンドで起動してテストします。MotionのHTTP
の8081ポートをngrokを使ってトンネルします。
$ ngrok http 8081 |
SafariかFirefoxで開いてWebcamの動画が表示されていることを確認します。
Supervisor
Supervisorを使いngrokのトンネルのプロセスを管理します。設定ファイルのcommand
行にngrokコマンドを記述します。--authtoken
フラグと-subdomain
フラグを追加します。-subdomain
フラグで指定するサブドメイン名はReserved Tunnels画面のReserved Domainセクションから登録しておきます。
[program:ngrok-webcam] |
rereadして作成した設定ファイルをSupervisorに読み込ませます。
$ sudo supervisorctl reread |
addでSupervisorのサブプロセスにngrokを追加します。
$ sudo supervisorctl add ngrok-webcam |
ngrokのダッシュボードのTunnels OnlineセクションにトンネルしているURLとクライアントのIPアドレスが表示されました。
SafariからこのURLにアクセスするとMotionが配信している動画を見ることができます。
freeboardに統合する
freeboardのダッシュボードにMotionの動画を埋め込むと、Chromeでも表示できるようになります。
Paneの追加
ADD PANEをクリックしてPaneを追加します。
Paneの工具アイコンをクリックしてPaneの設定を行います。名前は「アボカドライブ」とつけました。
Widgetの追加
次にPaneのプラスアイコンをクリックしてWidgetを追加します。
WidgetのプラスアイコンをクリックしてWidgetの編集をします。動画のフレーム画像はサーバー側で変更されるので、ダッシュボードではリフレッシュしません。
- TYPE: Picture
- IMAGE URL: ngrokがトンネルしているURL
- REFRESH EVERY: 3600 (画面が消えるのでたまにリフレッシュする)
完成
Hubotのライトをオン/オフするコマンドが正しく動作しているかライブ映像で確認できるようになりました。