M5Atom + MQTT + GrafanaでCO2を監視する

二酸化炭素が室内に多いと、眠くなったり集中力が低くなったり良くないらしいです。 濃度の増加に気付いて換気するために、M5AtomでCO2を監視するシステムを作りました。

完成図

m5atom-co2-mqtt-1.png

材料

  • 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

https://prometheus.io

データを集めて、クエリに答えてくれる偉い人

  • Grafana

https://grafana.com

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として動いてくれます。

調理工程

  1. 物理的なやつをつなぐ

M5AtomにセンサーとUSBケーブルを繋ぎます。

  1. Mosquittoに定期的にデータをPublishするプログラムを書き込む

GitHubにコードをあげたので参考になると思います。 Arduino IDEを頑張ると書き込めます。

https://github.com/nu50218/m5atom-co2-mqtt

  1. PrometheusとGrafanaとMosquittoとmqtt2prometheusを繋ぐ

どれもDockerファイルがあるので簡単です。 設定もちゃんとドキュメントかネットを見ればわかると思います。

図としては以下のような感じです。

m5atom-co2-mqtt-2.png

  1. Grafanaからダッシュボード作る

完成!

感想

  • Arduino IDEが結構つらい…

LSPが欲しくなったり、ライブラリのインポートが独特(?なんか依存ファイルができるんじゃなくてポチッと押す…)だったりで結構辛かったです。

  • コード通りに動かない

確率で無限にWi-Fiに繋がらないとか変な挙動しました。

  • 日本語の情報が少なめでちょっとつらかった

m5stackとかArduino周りの情報が少なくて結構辛かったんですが、公式のドキュメント見たら普通にいけました。

あとは、ライブラリ入れたら見れるサンプルが結構豊富で、これを見れば結構大丈夫でした。 二酸化炭素センサーもコードサンプルがあったのでAPIがわかってよかったです。

  • MQTTとかいうやつの存在を知った

IoT系は普段使ってる(WEB周りの)技術とは結構勝手が違って面白かったです。 大抵の場合プロセッサーが安価で性能がめちゃめちゃ低いので、なるべく軽い処理をさせたいという問題が生じて、MQTTのような独特のIoT向けのソフトウェアが生まれているっぽいです。

  • もっと色々作りたくなった

IoT系初めて触ったけど結構楽しい! 結構安いのに(1700円ぐらい)Wi-FiとかBluetoothとかボタンとか付いていて色々遊べそうです。 スマートロック自作したい、、、