前回
ということで、今回から設定していきます。
beepcapです。
前回で必要なソフトのインストールは大体終わったので、設定を行います。
Raspberry Pi 設定
Raspberry Pi2ではmotionの設定を以下のように変更します。- 画像の出力は動体検出ではなく定期的に
- 画像のファイル名は固定(取得のたびに上書き)
- 画像の置き場はramfs
を開く必要があります。
raspbianではデフォルトでnanoが採用されているので、
sudo nano /etc/motion/motion.confとします。
とりあえず僕は以下のように変更しました。
<<後日設定ファイルをはりつける>>
## デーモンモードを切る
daemon on
↓
daemon off
## 常にキャプチャを取得する
emulate_motion off
↓
emulate_motion on
## 動画の出力を停止する
ffmpeg_output_movies on
↓
ffmpeg_output_movies off
## ramfsにファイルを出力する
target_dir /var/lib/motion
↓
target_dir /dev/shm
## 出力ファイル名を固定する
picrure_filename %v-%Y%m%d%H%M%S-%q
↓
picure_filename output
ここで、動作確認をしてみます。
USBカメラをRaspberry Pi2に接続し
sudo motion
を実行し、出力された/dev/shm/output.jpgを確認して下さい。
画面がキャプチャされていれば成功です。
さて、サーバにuploadするための仕組みも作りましょう。
以下のようにしてスクリプトを書きます。
nano upload.sh以下ファイル内
#!/bin/bash秘密鍵は事前に作っておく必要があります。
while :
do
scp -i "azureサーバの秘密鍵" /dev/shm/output.jpg azureuser@******.test-serv.cloudapp.net:/home/azureuser/output.jpg
sleep 1
done
秘密鍵の作成手順は、あとで例として載せますが、同じ手順である必要はありません。
上のスクリプトは1秒に一回、画像ファイルを/home/azureuser/output.jpgに上書きします。
あとはこれらを起動時にじっこうするよう、Raspberry Pi2に登録します。
sudo nano /etc/rc.localこのファイルのexit 0 の前に以下の2行を追加します。
motion&
/bin/bash /home/pi/upload.sh&
これで、Raspberry Pi2は起動後からカメラだ撮った内容をサーバにuploadし続ける機器になりました。
サーバ側の設定
さて、Azure側では受け取った画像を公開しなければなりません。今回は気取って、canvasを使いました。
web 1.0な人はimgタグをつかってreloadすればおしまいです。
nano index.htmlここで新規に作成して
<html> <script> onload = function() { draw(); setInterval("draw()", 1000); }; function draw() { var canvas = document.getElementById('c1'); if ( ! canvas || ! canvas.getContext ) { return false; } var ctx = canvas.getContext('2d'); var img = new Image(); img.src = "output.jpg?" + new Date().getTime(); img.onload = function() { ctx.drawImage(img, 0, 0, 640, 480); } } </script> <canvas id="c1" width="640" height="480"></canvas> </html>
こんな感じのスクリプトを仕込みます。
上のスクリプトが何をやっているのかは見ていただければわかりますが、
最大限手抜きをしているので資源がもったいないとかはご容赦下さい。
さて、index.htmlがAzureの /home/azureuserに出来たかとおもうので、
webサーバを立ち上げます。
~/thttpd-2.27/thttpd -d .
終わり!!!(※1)
※1 Azureの場合はポートを開ける動作として、エンドポイントの設定でHTTPを開いて下さい。
あとは、Raspberry Pi2を起動して、サーバのwebページにアクセスすれば、
バッチリカメラ画像が更新されているはずです。
さいごに
どうだったでしょうか?半日で出来たでしょうか?
普段、ちょっとほしいなと思いつつも、中々ハードルが高そうで出来ないこと。
それを実現するのがIoTと呼ばれる、簡易組み込みの世界だと思います。
こうやってどんどん、楽に、色々作っていけたら楽しいですよね!
ではでは。
beepcapでした。
おまけ
サーバで公開鍵認証を行う方法ssh-keygen -t rsaあとは、id_rsaをRaspberry Pi2側に転送すればok
cd ~/.ssh
cat id_ras.pub >> authorized_keys
使いまわさないように注意。
0 件のコメント:
コメントを投稿