BLE
IoT
BluetoothLE

Omron 環境センサ(2jcie-bl01)の設定をBroadcasterに変更してアドバタイズパケットから情報を取得してみるテストまで

背景

タイトル通りです。あまり細かいことは書きません。単純に温度・湿度・気圧などの環境値をBroadcastしてくれるBLEビーコンが必要だったので、探してみたらこれ見つかりWeather news のOEM品(WxBeacon2)を購入しました。しかし初期設定では(1)デバイスにConnectして(2) Latest data (Characteristics UUID: 0x3001)を見にいく、ことをしないとデータが取れません。つまり複数台のビーコンが見つかる環境で動かそうとすると全てのビーコンに一回接続してデータを取りに行かなくててはいけなく辛い。とはいえその設定変更機能はOMRONさんのオフィシャルアプリにはないので面倒くさいなーとオフィシャルドキュメントを読み解きながらAdv settingsをなんとかいじって、値の取得までできるようにしました。

必要なもの

設定変更してみよう

  • Env(EnvSensor-BL01)というBLEデバイスを探してConnect
  • CUSTOM SERVICEの5文字目から8文字目が3040のものを開く(2.4. Parameter Service に該当します)
  • CUSTOM CHERACTERISTICの5文字目から8文字目が3042のものを探す(2.4.2 ADV setting に該当します)
    Screenshot_20171211-110301.png

  • W(Write)をタップしADV設定をByteArrayで書き込む。今回はGeneral Broadcaster 2の0x04に設定したかったので以下の文字列を書き込みました。
    0808A000000A0032 04 00
    Screenshot_20171211-110309.png

  • R(Read)をタップし設定が書き込めているか確認

  • 念のため接続を切り、再接続します。機器の名前がEP(EP-BL01)に変わります

  • アドバタイズパケットを見てみる。OSによって微妙にアドバタイズパケットの表示の範囲が異なるので注意してください。アドバタイズパケットの中身は 3.5. (E) Sensor ADV 2 (ADV_IND) が仕様になります。

    • Androidの場合 19,20文字目がTemp High, 17,18文字目がTemp Lowです。 Screenshot_20171211-112144.png
    • iOSの場合 9,10文字目がTemp High,7,8文字目がTemp Lowです。 IMG_4636.JPG

拾っている桁数が異なるのはよくわかりませんが、いずれの場合もこの場合f40b(Little endianなのでバイトをひっくり返す必要があるので注意!)を10進に戻した3060→30.6℃が測定値になります。

さああとはこれをCordovaで拾ってどれかmBaaSに投げるだけ。 Enjoy!

ちなみに同じような感じで測定パラメターをいじることも可能です。自分は据え置きではなくカバンに付けっ放しな用途で使う予定ですが、どうも急激なデータ変化をしないように初期設定されているっぽかったので多少調整しました。