LoginSignup
4
10

More than 5 years have passed since last update.

iPhoneなど Bluetooth が 近接した時、離れた時に、何かする

Last updated at Posted at 2017-01-01

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
におきました。

使い方

rules.cfg
[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!

4
10
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
10