obnizのフォーラムは新しいシステムに移行しております。
新しいフォーラムはこちらになりますPython SDKで、BLEを使いたいです。
-
Python SDKで、BLEを使いたいと考えております。
obnizを起動後、nRF Connectとペアリングし、ReadとWriteをすることはできています。目標としては、obnizで取得したセンサーデータをBLE経由で、スマホアプリに送信することです。
送信タイミングとしては、取得したセンサー値が更新された時ですので、Notifyを使おうとしております。Propertyを確認したところ、Read, Writeのみ表示されました。
どのようにNotifyを有効にすれば良いのかわからないので、ご教示いただけますと幸いです。
SDKとしては、こちらをForkして使用しております。
https://github.com/obniz/obniz-python-sdk私の作成しているコードです。
ble.py を実行しております。
https://github.com/NaotoFujihiro/obniz-python-sdk
-
obniz-python-sdkではまだBLE機能を整備中でして、不備が多々見られると思います。コードを拝見したところ、以下を修正することでNotifyを有効にできるようでした。
ble.py
async def onconnect(obniz): obniz.display.clear() obniz.display.print("Hello, World!") new_service = obniz.ble.service({ 'uuid': '555a0001-0aaa-467a-9538-01f0652c74e8' }) new_characteristic = obniz.ble.characteristic({ 'uuid': '555a0003-0aaa-467a-9538-01f0652c74e8', 'properties': ['write', 'read', 'notify'], # propertiesの設定を追加してください 'data': [0x00, 0x64], 'descriptors': [{ 'uuid': '2902', 'data': [0x00, 0x00], }] }) new_service.add_characteristic(new_characteristic) obniz.ble.peripheral.add_service(new_service)
また、
obniz/obniz/libs/embeds/ble/ble_characteristic.py
内のBleCharacteristic
クラスに次のメソッドを追加してください。def to_json(self): obj = super().to_json() if (len(self.properties) > 0): obj["properties"] = self.properties if (len(self.permissions) > 0): obj["permissions"] = self.permissions return obj
これにより、obnizに設定内容が正しく送信されます。
BLE機能の整備中ですみませんが、よろしくお願いします。