ちぎっては投げるブログ

Programming, Android, RaspberryPi, Digital Devices, Kinkuma Hamster...

RaspberryPiでハムスター監視システムを作ろう 完成編

denpa-shinbun.com

構成

f:id:mczh:20170103192200p:plain

なるべくインスタントな作りにしようとしたため、Dropboxを使う。

機材は、 赤外線LED 1,280円と、LED用電源ケーブル 990円と、

赤外線WEBカメラ 1,398円と、

元から持っていたRaspberryPi(5,780円)である。

元から持っていたRaspberry Piを除けば、4600円ぐらいで監視システムが構成できた。

Raspberry Piを加えれば、おおよそ10000円ぐらい。 RaspberryPiは他にも汎用的に使えることが多々あるので便利である。たとえば温度や湿度の管理もやろうとすれば同じRaspberryPiで構築できる。

motion

ストリーミングと動画ファイルの作成にはmotionを使う。 Raspberry Piにmotionをyumでインストールし、daemonの有効化と、ストリーミング設定と、動きがあったときに動画ファイルを保存する設定を有効にする。 設定ファイルは、 /etc/motion/motion.conf にある。

Dropboxへのアップロード

GitHub - andreafabrizi/Dropbox-Uploader: Dropbox Uploader is a BASH script which can be used to upload, download, list or delete files from Dropbox, an online file sharing, synchronization and backup service.

のスクリプトをcloneしてくる。

Dropboxのアプリケーション設定をブラウザであらかじめしておき、トークンやらなにやらを取得しておく。

Raspberry PiでDropboxにファイルをアップロードしてみた: Raspberry Piでやってみたのアクティベーションを参照する。

セットアップの注意点としては、motionユーザで設定する必要がある点である。 sudo -u motion ./dropbox_uploader.sh で、motionユーザのセットアップをしておく。

motionからアップロードする

アップロード用のスクリプトを作る

#!/bin/sh

FN=$1
AVI=${FN%.*}".avi"
TARGET=`date "+%Y%m%d-%H%M%S"`.avi
/home/pi/Dropbox-Uploader/dropbox_uploader.sh upload $AVI $TARGET
rm $AVI

このファイルのフルパスを、motion.confのon_movie_endに指定する。

まとめ

以上で、リアルタイム監視と、ハムスターに動きがあった場合にDropboxにアップロードする仕組みが完成した。 夜中の何時に起きて何時に寝ているのか、回し車はちゃんと回しているか、など健康チェックが出来るので非常に助かっている。

時間が出来たら、実際の動画ファイルをこの記事に載せておこう。

これは動画ではなく、携帯で撮ったどアップな写真 f:id:mczh:20170103193455j:plain

motionのstreamingが見られなくなっていたら自動で再起動させる方法

RaspberryPiでハムスター監視カメラを常駐させているが、たまにwebページが見られなくなっている。 当初はpsコマンドで監視すれば良いと思ったのだがうまくいかなかったので、代替案としてcurlを使う。

cronで定期的にcurlを実行してwebページへアクセスし、返り値がおかしかったら再起動させる。

以下のようなコードを用意して、

# healthchecker.shとして保存する

#! /bin/sh
curl localhost:8081
RET=$?
if [ $RET -ne 0 ] ; then
    sudo shutdown -r now
fi
sudo crontab -e

# 以下を追加する
*/10 * * * * /home/pi/Dropbox-Uploader/healthchecker.sh

これで10分おきに生存確認されて、死んでいたら再起動がかかる。

以上、簡単だがTILとして投稿

ハムスター監視システム RaspberryPiのトラブル対処編

denpa-shinbun.com

監視システムはとりあえず作ったのだけど、いろいろトラブって疲れたのでまとめるのは後日にする……

f:id:mczh:20161127212622j:plain

体重測定の図。グラフを表示するサイトも作りたい。

RaspberryPiのトラブルメモ

トラブルはメモしておくと後日役立つので、簡単に書いておく。

NASにしていたRaspberryPiの外付けUSB HDDを外すと起動しなくなった

以前にSpinDownするように書いたscriptをinit.rc(だっけ?)に記載していたのだが、エラー処理が雑だったため先に進まなくなっていた。

当初はブート画面を見ていると、mntやsambaが死んでいたのでそちらを疑っていたが、そちらはタイムアウトに時間がかかっていただけで、処理は進んでいた。

ちなみに、マウント処理は/etc/fstabに書いていた。OSが起動しないとマウントしないように編集するのもできないので、microsdを取り外して別のLinuxマシンでマウントして編集する必要がある。今回は仮想マシンVMWareで編集した。 マウントは、dmesgで場所(/dev/sdd2など)を確認して、mountコマンドでマウントし、umountコマンドでアンマウントする。unmountじゃなくてumount。

RaspberryPi3のWiFiが繋がらない

3から標準搭載になった無線LANだが、古いバージョンを使っていると、無線LANのチャンネル11(?)までしか対応していないらしい。バージョンをあげると13chまで使える。ちなみに5GHz帯は未対応。また、raspi-configでWiFiの設定をアメリカなどにしていると、電波法か何かの関係で使えないチャンネルがあるので、ちゃんと日本設定にしておく。

固定IPにならない

新しいOSバージョンでは、固定IPの設定を書く場所が/etc/network/interfacesではなくなった。/etc/dhcpcd.confに記載する。とても迷惑な話である。

なんだかわからずにOSをいれなおしたりして散々だった。

次もはまりそうなので、設定ファイルや設定手順はだいたいscript化してGitで管理していたものに色々追加しておいた。

denpa-shinbun.com