Overview
防犯ライトなどを Raspberry Pi などで動かしたいことがあると思います。
そのとき、繰り返し動作とかタイマーとかを、全てcronでやってもよいのですが、
よりflexibleに記述したくなることがあると思います。
また、上のような用途だと、自分がいるときには、動いてほしくないとかもあると思います。
このような用途を満たすためのscriptを書いてみました。
構成要素としては、
- Raspberry Pi 3 + Ubuntu Mate 16.04 LTS
- Ruby script
- スケジュール機構 + 制御script機構
- Bluetooth検出部
です。
https://github.com/hidenorly/bt_proximity_monitor
におきました。
使い方
[13:30-23:30 Mon Tue Wed Thu Fri Sat Sun]
#onStart
echo "blub On"
bleBulbDriver.rb allOn
#onEnd
bleBulbDriver.rb allOff
#onConnected
bleBulbDriver.rb allOff
#onDisconnected
bleBulbDriver.rb allOn
[2017-01-01 03:00-03:26]
#onStart
bleBulbDriver.rb allOn
#onEnd
bleBulbDriver.rb allOff
#onConnected
bleBulbDriver.rb allOff
#onDisconnected
bleBulbDriver.rb allOn
みたいにruleを書きます。
./bt_proximity_monitor.rb -t 70:EC:E4:XX:XX:XX のように監視デバイスを指定するか、devices.cfgなどにmac addressを記述しておきます。
iPhoneなどに対してRFCOMMを貼るようにしているので、起動したらacceptしてください。(Settings-Bluetoothで、BT自体を有効化したり、BTの接続要求が来たらacceptをしてください)
補足: githubのREADME.mdには書いてありますが、-d rfcomm
で一度rfcommでpairingした状態で、-d l2ping
モードにしてください。最近のスマホはpairingしたことのあるデバイスからしかl2pingの応答を返さないようになっているため。
あとは、#onXXXのあとに書いている行を実行してくれます。
なお、rssiを取得するときには、sudo起動する必要があります (hcitoolなどを使うので)
上のruleの例では、 前回 作った bleBulnDriver.rb を使いましたが、なんでも起動できるので、好きにしましょう。
では、happy hacking!