Raspberry Pi3のPythonでSensorTagのデーターを読み取り、Ambientに送信してグラフ化しています。

プログラムは複数台のSensorTagを扱えるようにしてありましたが、2台目のSensorTagが入手できて、実際に動作確認できたので報告します。

複数台のSensorTagを扱うために、Pythonプログラムはマルチスレッドにしてあります。

一つのスレッド(Scanスレッド)が常にBluetooth Low Energyをスキャンします。新しいSensorTagを見つけると、そのSensorTagと通信するスレッド(通信スレッド)を起動します。

通信スレッドは一つのスレッドが一つのSensorTagを担当し、それぞれ5分毎にSensorTagからセンサーデーターを取得します。
AmbientのチャネルもSensorTag毎に別のチャネルを割り当てていて、通信スレッドは担当するSensorTagに対応するチャネルにデーターを送信します。

プログラムはGithubに公開しました。

sensortag-ambient

どのSensorTagがどのチャネルにデーターを送信するかを管理するためにRaspberry PiでSensorTag設定ポータルを立ち上げています。ブラウザーでRaspberry Piのアドレスにアクセスすると次の図のような画面が表示されます。

スキャンして発見したSensorTagのアドレス(MACアドレス)と信号強度が表示されます。ここにAmbientのチャネルIDとライトキーを入力します。

MACアドレスが実際のどの端末に対応しているか分からないので、端末の側面にある電源ボタンをクリックするとそれが画面上で「on」と表示されるようにしました。設定ボタンをクリックすると「電源ボタン」のonの表示が「-」に戻ります。

複数台のSensorTagを一度に接続した場合でも、電源ボタンをクリックすると設定ポータルの電源ボタンの表示が「on」になるので、実物を確認しながらAmbientのチャネルIDとライトキーを設定できます。