最近我が家も宅配ボックスを設置した。
ポストを毎日確認するのに宅配ボックスは何故か確認しなくなったので
できれば通知用のボタンが欲しいなぁと思って作成・設置した次第です。
押していただけるか分かりませんが…
今回は Raspberry Pi を使用して IFTTT の webhooks にリクエストを送り、連携した LINE Notify て通知を送るようにしています。
今回は Bluetooth ボタンにダイソーの Bluetooth リモートシャッターを使用しています。専用のライブラリもあります。
別のボタンを利用する場合は別途設定が必要になると思います。
概略としては下記のような感じです。
必要な機材
-
Bluetooth シャッターボタン
-
Raspberry Pi Zero W
-
電源とか wifi とか
ダイソーのシャッターボタンは一時期ハックが流行していたようで専用のライブラリもあったりします。先人の偉大さをかみしめながらサクッと構築していきましょう。
なお、Raspberry Pi のセットアップや wifi 接続は今回は割愛しています。
Bluetooth 接続
-
ラズベリーパイ近くでシャッターボタンを ON にします。
-
Raspberry Pi にログインして、CLI で作業を行います。
bluetoothctl
\[bluetooth\]# scan on
で Bluetooth 端末一覧が表示されます。AB Shutter3 がシャッターボタンの名称です。
\[NEW\] Device XX:XX:XX:XX:XX:XX AB Shutter3
-
ペアリング実行
\[bluetooth\]# pair XX:XX:XX:XX:XX:XX
-
次回も自動でペアリング
\[bluetooth\]# trust XX:XX:XX:XX:XX:XX
接続は終わり。
ここでベアリングがうまくいっている場合はシャッターボタンを押下した時にのみシャッターボタンの青いランプが点灯するようになります。(接続先を検索中の場合シャッターボタンが定期的に点滅を繰り返す)
IFTTT 設定
IFTTT はリクエストを受けて他のアプリを起動やリクエストを実行できるサービスになっています。
今回は家族用の LINE グループに投稿する際に提携可能な webhook の IFTTT を選択しました。
登録後に
webhooks と検索すると services に利用可能なサービスが表示されます。
Webhooks を押下すると詳細画面に遷移します。
右上の Documentation を押下します。
画面の一番下に CLI から実行する用のコマンドが記載されているのでここをメモしておきます。
Webhooks の作成
メニューアイコンから create を押下。
IF を選択してイベント条件を設定します。
+ This の部分を押下してイベントが発生する条件を設定します。
webhooks を探します。
webhooks を選択すると、実行条件の詳細が表示されるので、リクエスト時に実行するのでそのまま選択します。
イベント名はそのままアドレスの一部になるので英語推奨です。
次に実行先を選びます。
今回は LINE なので LINE と入れます。
提携を行っていない場合は提携も行います。
通知先と通知メッセージを選択します。
リクエスト時に引数を受け取ることもできますが、今回は定型文にします。(そもそも通知なので。)
これで IFTTT の設定は完了です。
スクリプトを書く
管理者でログイン後、
$ sudo apt-get install ruby
$ sudo gem install bluebutton
bluebutton は keydown、keyup 、keylongup、leylongdown のイベント発生時に指定したスクリプト内の記述からコマンドを実行してくれます。
今回は Raspberry pi を起動した時に裏で走ってほしいので etc 内にスクリプトを作成します。
今回はキーアップ時に curl でリクエストをポストします。
$ sudo vi /etc/bluebutton
keyup=curl -X POST https://maker.ifttt.com/trigger/event名/with/key/ユーザーキー
keydown=echo DOWN
longup=echo LONG UP
longdown=echo LONG DOWN
試しに動かしてみます。
sudo bluebutton -d="Shutter3" -c /etc/bluebutton
ボタンを色々押してみる。
echo 及び curl がうまくいっているか確認します。
起動時に実行するようにしておく。
sudo vi /etc/rc.local
# 新規に追加する行
bluebutton -d="Shutter3" -c /etc/bluebutton &
再起動して、
$ sudo reboot
ボタンを色々押してみて動作していれば完了です。
あとはメモをぐるぐる巻きにして置いておきます。
余裕があれば押してくれる(と思います。)
感想
結構電波が弱い。扉を挟んでしまうので端末と 2 メートル程度が限界な気がする。雨の日は反応しにくいかも。
Linux(Raspbian)を触るのが久しぶりだったのでネットワーク周り、権限で地味に時間がかかった。普段はソフトウェアばかりなので新鮮だった。