二酸化炭素が室内に多いと、眠くなったり集中力が低くなったり良くないらしいです。 濃度の増加に気付いて換気するために、M5AtomでCO2を監視するシステムを作りました。
完成図
材料
- ATOM Matrix
https://www.switch-science.com/catalog/6260/
ATOM Matrixじゃなくても、m5stackの奴なら良いと思います。 Atom Liteとか、Stickみたいなやつとか。
- TVOC/eCO2 ガスセンサユニット(SGP30)
https://www.switch-science.com/catalog/6619/
- USB-Cケーブル
https://www.switch-science.com/catalog/3792/
これじゃなくても給電できれば多分OK
- Prometheus
データを集めて、クエリに答えてくれる偉い人
- Grafana
Prometheusにクエリ投げてイケイケなグラフを描画してくれたりアラート出せる人
- Mosquitto
https://mosquitto.org https://hub.docker.com/_/eclipse-mosquitto
IoTで使われがちなMQTTというPub/Subのプロトコルがあるらしく、それのOSSのサーバー
- mqtt2prometheus
https://github.com/hikhvar/mqtt2prometheus
MQTTのトピックと、それをどのようにPrometheusに流したいかを設定ファイルで書くといい感じにやってくれる奴 わかる人向けに書くと、設定ファイルに従ったexporterとして動いてくれます。
調理工程
- 物理的なやつをつなぐ
M5AtomにセンサーとUSBケーブルを繋ぎます。
- Mosquittoに定期的にデータをPublishするプログラムを書き込む
GitHubにコードをあげたので参考になると思います。 Arduino IDEを頑張ると書き込めます。
https://github.com/nu50218/m5atom-co2-mqtt
- PrometheusとGrafanaとMosquittoとmqtt2prometheusを繋ぐ
どれもDockerファイルがあるので簡単です。 設定もちゃんとドキュメントかネットを見ればわかると思います。
図としては以下のような感じです。
- Grafanaからダッシュボード作る
完成!
感想
- Arduino IDEが結構つらい…
LSPが欲しくなったり、ライブラリのインポートが独特(?なんか依存ファイルができるんじゃなくてポチッと押す…)だったりで結構辛かったです。
- コード通りに動かない
確率で無限にWi-Fiに繋がらないとか変な挙動しました。
- 日本語の情報が少なめでちょっとつらかった
m5stackとかArduino周りの情報が少なくて結構辛かったんですが、公式のドキュメント見たら普通にいけました。
あとは、ライブラリ入れたら見れるサンプルが結構豊富で、これを見れば結構大丈夫でした。 二酸化炭素センサーもコードサンプルがあったのでAPIがわかってよかったです。
- MQTTとかいうやつの存在を知った
IoT系は普段使ってる(WEB周りの)技術とは結構勝手が違って面白かったです。 大抵の場合プロセッサーが安価で性能がめちゃめちゃ低いので、なるべく軽い処理をさせたいという問題が生じて、MQTTのような独特のIoT向けのソフトウェアが生まれているっぽいです。
- もっと色々作りたくなった
IoT系初めて触ったけど結構楽しい! 結構安いのに(1700円ぐらい)Wi-FiとかBluetoothとかボタンとか付いていて色々遊べそうです。 スマートロック自作したい、、、