MH-Z19でCO2濃度をリアルタイム計測してMackerelでアラート通知する

MH-Z19でCO2濃度をリアルタイム計測してMackerelでアラート通知する
公開日時
更新日時

以前、Withings WS-50を使ってCO2濃度をCloudWatchメトリクスに保存するようにした。

CO2濃度の履歴がグラフで見れるのは便利だが、WS-50の計測値はリアルタイムではないため換気すべきタイミングに気づけないという問題があった。

在宅勤務になり家にいる時間も増えてきたので、リアルタイムにCO2が測れるようにしたいと思い、安価なCO2センサであるMH-Z19を購入した。

ピンヘッダとはんだが手元になかったので、以前買ったスルーホール用テストワイヤを使ってセンサーとRaspberryPiを接続。

配線方法とシリアル通信の設定方法に関しては下記記事を参考にさせていただいた。

今回はRaspberryPi Zero上で動かしており、Mackerel Agentを入れるほどでもなかったので、別のRaspberryPiで使っているMackerelのホストIDを間借りしてカスタムメトリクスを作ることにした。

以下のような co2_to_mackerel.sh を作成し、

HOST_ID=
API_KEY=
CO2=`sudo python3 -m mh_z19 | jq ".co2"`
JSON=$(cat << EOS
[
  {
    "hostId":"${HOST_ID}",
    "name":"custom.co2.ppm",
    "time":$(date +%s),
    "value":${CO2}
  }
]
EOS
)

curl -s https://mackerel.io/api/v0/tsdb \
-H "X-Api-Key: ${API_KEY}" \
-H "Content-Type: application/json" \
-X POST \
-d "${JSON}"

cronで1分おきに計測値を送信するように設定。

* * * * * $HOME/co2_to_mackerel.sh >> /dev/null 2>&1

あとはCO2濃度に応じたアラートを設定して完成。

これで換気すべきタイミングにアラートが飛ぶようになった。

参考


Related #iot

Alexaにゲーミングマシンと周辺環境を起動してもらう

PC起動、TV起動、サウンドバー起動がまとめてできるようになった

Alexaにゲーミングマシンと周辺環境を終了してもらう

「Alexa Steamを終了して」ができるようになった

AlexaにPS4を起動してもらう

「Alexa、PS4をつけて(消して)」

RaspberryPi用の赤外線送受信リモコンを作る

夏休みの電子工作

Amazon純正スマートプラグ

Raspberry Pi4の緊急対応用に購入