今回は、Pythonコードを用いて実際にデータを取得するプログラムを記載したいと思います。まずプロトコル解析ですが興味深いページを発見しました。
Reverse-Engineering a low-cost USB CO₂ monitor
I'm trying to get data out of a relatively low-cost (80€) CO...
ご丁寧に通信プロトコルを解析し、githubにコードまでアップされています。
GitHub - henryk/fhem-co2mini: FHEM module to read CO2 measurement data from a co2mini like device
FHEM module to read CO2 measurement data from a co2mini like...
また、これとは別にPython用のライブラリとして、githubにコードがアップされていることも分かりました。
GitHub - heinemml/CO2Meter: Python Module to use co2meter code derived from https://hackaday.io/project/5301-reverse-engineering-a-low-cost-usb-co-monitor
Python Module to use co2meter code derived from - heinemml/C...
ただいずれもLinuxを前提としており、Windows環境では、そのままでは動作しません。元々考えていたターゲットはRaspberryPIですので、ここでWindows環境のプログラム作成は早々にあきらめ、Linuxでの確認です。
用意したRaspberryPIにはPython3のみが入っているようなので、開発環境とpip3をインストールします。
$ sudo apt-get -y install python3-dev
$ sudo apt-get -y install python3-pip
先のPython用ライブラリを用いてインストールしていきます。
$ sudo pip3 install git+https://github.com/heinemml/CO2Meter
次にviエディターでコードを記載してみます。
#!/bin/env python from CO2Meter import * from datetime import datetime import time Meter = CO2Meter("/dev/hidraw0") while True: measurement = Meter.get_data() measurement.update({'timestamp': datetime.now()}) print(measurement) time.sleep(5)
実行結果は次の通り。ん~、簡単にデータを取得することができました。簡易な暗号化などの解析内容は、先人たちのご苦労をありがたく頂戴し、そのまま使用させていただきます。
{'co2': 1606, 'temperature': 22.225000000000023, 'timestamp': datetime.datetime(2020, 1, 8, 2, 8, 29, 594878)} {'co2': 1606, 'temperature': 22.225000000000023, 'timestamp': datetime.datetime(2020, 1, 8, 2, 8, 34, 600528)} {'co2': 1606, 'temperature': 22.225000000000023, 'timestamp': datetime.datetime(2020, 1, 8, 2, 8, 39, 605980)}
あとは得られたデータを所定のサーバ、所定のプロトコルで送るのみです。サイネージとしての簡単なWEB画面を作成し、得られた値を表示したものは次の通りです(「快適な環境です」のところはスクロール)。
このシリーズは、これで終了です。