Edited at

Bluetooth LE (BLE) SATECHI LED電球 を Raspberry Pi3 から 制御

More than 1 year has passed since last update.


Overview

Bluetooth on Raspberry Pi3 with Ubuntu Mate 16.04 LTS で、ようやくRaspberry Pi3内蔵のBluetoothが動くようになったので、BLE deviceをhackしてみるために色々と遊んでみたのです。

なお、遊んだ結果をまとたscriptを以下に書いておきました。

https://github.com/hidenorly/bleBulbDriver


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


で、面倒なので

https://github.com/hidenorly/bleBulbDriver

$ ./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

のようにできるようにしておきました。

これで、色々とできる!