raspberry piで二酸化炭素濃度(CO2)を測る

お世話になっております。大晦日ですがはんだ付けをしておりました。
実は、だいぶ前に購入した二酸化炭素濃度を計測する「MH-Z19B」っていう部品があるんですけど、どうやら初期不良だったみたいで計測してもエラーを吐いてたんです。

自分がなにか誤ってると信じて半分諦めてたんですが、調べてみたら故障の可能性もあるようでして、年末で時間が出来るということもあり、同じ部品を別の会社から買ってみました。


ピンが無かったので、余ってたピンを流用しました。半年ぶりくらいにはんだ付けをしました。なお、ケーブル接続部は使わない&邪魔なのでニッパーで切り落としました。
#切り落とせと言わんばかりに切り取り線のごとく薄く穴が掘られてました。

結論から言うと、無事にCO2の値を取得出来ました。二酸化炭素センサー (MH-Z19B) を Raspberry Pi で使ってみたを参考に配線して、コマンドを叩いて、完璧です。

root@ras4:~# /usr/bin/python -m mh_z19
{"co2": 1522}

既にライブラリがあるので神ですね。ただ、JSON形式で返してくれることはとても嬉しいのですが、このままですとZabbixで処理できないため、jqコマンドで必要な情報だけ抽出します。

root@ras4:~# /usr/bin/python -m mh_z19 | /usr/bin/jq .co2 -r
1522

はい、Zabbixで処理出来る文字列になりました。
このままだと、ただ標準出力に出力されるだけなので、適当に/tmpあたりに吐き出すようにします。あと、1分ごとに実行したいので、crontabに以下のように記載します。

root@ras4:~# crontab -l
*/1 * * * * /usr/bin/python -m mh_z19 | /usr/bin/jq .co2 -r > /tmp/co2
root@ras4:~#

これで定期的に値が出力されるので、Zabbix側でも定期的に読み込むようにします。
アイテムの新規作成で、キーの「vfs.file.contents」を使います。これはラズパイにzabbix-agentがインストールされててzabbix-serverから認識出来てないと使えない機能だった記憶です。前もってラズパイとZabbixを連携しておいてください。

そうすると、Zabbixで情報が収集されて、グラフ化されます。じゃじゃーん。

1500ppmは少し高いですが、窓もドアも閉め切ってるのでこんなものかな。データシートによると、±50ppm+3%なので、結構正確な値を出しているようです。

なお、mh_z19 --allで他にも値が出ますが、不明な点が多かったです。

root@ras4:~# /usr/bin/python -m mh_z19 --all
{"SS": 0, "UhUl": 10240, "TT": 63, "co2": 1446, "temperature": 23}

色々調べたのですが、「SS」と「UhUl」と「TT」についてはundocumentedで、明文化されてないようでした。ただし、TTについてはtemperature+40の値という噂レベルの書き込みもあって、何度かコマンドを叩いて確認したところ確かにtemperature(celsius)+40でした。他の値を含め、co2以外の用途は不明です。

コメントを残す

メールアドレスが公開されることはありません。