はじめに
登山用の温湿度計を探していて『電池式はめんどくさそうだなぁ』と思ってたのですが、SwitchBotさんの防水温湿度計が安くてうっかり手を出してしまいました。
環境センサーなのでBLEビーコンでも飛ばしてるだろうと思って、Node-REDからパケットを覗いてみたら、温湿度データも入ってるようだったので自宅の外気温用にもう一つ追加で購入しました。(1980円なんて、破格だよ!)
環境センサーのデータはNode-REDで収集してElasticsearchクラスタへ投入しているので、早速収集開始しました。
前提環境
- Node-RED v3.0.2
- node-red-contrib-blebeacon-scanner 1.0.1 (https://flows.nodered.org/node/node-red-contrib-blebeacon-scanner)
- Elasticsearch v8.11.1
SwitchBot 防水温湿度計のMACアドレス確認
Node-REDフロー作成
- BLE Beacon Scanner:そのまま配置します。
- switch : payload.idが、防水温湿度計のMACアドレスなら処理を継続させます。
- delay : メッセージの流量制限で。防水温湿度計からのビーコンを30秒に1回だけ受信するようにします。
- function(外湿度抽出) : 以下のようなコードでmsg.dataに湿度値を抽出します。
- function(外温度抽出) : 以下のようなコードでmsg.dataに温度値を抽出します。
- change : ElasticsearchへPOSTするための変数を設定します。URLを正規表現の置換で連結させてます。
- template : ElasticsearchへPOSTするデータ(JSON)を生成します。
- Elasticsearch : http通信するサブフローです。
Kibanaで可視化
既に屋内は監視しているので、ほぼコピーであっさり可視化しました。またCanvas使いたくなってきた。
おわりに
家の外の温度と湿度が室内から監視できるのは良いですね。しかも安くてビーコンの値がそのまま使えます。
(しかし、百葉箱のようなものに入れておかないと流石に年単位の長期間の放置は不安ですね。夏は暑さで壊れそうな気もしますし。)