2015/05/02

汝の名はBlueZ - (8) : pythonで試す

数字ばかりだと何をやってるかわからないので、サブタイトルを付けました。
今回は、SensorTagを操作するpythonスクリプトをもらってきて、Raspberry Piで動かしてみます。

スクリプトは、こちら。
msaunby/ble-sensor-pi

pythonはわからないので、書いてある通りにやる。
SensorTagのアドレスは34:B1:F7:D4:FA:33とわかっているので、スキャンは省略する。

$ sudo apt-get install python-pip
$ sudo pip install pexpect
$ git clone https://github.com/msaunby/ble-sensor-pi.git
$ sudo hciconfig hci0 up
$ cd ble-sensor-pi/sensortag
$ python sensortag.py 34:B1:F7:D4:FA:33
[re]starting..
Preparing to connect. You might need to press the side button...
(ここでSensorTagの横ボタンを押してAdvertising開始)
char-write-cmd 0x29 01
char-write-cmd 0x26 0100
char-write-cmd 0x31 01
char-write-cmd 0x2e 0100
char-write-cmd 0x3c 01
char-write-cmd 0x39 0100
char-write-cmd 0x44 01
char-write-cmd 0x41 0100
char-write-cmd 0x5b 07
char-write-cmd 0x58 0100
char-write-cmd 0x4f 02
[re]starting..
Preparing to connect. You might need to press the side button...

何やってるのかわからないが、何か動いていることはわかった。
Ctrl+CでもDでも終わらなかったので、Ctrl+Zしてpythonとgatttoolのプロセスを手動でkillしてやらんといかんかった。


さて、ログだけ見るとCharacteristicへの書き込みを行っているようだ。
センサーを有効にして、Notificationも有効にしているようだ。
が、その通知を待ってか待たずか、また再接続しに行っている。
でもSensorTagは接続が切れたと思ってない。
どこか、意思の疎通が取れていないようだ。

スクリプトは、gatttoolのコンソール出力で結果を判断しているようだ。
「前は[CON]だったけど、今はないからスルー」みたいなコメントもある。

BLEモニタで見ても、ちゃんとCONNECTして、Characteristicへの書き込みもソース通りに行っているし、SensorTagもNotifyを返している。
なのにー、なーぜー・・・・。

よくわからんが、barometerのコンストラクタでで例外が発生してNotification待ちに達しないようだ。
その原因は、char_read_hnd()がよろしくないためのようで、とりあえずコメントアウトすると、IR Temperature Serviceの値が取得できるようになった。

 

まあ、このpythonスクリプトはサンプルですよ、と書かれているし、メンテナンスとかも期待しちゃいかんとあるので、こういう感じでやればいいんだ、と感じ取るのがよさそうだ。
だったらpythonでやる必要は無いんだけど、これをC/C++でやるのは、めんどくさそうだ。
このサンプルの書き換えくらいであれば、そんなにpythonを勉強せずともやれるんじゃないかなぁ、と自分に期待している。

0 件のコメント:

コメントを投稿

コメントありがとうございます。
スパムかもしれない、と私が思ったら、
申し訳ないですが勝手に削除することもあります。