WxBeacon2で温度・湿度・気圧・照度・騒音・紫外線・不快指数・熱中症危険度の8つをセンシングしてグラフ表示

前回まででラズパイを母艦にしてセンシングしたデータをデータベース(InfluxDB)に保存してGrafanaでグラフ表示することができたので、今後は少しずつセンシングデータを増やしていく作業です。

今のところセンサーで取得できているデータは温度・湿度・気圧といった基本的なことと、PM2.5や植物栽培の水温・PH、それとソーラーパネルの発電量などと九州電力のスマートメーターを使った電気使用量のデータを取得できましたので順次記事にしていきますね。今後はセンシングしたデータを元に植物にLEDライト照射や水やり・水循環などの操作を自動で実行していきたい。(自動でできるようにならないとすぐ枯らすので・・・)

今回は手始めにサンプルソースがあって取得が簡単なWxBeacon2を使って自宅の温度・湿度・気圧・照度・騒音・紫外線・不快指数・熱中症危険度の8つをセンシングしてデータをInfluxDBに追加、Grafanaでグラフ表示していきます。

WxBeacon2

こちら↓からの続きです。

自宅のIot化でLED照明オンオフ(Xiaomi LED)や玄関鍵の開閉(セサミ スマートロック)、壁スイッチのオンオフ、部屋の空気の状態を表示させたりしていますが、不満点は専用のアプリでないと操作できないこと。それと同じメーカーでないと他のメーカーのIot製品は表示・操作できないことが歯がゆい。 Iotの...
自宅環境センシングの2回目の記事として今回はラズパイ(Raspberry Pi)にデータベースのInfluxDBを入れて将来的にセンシングしたデータをInfluxDB保存していきます。 そして次回は、GrafanaというデータをWebで美しく表示してくれるデータ可視化ツールとラズパイのCPUやRAM使用率な...
センシングしたデータを保存するInfluxDBは前回ラズパイに構築したので今回はGrafana+telegrafを入れて設定していきます。おまけとしてChromografとvcgencmdを使ってCPU温度やCPU使用率・ARMのデータを取得してInfluxDBにインサートするところまでやっていきます。 I...

ウェザーニュース WxBeacon2とは?

まずはWxBeacon2とはどういったものか、以下のように↓手の中に収まるくらい小さなガジェットです。この小さなガジェットが温度・湿度・気圧・照度・騒音・紫外線・不快指数・熱中症危険度の8つをセンシングしてくれます。

WxBeacon2

ウェザーニュースアプリ

WxBeacon2は2年ほど前に発売されたOmronが作ったセンサーで天気予報のウェザーニュースが販売、ウェザーニュースアプリでWxBeacon2から収集したデータを表示できるようになっています。

ウェザーニュース
ウェザーニュース
Developer: Weathernews Inc.
Price: Free+

アプリを起動して左下のメニュー > WxBeacon2を選択、本体設定後にWxBeacon2から取得したデータが表示されます。↓

アプリとWxBeacon2はBLE(Bluetooth Low Energy)接続で通信します。

この表示だけで十分かもしれませんが、せっかくなので自分で取得してグラフ表示してみます。

ウェザーニュースのWxBeacon2サイト

現在は4798円で販売されています。(ポイントためて優待割引あり)

アマゾンでもOMRON 2JCIE-BL01で販売されていますが、価格が倍以上しています・・・

WxBeacon2のビーコン モードをIMに変更

WxBeacon2のビーコンモードを変更

こちら↓の方はかなり詳しく書いてあって参考になりました。ありがとうございます。SHで取得する場合は以下のやり方で、自分はPythonスクリプトでInfluxDBに投げるようにしてみました。といってもサンプルスクリプトがあるので設定をちょこっと変更したのみ。

OMRONの環境センサ「2JCIE-BL01」が入ったWxBeacon2を屋外に設置して、外部環境をモニタリングします! 以前の記事でラズパイを部屋の中に設置して温湿度・気圧等を2...

WxBeacon2のモードをGeneral Broadcaster 1に変更すると常時接続できるようになるらしいのでIMに変更します。

WxBeacon2(OMRON 2JCIE-BL01)のマニュアルは以下、

OMRON Micro Devices - Main page

デフォルトのEnvモード↓だとバッテリー節約のために定期的にしか接続できないので、取得するタイミングがズレるとデータを取得できない。なのでIMにすると常時接続できてエラーにならない代わりにバッテリーが早く消耗しそう。

WxBeacon2

スマホアプリで取得するだけだったらEnvで大丈夫です。自前のスクリプトで取得する場合はモードを変更しないとエラーになてしまったのでIMに変更していきます。

BLE Scanner インストール

近くにあるBLE機器を探したり設定もできるスマホアプリBLE ScannerをインストールしてWxBeacon2のビーコンモードを変更していきます。

BLE Scanner 4.0
BLE Scanner 4.0
BLE Scanner
BLE Scanner
Price: Free+

IM(General Broadcaster 1)に変更

まずは「Env」と表示されているガジェットを探します。見つかったら「CONNECT」をタップ。

Envに接続できたらCUSTOM SERVICEの「0C4C3040-・・・」を選択、その中の「UUID:0C4C3042・・・」を探して右上の「W」を押して、Text→ByteArryに変更して「0808a0000a0032000200」を入力します。

IMに変わらない場合はWxBeacon2の電池を取って付けて再起動してみましょう。

以上でWxBeacon2のビーコンモードをIMに変更できました。

Omronサンプルスクリプト

では、ラズパイでWxBeacon2からデータを取得してInfluxDBにインサートするPythonスクリプトを設定していきましょう。

PythonスクリプトはすでにOmronがサンプルスクリプトを作ってくれているので、それをちょちょっと改造して利用しますので特に難しいところは無いと思います。

Omronサンプルスクリプト ダウンロード

Python Bluetooth low energy observer example for OMRON Environment Sensor (2JCIE-BL01) - OmronMicroDevices/envsensor-observer-py

以下のようにラズパイやLinux機でダウンロードしましょう。

ダウンロード完了するとenvsensor-observer-pyというディレクトリができて、さらに中にenvsensor-observer-pyディレクトリ、その中にサンプルスクリプトが入っています。紛らわしいのでomronに変えて「/home/pi/script/omron」に置くことにしました。

pythonでBluetoothを使えるようにライブラリも導入します。

Pythonサンプルスクリプト 修正箇所

基本的にconf.pyをご自分の環境に変更するだけで動くと思います、その他にもちょっとした変更をしました。

conf.py

まずは設定ファイルでInfluxDBを使いますので下の方にあるINFLUXDB_OUTPUTを「True」にして、その他5項目を変更します。

以下の項目を変更します。

  • INFLUXDB_ADDRESS:ラズパイのIPアドレス(分からない場合はifconfigコマンドで表示されます。)
  • INFLUXDB_PORT:8086のまま
  • INFLUXDB_DATABASE:保存するデータベース名
  • INFLUXDB_MEASUREMENT:保存するMEASUREMENT名(テーブル名)
  • INFLUXDB_USER:InfluxDBに接続するユーザー名
  • INFLUXDB_PASSWORD:InfluxDBに接続する時に使うパスワード

sensor_beacon.py

その他、sensor_beacon.pyをちょっとだけ変更する。

str_util.c2B(pkt[13]), str_util.c2B(pkt[12]))の部分

59行目、照度が整数だったので「* 1.0」をつけて小数点以下も表示できるようにした。

json_body

252行目あたり、tagsを以下のように変更した。このあたりはお好みで変更してみてください。

動作確認

これで以下のように

もしくは、うまく取得できない場合もあって以下のようになります。

CronでKill&動作

最後にCronで自動的にスクリプトを動作させます。Pythonサンプルスクリプトは終了しないでずっとデータを取得して、いつの間にかゾンビ状態になるので一定期間でKillすることにしました。(終了するように改造すればいい話なのですが・・・面倒なので・・・)

失敗した方法(メモ)

少し時間を置いてから起動させないと動かなかったのでSleepしてみた。

これでも1時間ほどたつと起動しているが取得しなくなるので?いったんKillしてから起動させてみる。↓

&&の先の自分自身もKillしちゃって起動しないので分けてみた。

成功!

以下のように5分でKillして3分起きに起動させてみたらうまくいった。

この状態で3ヶ月弱の期間正常動作しているので問題ないと思います。

これでWxBeacon2でセンシングしたデータを定期的にInfluxDBにインサートすることができるようになりました。

WxBeacon2で3ヶ月弱データ取得

WxBeacon2で順調にデータを取得しています。3ヶ月弱で1回電池交換しました。Env(Standard Beacon)からIM(General Broadcaster 1)に変更したので消費電力多めで電池は2ヶ月程度しか持たないのかもしれません。

WxBeacon2.jsonファイル ダウンロード

WxBeacon2でセンシングしてInfluxDBにあるデータをGrafanaでグラフ表示すると以下のようになりました。Grafanaのjsonファイルをダウンロードできるようにしておきましたので、よかったら使ってください。

WxBeacon2

jsonファイルのインポート方法は以下のページで説明してありますので参考にしてください。

センシングしたデータを保存するInfluxDBは前回ラズパイに構築したので今回はGrafana+telegrafを入れて設定していきます。おまけとしてChromografとvcgencmdを使ってCPU温度やCPU使用率・ARMのデータを取得してInfluxDBにインサートするところまでやっていきます。 I...

直近3ヶ月弱のデータ

最終的に以下のように温度・湿度・気圧・照度・騒音・紫外線・不快指数・熱中症危険度の8つをセンサーでグラフが一気に増えました♪

温度・湿度・気圧・照度・騒音・紫外線・不快指数・熱中症危険度の8つをセンシング

7日間グラフ

温度・湿度・気圧・照度・騒音・紫外線・不快指数・熱中症危険度の8つをセンシング

90日間グラフ

自宅センシングのグラフ化がこれで一歩進みました♪ 次回もどんどんデータを取得してグラフ化していきます。

以下、おまけで失敗した方法をメモしておいたので必要なければ読み飛ばしてください。

おまけ WxBeacon2 うまくいかなかった方法

メモ的にうまく行かなかった方法も書いておきます。必要のない場合は読み飛ばしてくださいね。

こちらはこちらのページからコピーさせていただいたPythonファイルをInfluxDBにインサートできるように改造したものです。

1日程度は動いていましたが、原因不明でいつの間にか動かなくなったので上記のオムロンのサンプルスクリプトで解決しました。

ラズパイでBLEをスキャン

以下のようにhcitoolコマンドを使うと近くにあるBLEををリストアップしてくれます。Envと表示されているWxBeacon2のMacアドレスはF8:A8:82:C6:33:97なので接続していきます。

WxBeacon2に接続

WxBeacon2にgatttoolで接続してみます。何回か接続してもエラーになりましたが3回目で接続できた。

WxBeacon2からセンシングデータを取得してInfluxDBにアップするPythonファイル

こちらのソースを改造させてもらったと思います。

https://github.com/AmbientDataInc/EnvSensorBleGw/tree/master/src/gw_RPiのenv2ambientCS.pyを改造したのかな?忘れた。

テスト実行

そのままのデータだと出力できない。

取得成功!

このデータをPythonスクリプトで取得・InfluxDBにインサートするように改造していきます。

Pythonスクリプトで使うライブラリをインストール

以下のようにbluepyなどをインストールしておく必要があります。

WxBeacon2からセンシングデータを取得してInfluxDBにアップするPythonファイル

うまくいかなかったPythonファイルですが、以下にありますので気になる方はチェックしてみてください。(WxBeacon2に常時接続できるGeneral Broadcaster 1に変更したらちゃんと動くのかもしれません。)

Cronで定期的にセンシングデータを取得

このようにして1日程度経ったらなぜか?取得できなくなった・・・使えないかな?

ということで、こちらは現在使っていません。

スポンサーリンク

コメントを残す