前回の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
0 件のコメント:
コメントを投稿