2台以上のRaspberryを操作する(その2)


子機側(サーバ側)の動きは以下の通りです。



BUSBライトを点灯します。
C勝手口の写真を取ります。
DUSBライトを消灯します。

USBライトのON/OFFはこのページで紹介しているUSB- SWボックスを使いました。
子機側に以下のスクリプト(koki.sh)を作成します。
GPIO14のON/OFFでUSBライトがON/OFFします。
ffmpeg(あるいはavconv)など、他のキャプチャーソフトを使う場合は、適当に変更してください。
#!/bin/bash
if [ $# -ne 2 ]; then
    exit
fi
sudo sh -c "echo 14 > /sys/class/gpio/export"
sudo sh -c "echo out > /sys/class/gpio/gpio14/direction"
sudo sh -c "echo 1 > /sys/class/gpio/gpio14/value"
fswebcam -d /dev/video0 -r 640x480 -D 5 $1 2> $2
sudo sh -c "echo 0 > /sys/class/gpio/gpio14/value"
sudo sh -c "echo 14 > /sys/class/gpio/unexport"




これが子機です。
今回はWifiドングルを使いたかったのでRaspberry Pi B+を使いました。
さすがに電源が安定しているので、WifiドングルとWEBカメラはUSB-HUBを経由せずに、本体直結です。
ボタンと赤外線受光モジュールを使用して、Shutdown、Reboot、IPアドレスの表示など、一通りのことができます。

USBカメラは光学10倍ズームレンズ付きのこのカメラを使いました。


次に親機(クライアント)から子機(サーバ)にパスワードなしでログインする設定を行います。
以下の操作を親機側で行います。
$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/pi/.ssh/id_rsa):何 も入力せずにEnter
/home/pi/.ssh/id_rsa already exists.
Overwrite (y/n)? y (2回目以降は聞いてくる)
Enter passphrase (empty for no passphrase):何も入力せずにEnter
Enter same passphrase again:何も入力せずにEnter
Your identification has been saved in /home/pi/.ssh/id_rsa.
Your public key has been saved in /home/pi/.ssh/id_rsa.pub.
The key fingerprint is:

The key's randomart image is:


$ ssh-copy-id -i ~/.ssh/id_rsa.pub pi@子機のIPアドレス
pi@192.168.111.xxx's password:子機のログインパスワード

最後にその2で作成したスクリ プ ト(biff.sh)を以下の様に変更します。
赤字部分が今回変更した部分です。
#!/bin/bash
#sudo sh -c "echo 14 > /sys/class/gpio/export"
#sudo sh -c "echo out > /sys/class/gpio/gpio14/direction"
#sudo sh -c "echo 15 > /sys/class/gpio/export"
#sudo sh -c "echo out > /sys/class/gpio/gpio15/direction"

/home/pi/biff/biff /home/pi/biff/config.ini
ret=$?
if [ $ret -eq 1 ]; then
  temp=`cat /sys/class/thermal/thermal_zone0/temp`
  temp1=`echo ${temp} | cut -b 1-2`
  temp2=`echo ${temp} | cut -b 3-5`
  echo "現在のCPU温度は${temp1}.${temp2}℃です" > /home/pi/mutt.txt
  mutt -s お知らせ 送信先のメールアドレス  < /home/pi/mutt.txt
fi
if [ $ret -eq 2 ]; then
  temp=`sudo /home/pi/BMP085-2/readBMP085` → この部分はお使いのセンサーに合せて変更してください。
  echo "${temp}" > /home/pi/mutt.txt
  mutt -s お知らせ
送信先のメールア ドレス  < /home/pi/mutt.txt
fi
if [ $ret -eq 3 ]; then
  ssh pi@子機のIPアドレス /home/pi/koki.sh /home/pi/test.jpg /home/pi/fswebcam.log
  scp -q pi@
子機のIPアドレス:/home/pi/test.jpg /home/pi/test.jpg
  scp -q pi@
子機のIPアドレス:/home/pi/fswebcam.log /home/pi/fswebcam.log 
  mutt -s お知らせ 送信先のメールアドレス -a /home/pi/test.jpg < /home/pi/fswebcam.log
fi
#sudo sh -c "echo 14 > /sys/class/gpio/unexport"
#sudo sh -c "echo 15 > /sys/class/gpio/unexport"

スマホなどから「Raspberry君」宛てに、「室内写真」 のタイトルのメールを送信してください。
暫くして、上記のスクリプト(biff.sh)を実行すると、子機側のWEBカメラでキャプチャーした画像ファイルが携帯、スマホに送信されま す。

WEBカメラで、玄関ドアを内側から撮影した写真が以下です。
鍵が掛かっていない状態がそこそこ判別できます。


続く...