複数の 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 の数だけスクリプトを用意して実行する。