自宅の温湿度モニタシステムを飛躍的に発展させた話

背景

昔から自宅の環境をモニタリングしたいという欲求があり、温湿度センサを動かしたりして遊んでいた。
yanatsuba.hatenablog.com

その後引っ越ししたりして、複数の部屋の温度を取得するシステムを作りたいと思っていたのだけど、センサーへのワイヤリングが面倒臭いとか色々と思案しているだけで結局着手しないままであった。ところが最近良さげな商品を見つけて、また自宅の環境モニタを高度化したいと思いはじめた。
INKBIRDのBluetooth高精度温湿度計である。

単4乾電池2本を使い、それなりに広い温度レンジで動作可能なワイヤレスセンサ。これが2024年7月20日現在、なんと一つ1839円で買えると。はっきり言って激安なので、即三つ買った。しばらく使ってみたところ、とても良いものであったので追加で二つ注文した。

結果

問題はこのモジュールで取得したデータを、自由に読み出しし、解析に使える形で扱えるのかというところであるが、調べてみると下のような技術解説記事があり、ひとまず買って試してみようじゃないかと考えた。
qiita.com
3つのInkbirdモジュールを買って、基本的なところはこの記事に従ってシステムを構築してみることにして、理解はしていないが見よう見まねでやってみた。
  • Raspberry Pi 2B + Bluetoothアダプタを母機とする。
  • Pythonモジュール"Bluepy"でInkbirdと通信
  • 測定温湿度データを、オープンソースシステム監視ツールPrometheusへ送信
  • モニタリング指標可視化ツールGrafanaによるコンソール表示
  • 測定データはCSVでファイル保存もする。
  • 元記事にあったInfluxDBはひとまず利用しない

ところでこのやり方に至るまでのところで、いくつも試行錯誤があった。

  • Inkbirdの温湿度モジュールは内部に測定データをストアしていて、スマホアプリなどをして取得できる。初めはこのようなデータ取得スキームを想定していたが、今のところやり方がわからないので、crontabを利用した定期実行に頼っている。
  • 使い慣れたMini PCとWSLを使ってシステムを作ろうとしたが、WSLからBluetoothを操作するのは難しかったので、引き出しの奥にあったラズパイ引っ張り出して使用した。昔インストールしたRaspberry Pi OSが乗っていたのでこれをそのまま使用しようとしたが、bluepyが動かせなかった。`apt install`できるpythonが3.9までしかないのが原因かと思い、Python 3.12や3.13をソースからビルドしたりもしたのだが、そもそもlibstdc++6などが根こそぎ古いらしく、どうにも更新できない・・・ということで最新のRaspberry Pi OSをインストールし直したところ、すんなりインストール完了。
  • Prometheusに関する知識が皆無だったのでやや苦労した。というよりserviceのことをよくわかっていなかった。`--collector.textfile.directory`オプションで、外部モニタリング指標を読み込めるのだがこれがうまくいかない・・・Chat-GPTに相談して、Prometheusサービスに権限付与する必要があると教えてもらい、なんとか解決。
  • Prometheusがきちんと動くようになってからは簡単で、Grafanaの設定はかなり直感的だった。

Inkbirdは居間、寝室、物置部屋の三箇所においてデータ収集。ラズパイのIPにアクセスすると、Grafanaが提供するwebページの形でコンソール画面が提示される。この画面がカスタマイズできる上に表示範囲の変更などやりやすく、使いやすい。


まとめ

いいBluetoothモジュールが安く出現したので、夢見ていたような家中のマルチセンサーモニタリングが現実になった。モジュールが安いので、かなり色々な使い方ができる。モジュールを買い増しして、ベランダに設置したり冷蔵庫の庫内温度のデータもとってみたいと思っている。