ラズベリーパイで猫ちゃん監視システム – 設定法まとめ
ngrokという外部からlocalhostにアクセス可能にするツールを使用しておうちの猫ちゃん達を職場などで確認するシステムをRaspberrypi3で作りました。その後しばらく使用していなかったので再度開始しようとしたのですが、あれこれ設定のポイントが抜けていたため改めて設定法を書いておきます。
使用ハードウエア
- Raspberrypi 3
- USB camera iBaffulo Web Camera BSWFD06M
使用ツール
- OS RASPBIAN JESSIE WITH PIXEL
- motion
- ngrok
Motionの導入と設定
motionは以下の手順で導入
# sudo apt-get install motion motionの設定 /etc/motion/motion.conf Daemonモード motionをDaemonとして起動するのか否かの設定 # Start in daemon (background) mode and release terminal (default: off) daemon off 出力イメージサイズの設定 ここではカメラの設定の範囲内で自由に設定する。 # Image width (pixels). Valid range: Camera dependent, default: 352 width 352 # Image height (pixels). Valid range: Camera dependent, default: 288 height 288 ビデオ出力をlocalhost以外でも許可する設定。ここではoffとする。 # Restrict stream connections to localhost only (default: on) stream_localhost off 設定が終わったらmotionを起動します。 ~ $ sudo motion 終了は ctrl + cで。
次に外部からlocalhostにアクセスするためのツールngrokの導入
ngrokのサイトにアクセスしてまずはsignupというリンクを使いユーザー登録します。その後downloadというリンクを押下しraspberrypiの場合はこのファイルをダウンロードし解凍します。ngrok-stable-linux-arm.zip
ユーザー登録することでauthtokenが発行されるので、先ほどngrokを解凍したディレクトリに配置すれば認証されます。
Install your authtoken
./ngrok authtoken 5bem19mF3K4A9g6t7wCeb_4cGny14DBVtx
さて外部公開するための最後の手順がhttpアクセスする場合のグローバルIPアドレスの取得です。コマンドラインで以下のように入力します。
~ $ ./ngrok http 8081
Session Status online Account hogehoge (Plan: Free) Version 2.1.18 Region United States (us) Web Interface http://127.0.0.1:4040 Forwarding http://XXXXXXX.ngrok.io -> localhost:8081 Forwarding https://XXXXXX.ngrok.io -> localhost:8081 Connections ttl opn rt1 rt5 p50 p90 4 1 0.00 0.00 68.18 3063.20 HTTP Requests ------------- GET / 200 OK GET / 200 OK GET / GET / 200 OK GET / 200 OK
上のForwarding以下に示されるURLをブラウザーの検索欄に打ち込むことでキャプチャーした映像にアクセスできます。
VNCサーバー
さてこのままではssh接続を切るとmotionは止まり、またngrokを介してのhttpアクセスも解除されストリーミングは終了してしまいます。そこでssh接続ではなくvnc接続でmotionの起動およびngrokのhttpアクセスのurl取得を行うことでそのvncヴューワを閉じてもmotionは起動され続けまたngrokを通じてのhttpアクセスもひき続き有効になります。vncサーバーとそのveiwerの設定は他のサイトの開設に任せます。私が使用したのはtightvncというツールです。