tweet

python ,GATT characteristic通信編


前回のGAP profileベースの advertising通信で
bt4.x プロトコル拡張もほぼ限界に達してきたようですので。
別の方法を検討しました。
GATT profileを使って、characteristic value
をperipheral から読見込みテストを行いました。

[環境]
GATT client/Central : nanoPi (python)
GATT server/peripheral : esp32

*) esp32は、省電力面ではNGでしたが、
 GATTのサンプルコードが存在したので、勉強には良さそうでした。
 連続稼動の場合は、省エネ化できるデバイスに変えたほうが良いでしょう。


# thanks / 参考のサイトさま
GATT(Generic Attribute Profile)概要
http://yegang.hatenablog.com/entry/2014/08/09/195246



# Log -python/ Central
sRead=0000..
の行が、読み込んだ行です。










# Log -esp32 /peripheral
GATT_READ_EVT 、のイベント当りが、
characteristic 読み込み実行された応答部分です。







# code(beta)、解説など

# Central/ GATT client --python (nanoPi)
getCharacteristic.py (bluepy を使用してます。 )
* BDアドレス (public address) を指定し、コネクト
*  characteristic  -UUID を指定します。
mCHAR_UUID = 0xFF01
* properties は、読み込み権限のある場合は、読めました。
* 指定の characteristic  -UUID が存在する場合、
読み込み処理 ( .read()  )を実行すると、valueが取得できました。

https://gist.github.com/kuc-arc-f/b5cd0e6f8f6901922571654d6d33160a


# peripheral /GATT server -esp32
gatts_demo.c --ESP-IDF
*  別タスクで、センサ値等のデバイス値を、変数にセットしておきます。
xTaskCreate(&sensorTask, "sensorTask", 4096, NULL, 5, NULL);

*  characteristic -UUID は固定にしておき、読み込み側で指定します。
#define GATTS_CHAR_UUID_TEST_A      0xFF01
*  callback の ESP_GATTS_READ_EVT で、
送信値をセットし、
esp_ble_gatts_send_response() で送信


https://gist.github.com/kuc-arc-f/b108bdc2306ba77cf59f412612a47737

*) 前回の、BLE Server(IoT連携 )と異なり
GATT部分の通信テストで、peripheral - SCAN処理や
クラウド転送機能は実装していません。



# 関連のページ

Update, nanoPi BLE gateway server アドレス指定編(ble_gateway_sv2)
http://knaka0209.blogspot.jp/2017/08/nanoPi-4.html

nanoPi NEO で、BLE Gateway Server を設置する
http://knaka0209.blogspot.com/2017/07/nanoPi-2.html

# 関連のまとめ
BLE -IOT関連まとめ
http://knaka0209.blogspot.jp/2017/07/BLE-matome.html








コメント

FACEBOOK

人気の投稿