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


  • administrators

    @Naoto-Fujihiro さん

    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機能の整備中ですみませんが、よろしくお願いします。


 

Recent Projects

  • @nak435 かしこまりました。よろしくお願いします。

    read more
  • @Yuki-Sato さん、

    外部の3.3vを使うとはいえ普通にvccやgndを供給して問題なくうごくのであれば、弊社での動作確認後Flick Hatのライブラリとして公開できればと思っているのですがいかがでしょう。

    今週末に確認しますので、お待ちください。

    read more
  • @nak435 時間がかかってすいません、

    なんとか3.3vをgndにつないでFlick Largeを動かしたかったのですが、うまく動かすことができなかったです。
    3.3vをgndを繋がずに接続するというのはライブラリで推奨して伝えることは難しいと思ってます。

    Flick LargeでなくFlick Hatの方で、外部の3.3vを使うとはいえ普通にvccやgndを供給して問題なくうごくのであれば、弊社での動作確認後Flick Hatのライブラリとして公開できればと思っているのですがいかがでしょう。

    よろしくお願い致します。

    read more
  • @nak435 ありがとうございます。
    接続は3.3vのgnd以外同じでした。
    エラーはそのせいかもしれませんが、しかし電気的にはgndを繋がない場合3.3vとしてうまく供給できないはずなのでそこが不思議です。

    教えていただいたプログラムの部分を修正して試してみたいと思います。
    また少し時間がかかりそうなのですが、早めに試したいと思います。

    引き続きよろしくお願い致します。

    read more