作業日記@HatenaBlog

各種の作業メモ

複数の WxBeacon2 と連携する

概要

  • 複数の WxBeacon2 を起動する
  • env2ambientBS.py は各機のデータを全て拾って一つの ambient チャネルへ登録するためデータが混乱する
  • 各機のユニークな Bluetooth Device Address で ambient のチャネルごとにデータを割り振る
  • env2ambientBS.py のスクリプトを以下のとおり改造する

WxBeacon2 のデバイスアドレス

LE スキャンをする。

$ sudo hcitool lescan
LE Scan ...
XX:XX:XX:XX:XX:XX (unknown)
YY:YY:YY:YY:YY:YY (unknown)
ZZ:ZZ:ZZ:ZZ:ZZ:ZZ (unknown)
AA:BB:CC:DD:EE:FF IM
QQ:QQ:QQ:QQ:QQ:QQ (unknown)
GG:HH:II:JJ:KK:LL IM
...

WxBeacon2 の Bluetooth Device Address を各機ごとにメモする。
ここでは AA:BB:CC:DD:EE:FF および GG:HH:II:JJ:KK:LL が該当する。

ソースコードを改造する

参考サイトにあった env2ambientBS.py のソースコードを改造する。(GitHub
diff は次のとおり。

17,18c17,18
< channelID = 100
< writeKey = 'writeKey'
---
> channelID = xxxxx
> writeKey = 'xxxxxxxxxxxxxxxx'
20a21,23
> BDAddr = 'XX:XX:XX:XX:XX:XX'
> BDAddr = BDAddr.lower()
>
52c55
<     if companyID == 'ffff':
---
>     if devs[target]['companyID'] == 'ffff':
77c80,81
<                             send2ambient(value[6:])
---
>                             if dev.addr == BDAddr:
>                                 send2ambient(value[6:])

上記でメモしたデバイスアドレスは全て大文字で記入する。.lower()で自動的に変換させる。
改造後は WxBeacon2とラズパイを連携させる - 作業日記@HatenaBlog と設定は同じ。
WxBeacon2 の数だけスクリプトを用意して実行する。