Overview
Bluetooth on Raspberry Pi3 with Ubuntu Mate 16.04 LTS で、ようやくRaspberry Pi3内蔵のBluetoothが動くようになったので、BLE deviceをhackしてみるために色々と遊んでみたのです。
なお、遊んだ結果をまとたscriptを以下に書いておきました。
Bluetoothの有効化
$ sudo rfkill unblock bluetooth
$ sudo hciconfig hci0 up
ほかは前の記事を見てください。
BLE devicesの列挙
$ sudo hcitool lescan
LE Scan ...
D0:5F:B8:XX:XX:XX SATECHILED-0
BLE deviceのserviceの列挙
$ sudo gatttool --device D0:5F:B8:XX:XX:XX --primary
BLEのcharacteristicsの列挙
$ sudo gatttool --device D0:5F:B8:XX:XX:XX --char-desc
ここから所望のUUIDのサービスのhandleを取得するには、
$ sudo gatttool --device D0:5F:B8:XX:XX:XX --char-desc | grep fff3
handle = 0x002b, uuid = 0000fff3-0000-1000-8000-00805f9b34fb
みたいにするとかが便利かもしれない。
例 : SATECHI LED Bulbの制御
色々と弄った結果。
bulb:On
# gatttool --device=D0:5F:B8:XX:XX:XX --char-write-req --handle=0x002b --value=0f0d0300ffffffc800c800c8000059ffff
bulb:off
# gatttool --device=D0:5F:B8:2F:AA:EC --char-write-req --handle=0x002b --value=0f0d0300ffffff0000c800c8000091ffff
で、面倒なので
$ ./bleBulbDriver.rb
Usage: listDevices|on|off|allOn|allOff
bleBulbDriver Copyright 2016 hidenorly
-b, --target= Set target device's mac address
-t, --type= Set device type (default:SATECHILED)
$ sudo ./bleBulbDriver.rb listdevices
D0:5F:B8:XX:XX:XX SATECHILED-0
$ sudo ./bleBulbDriver.rb allon
$ sudo ./bleBulbDriver.rb alloff
$ sudo ./bleBulbDriver.rb alltoggle
$ ./bleBulbDriver.rb on -b D0:5F:B8:XX:XX:XX
$ ./bleBulbDriver.rb off -b D0:5F:B8:XX:XX:XX
$ ./bleBulbDriver.rb toggle -b D0:5F:B8:XX:XX:XX
のようにできるようにしておきました。
これで、色々とできる!