目次

はじめに

以前、Windows10からINKBIRD温度湿度計データをBLE通信で取得するではBLEのGATT通信を使い、Inkbirdの温度湿度計からリアルタイムデータを取得しました。
その後、Inkbirdの温度湿度計がBLEでアドバタイズしているデータから温度湿度データを取得することができましたので、その実装例を公開します。

使用した機器

Windows10からINKBIRD温度湿度計データをBLE通信で取得すると同じです。

InkbirdのBluetooth温度湿度計

  • INKBIRD の Bluetooth 温度湿度計(2 機種)
    • IBS-TH2 1 + 単 4 電池 2 本

      IBS-TH2

    • ITH-12S(Bluetooth 温度湿度計)2

      ITH-12S

PC

  • Blutooth が使用可能な PC
    事前に[Windows スタート]>[設定]>[デバイス]から Bluetooth を有効にしておきましょう。

    Windows10 Bluetoothの有効化

    なお、今回使用した PC は

    • ASUS UX310U NotebookPC
      CPU: Intel(R) Core(TM) i5-7200U CPU @ 2.50GHz 2.71 GHz
      OS: WIndows 10 Pro 22H2

    です。

スマホ

準備

Inkbird温度湿度計のアドバタイズデータを確認する

スマホにインストールしたnRf Connectアプリを使い、Inkbird温度湿度計がBLE通信でアドバタイズしているデータを確認します。

  1. アプリを立ち上げSCANNERタブでデバイスをスキャンします。そして、spsと表示されたデバイスをタップします。

    nRF Connectアプリでデバイスをスキャンする

  2. すると詳細が表示されるので、[RAW]をクリックします。

    Inkbirdデバイスspsを表示する

  3. Raw data欄に表示されたデータ0x0201060302F0FF04097370730AFF8208D71800E446E08がアドバタイズデータです。このデータの詳細がDetailsに表示されています。この中のLEN:10の行に表示されているTYPE:0xFF,VALUE:0x8208D71800E4465E08がmanufacturerデータです。

    ITH-12Sのアドバタイズデータ

Pythonスクリプト作成

bleakパッケージのAPI調査

Python Bleakパッケージを利用してmanufacturerデータを取得します。

  • BleakScanner.discover()の引数return_advをTrueにして呼びだすことで、アドバタイズデータを取得できます。
  • 今回使用しているbleakパッケージのstable版(v.0.19.5)のドキュメントを確認すると、discover(return_adv=Ture)時の戻り値は検出したBLEDeviceをキー、AdvertisementDataをバリューとする辞書型データです。
  • そして同ドキュメントのAdvertisementDataを調べるとmanufacturer_dataが[int,bytes]の辞書型データになるようです。

作成したPythonスクリプト

以上から、実際にスクリプトを作成し試した結果、下記のような実装をすることで温度・湿度のデータを取得することができました。

実行結果

(venv38) PS D:\projects\ble> python .\ble_adv_inkbird.py
49:22:08:15:10:2B
rssi:-57, temp:21.85, humid:55.45, now:2023-01-06 00:23:16.288976
-----------------
49:22:03:25:03:ED
rssi:-65, temp:21.59, humid:58.76, now:2023-01-06 00:23:16.288976
-----------------
(venv38) PS D:\projects\ble>

最後に

今回BLE通信のアドバタイズデータをスマホnRF Connectのように取得できれば、そのバイトデータを処理すればよいと思い調査しました。しかし、bleakパッケージでは見つけることができませんでした。そこで、イマイチですが今回のような形の実装になりました。
もしかしたら、Inkbirdのアドバタイズデータが標準に基づいていない部分があるのでしょうか? BLE通信についての知識と経験が浅いので、今後も精進しようと思います。


  1. 購入先 Amazon https://www.amazon.co.jp/gp/product/B08WWPSTRS ↩︎

  2. 購入先 Amazon https://www.amazon.co.jp/gp/product/B09PDMH3FQ ↩︎