もりはやメモφ(・ω・ )

ITとか読書感想文とか

ラズパイとCO2センサで自室の二酸化炭素濃度を可視化した

以下のツイートの通り。

使ったもの

  • Raspberry Pi 3B
  • mh-z19c
  • ジャンパ線

なぜやったか

以下の条件がそろったのでやりました。

  1. もともとは中華製の安いCO2センサを使っていて、それが壊れた*1
  2. 調べてみると世の中にはラズパイとCO2センサ(そこそこ安い)を使った計測をしている人がたくさんいる(後述)
  3. ちょっと遊んで転がってたラズパイ3bがちょうどある

困ったことメモ

そもそも電子工作初心者

ラズパイは持ってましたが電子工作と呼ばれることをほぼしたことがない状態からスタート。Lチカッって何?状態。 今回もよくわからないままmh-z19を購入したが、ブレッドボードも必要だと思い込んで買った。そして使わなかった。

配線がわからない

mh-z19が秋月電子から届いたが、接続方法がよくわからなかった。ブレッドボードも買ったものの直結でやることにした。 救いの手になったのは以下の記事。

qiita.com

以下の図が大変わかりやすくて何とか接続ができました、心より感謝です。

https://camo.qiitausercontent.com/28d8c92e44d5d00765e7dfd8dae9590c03016023/68747470733a2f2f71696974612d696d6167652d73746f72652e73332e61702d6e6f727468656173742d312e616d617a6f6e6177732e636f6d2f302f36313830392f62613066656330642d376364312d643035322d346438642d3065613537333964613634372e706e67

Monitorに登録できない

ハードウェアが接続できた後は、ソフトウェアの問題に躓きました。CO2の値を取得するところまではスムーズに進みましたが、その後に"MONITOR"*2と呼ばれるSaaSへのメトリック送信に失敗し続けました。結論としてはReadmeの前半にある ./setup.sh をやっていなかったことが原因で、ドキュメントをちゃんと読めという典型的なポカミスでした。。。

github.com

./setup.sh の中で sudo pip install mh_z19 pondslider incremental_counter error_counter を実行しており、それが行われていなかったためモジュールが存在しないというエラーが発生して焦りました。

以下はエラーの内容です。

morihaya@rpi01:~/github.com/UedaTakeyuki/mh-z19 $ sudo python2 -m pondslider
{'co2': 1131}
Traceback (most recent call last):
  File "/usr/local/lib/python2.7/dist-packages/pondslider/__init__.py", line 46, in read
    value_handler = importlib.import_module(handler)
  File "/usr/lib/python2.7/importlib/__init__.py", line 37, in import_module
    __import__(name)
  File "send2monitor.py", line 9, in <module>
    from error_counter import Counter
ImportError: No module named error_counter

morihaya@rpi01:~/github.com/UedaTakeyuki/mh-z19 $
morihaya@rpi01:~/github.com/UedaTakeyuki/mh-z19 $ sudo python3 -m pondslider
Traceback (most recent call last):
  File "/usr/lib/python3.7/runpy.py", line 193, in _run_module_as_main
    "__main__", mod_spec)
  File "/usr/lib/python3.7/runpy.py", line 85, in _run_code
    exec(code, run_globals)
  File "/usr/local/lib/python3.7/dist-packages/pondslider/__main__.py", line 68, in <module>
    pondslider.read(args.config)
AttributeError: module '__init__' has no attribute 'read'

morihaya@rpi01:~/github.com/UedaTakeyuki/mh-z19 $

今後やりたいこと

  • 参考リンクのなかでやっていたような、一定の濃度を閾値にアラートを飛ばす仕組みを作りたい
  • 長期間のメトリクスが取りたい、ので自前のZabbixとかOCIのFreeインスタンスで運用するとか?
  • 先日参加した TinyGo のイベントで頂いた Wio Terminal に表示してみたい

参考リンク

*1:その後、保証期間だったので交換ができ、現在はmh-z19と併用している。制度はmh-z19の方が感度が高そうに見えてる、換気時とか

*2:The MONITOR™ is a free Remote Monitoring Service to show latest data on the web.