初めての留守番も安心。ダイソーの300円商品+LINE BOTで帰宅を確認

Bluetoothリモートシャッター

こんにちは。
無事、結婚10年目に入りました、OISエンジニアのただっしーです。

だんだん暑い季節になってきましたね。
とはいえ私は平日はほぼ一日中屋内にいるのであまり季節を感じることはありません。

さて、息子が通う小学校でついこの間の日曜日に運動会がありました。
暑くなる予報だったので、前日にダイソーでUSB扇風機を買いました。
それがこれです。
USB扇風機
300円で単四電池とUSB給電どちらでも対応しています。
USB扇風機
結構パワフルです。
髪がなびくくらいの勢いです。私はなびきませんが。
安心設計
羽はスポンジ素材なので当たっても痛くない、安心設計です。
———————
さて、ダイソー扇風機の話は置いておくとして、
扇風機の隣にこんなものが売っていました。

『Bluetoothシャッター』です。これも300円です。
Bluetoothリモートシャッター
カメラアプリ用のシャッターですが、
何か使えるかなーと思い、とりあえず4つ買いました。
Bluetoothリモートシャッター
さて、買ったはいいものの、
何に使おうか考えた結果に、
前回、息子がMacにログインしたらLINEにメッセージを送る仕組みを作ったので、それをすこし改良してみようかと思います。

今回はBleutoothシャッターを押したらカメラで撮影してLINEで画像が送られる仕組みを作ります。

ラズパイ&ラズパイカメラを使い、以下のような構成にしました。
構成図
処理のフローとしては以下のとおりです。

1.子供が帰宅してスイッチを押す
2.ラズパイがBluetoothを受信し、カメラを撮影
3.画像をWebサーバにアップロード
4.LINE BOTのPUSH APIで画像メッセージを送信

———————
まず、ラズパイにBlueZをインストールします。
BlueZというのは
LinuxのBluetoothプロトコルスタック(ソフトウェア群)です。

BlueZのインストール

pi@raspberry:$ sudo apt-get install bluetooth bluez libbluetooth-dev libudev-dev

スキャンできるかどうか試してみます。

pi@raspberry:$ sudo hcitool lescan
LE Scan ...
FF:FF:3F:EE:F5:B2 AB Shutter3

できました!

AB Shutter3というのはこの製品のモデル名のようです。
ペアリングして使うこともできますが、
今回は電波を受信できればよいのでMACアドレスで判定しようと思います。

さてここからはシェルスクリプトで

・Bluetooth検出
・カメラ撮影
・サーバーアップロード
・LINEメッセージ送信

を書きます。

・beacon.sh
1秒間Bluetoothをスキャンをします。スキャン後にkillします。

#!/bin/bash
hcitool lescan & sleep 1 && pkill --signal SIGINT hcitool

 ・camera.sh
ラズパイカメラで撮影し、curlコマンドで自分が持っているWebサーバへアップロードします。
Webサーバへ画像をアップロードするのは、PushAPIでは画像を直接送ることができず、画像のURLを渡すことになるためです。

#!/bin/bash
DIR=/home/pi/hs/data/$(date +%Y%m%d)
NOW=$(date +%Y%m%d%H%M%S)
if [ ! -e ${DIR} ]; then
  mkdir ${DIR}
fi
raspistill -w 1280 -h 960 -n -o ${DIR}/$1 -t 2 -br 50
curl -F file=@${DIR}/$1 https://{POSTするWebサーバURL}/

・sendline
LINE BOTのPUSH APIを呼び出します。前回はテキストだけでしたが、今回はtypeにimageを指定し、アップロードした画像のURLを指定してやります。

#!/bin/bash
/usr/bin/curl -X POST -H 'Content-Type:application/json'  -H 'Authorization: Bearer (アクセストークン) ' -d '{"to":"(グループID)","messages":[{"type":"text", "text":"Hello, Hello, Hello"},{"type":"image","originalContentUrl":"https://(Webサーバ)/'$1'", "previewImageUrl":"https://(Webサーバ)/'$1'"}    ]}' https://api.line.me/v2/bot/message/push

・hs.sh
3つのシェルを組み合わせます。
hsはhome securityの略です。

#!/bin/bash
DIR='/home/pi/hs'
BLEMAC='FF:FF:3F:EE:F5:B2'
NOW=$(date +%Y%m%d%H%M%S)
while true
do
  BEACON=`/bin/bash ${DIR}/beacon.sh | grep ${BLEMAC} | wc -l`
  if [ ${BEACON} -gt 0 ];then
    /bin/bash ${DIR}/camera.sh ${NOW}.jpg
    /bin/bash ${DIR}/sendline.sh ${NOW}.jpg
    sleep 90
  else
    sleep 5
  fi
done!/bin/bash

最後に起動時にシェルが呼び出されるようにcrontabで設定します。
sudo crontab -e

@reboot /home/pi/hs/hs.sh

これで準備完了です。さっそく試してみます。
まずはラズパイを設置。
ラズパイ
カメラは竹ひごで支えています。
見た目は不細工ですが、味があると言えるのではないでしょうか。

この状態でBluetoothシャッターを押すと、
LINE画像
画像が送られてきました。
これで子供の帰宅確認が画像でできます。
このまま常設を、と思いましたが、
スペックが高いRaspberry Pi Model Bを使うのはもったいないので、安価なRaspberry Pi Zero Wを購入しました。

より多くの人にラズパイを使ってもらうことがコンセプトのため、
1人1つまでしか購入できませんが、1,296円と安いです。
ラズパイで何かやってみたいなーと考えている方には、Raspberry Pi Zero Wをおすすめします。
おしまい。

【前回参考】初めての留守番も安心。LINE BOTで帰宅を確認

ホームページ http://www.ois-yokohama.co.jp

facebook   https://www.facebook.com/orientalinformationservice/

\ 最新情報をチェック /

2 thoughts on “初めての留守番も安心。ダイソーの300円商品+LINE BOTで帰宅を確認

この投稿はコメントできません。