ちぎっては投げるブログ

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

ハムスター監視システム 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

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

うちに来て2週間強のキンクマハムスターさんだが、夜中にどれぐらい動いているのか気になる。 また、いつか旅行に行くときにちゃんと活動しているかを観察できるようにしておきたい。

というわけで、夜に暗い中で動いているハムスターを監視できるシステムを作っておきたい。

f:id:mczh:20161124204401j:plain デュナマルティ(ケージ)の掃除中に別の砂場ケージに待避してもらったキンクマハムスターの図

やりたいこと

  • 外部から非公開のライブストリーミングで見られること
  • 動きがあったら録画できること
  • 録画ファイルはオンラインストレージにアップロードできること
  • 暗所での撮影ができること
  • 電気代が多くかからないこと

一度作ったことのある、RaspberryPiと赤外線カメラとmotionアプリを使った方法で実現するのが良さそうだ。 あるいは、ちゃんとOpenCVで作るかも考えたが、そっち方面はもう勉強しても使うことがあまりなさそうなので、実用性重視でmotionでさっと作ってしまおう。

だいたいこんな感じにしよう

  • RaspberryPiに安い赤外線カメラをつなげる。
  • 赤外線カメラをハムスターケージの上に設置する。
  • motionアプリでstreaming配信&録画をする。
  • motionアプリから呼ぶスクリプトで録画ファイルをDropboxにアップロードする。

懸念点

赤外線はハムスターに有害ではないか?

ハムスターは赤外線を見ることが出来ないらしいので、少なくとも眩しいと感じることはない。問題ないはず。

外部に公開してセキュリティは大丈夫か?

まずはDropboxへのアップロードのみとする。一通りのセキュリティ対策を調査後にストリーミングを行う。

運用として、ほかのデータは置かないRaspberryPiにする(NASにしているRaspberryPiとは別にする)

常にストリーミングをするのではなく、自分が家にいないときだけストリーミングするようにして、ストリーミングに自分の映像が映らないようにする?

買うものリスト

  • 赤外線USBカメラ
  • RaspberryPi3

ひとまず、現在手元にあるものを流用し、現実的に遣い続けたいものとなった場合は追加購入する。

いつやるの?

次の土日かな……。実は勤労感謝の日にやろうとしたが、ポケモンで忙しかったので進んでいない。 環境だけでも作ろうかと思い無線LANの設定をしたら失敗したらしく、SSH出来なくなってしまったのでUSBキーボードとHDMIケーブルをひっぱりだしてくるのがめんどくさすぎて放置してしまった。

denpa-shinbun.com