Overview
以下のおうちハックをするにあたって、俺scriptのservice化をしたので、その説明。
- Bluetooth LE (BLE) SATECHI LED電球 を Raspberry Pi3 から 制御
- iPhoneなど Bluetooth が 近接した時、離れた時に、何かする
- Raspberry Pi3 on Ubuntu Mate 16.04 で Amazon Dash を ただのIoTボタンとして使う
を組み合わせて、Bluetooth LED を 防犯ライトにし、定期的な起動や、スマホが近づいたら防犯ライトを自動的にオフにしたり(自分がいるのに点灯とかするのはうざい。。。)、Amazon Dashボタンで、手動でOn/Offできるようにします。(Dashボタンを使うのは、物理ボタンがないと、スマホからアプリでライトをon/offするとか面倒だからです。やはり目の前にあるものは近くの物理的なもので操作したい。。。)
上を実現するために、 Bluetooth LEDのOn/Offのscript に、toggle modeを用意し、Dashボタンが押されたとき に、toggleをできるようにし、 スマホ近接判定とスケジュール起動 しました。
構成物 を 定期的に起動させる
部品はこれまで、上のように作ってきたので、これを組み合わせるわけですが、このままだと、sshでhupでsudo実行する、rebootしたら、再度行うとか、面倒です。
というわけで、Raspberry Pi3 (私は Ubuntu Mate 16.04LTS を動かしています) でserviceとして定期的に動作させたくなってきます。
Ubuntuでは、systemdを使って、サービスを制御しています。
$ sudo systemctl status xxxx
みたいにして、statusを管理したり、enable/disable, start/stop/restartなどをできるようにしてみたいと思います。
スマホなどBTデバイスの近接判定とスケジューラー
https://github.com/hidenorly/bt_proximity_monitor
に、インストーラーを用意したので、
$ sudo install.sh
でできるようにしてあります (実際に何をやっているかは次のnodeのサービス化のところで説明します)
[16:30-23:30 Mon Tue Wed Thu Fri Sat Sun]
#onStart
/root/bin/bleBulbDriver.rb allOn
#onEnd
/root/bin/bleBulbDriver.rb allOff
#onConnected
/root/bin/bleBulbDriver.rb allOff
#onDisconnected
/root/bin/bleBulbDriver.rb allOn
Amazon Dash Button Launcher
.serviceファイルの用意
/etc/systemd/system
に、以下のようなdashbtnlauncher.service
を用意します。
[Unit]
Description = Ble Button Controller with Dash Button
[Service]
ExecStart = /usr/local/bin/node /opt/DashBtnLauncher/DashBtnLauncher.js -b XX:XX:XX:XX:XX:XX -e /root/bin/bleBulbDriver.rb alltoggle
Restart = always
Type = simple
[Install]
WantedBy = multi-user.target
次に、systemdに認識させるために、
$ sudo systemctl enable dashbtnlauncher.service
をします。
$ sudo systemctl list-unit-files --type=service
とかでdashbtnlauncherが表示されればOkです。
実行は、
$ sudo systemctl start dashbtnlauncher.service
です。以後、システムを再起動しても、自動的に起動しているはずです。
動作しているかどうかは
$ sudo systemctl status dashbtnlauncher.service
のようにして、確かめられます。
このようにして、bleBulbDriver.rbにtoggle modeを用意するだけで、最初に書いたように、定期的にランプは付きますが、スマホが近接する状態では光らず、また、dash buttonを押すことで手動でon/offもできるようになりましたとさ。
以上、おうちはっくでした。