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

Echo Dot 2台をステレオペアとして設定する

BGM再生端末としてちょうど良い

YAS-109でAlexaを使う

本体のマイクの無効化を解除する必要があった

ルンバの電源をオフにする

HOMEボタンを10秒長押しでオフにできた

M5StickCで血中酸素飽和度(SpO2)を測定する

手軽にSpO2が計測できるようになって便利

Alexa、関西弁でしゃべって

まいど。Alexaです

Alexa非対応テレビをAlexa対応にする

基本的な操作は音声のみで完結できるようになって快適