部屋内の CO2 濃度が高くなると眠くなる、という話をどこかで聞いて、最近日中に眠いのは春の陽気のせいかとも思っていたんだけど、もしかしたら CO2 濃度が高いんじゃ無いかと思って、計測してみることにした。
CO2 濃度計はいくつか候補があったんだけど、 Raspberry Pi に USB で接続できて USB から値が取れるらしい下記の商品を購入した。購入時の価格は「8,738円(税込)」。調べた限りではモノタロウが一番安かったので、モノタロウで購入した。(今調べたら Amazon で「9,099円(税込)」だったので、誤差の範囲かも。)
検討したけど購入しなかった CO2 濃度計
MH-Z19
「18.70ドル」とめちゃ安い(送料は多分別にかかると思う)んだけど、私の使っている Raspberry Pi 2 のケースはジャンパーピンのところがあいてなくて、わざわざあけるのも手間だったので、この商品の購入は断念した。
NETATMO(ネタトモ) ウェザーステーション
この商品だと iPhone アプリやブラウザからアクセスできて、この商品だけでやりたいことが実現できるんだけど、ちょっと高かったので購入を断念した。(調査時の価格は Amazon で「18,472円(税込)」。)
pip3 のインストール
python3 は Raspberry Pi にインストールされてたけど pip3 はインストールされていなかったので、インストールする。
$ sudo apt-get install python3-pip
$ pip3 -V
pip 9.0.1 from /usr/lib/python3/dist-packages (python 3.5)
heinemml/CO2Meter のインストール
$ sudo pip3 install git+https://github.com/heinemml/CO2Meter
参考
- heinemml/CO2Meter: Python Module to use co2meter code derived from https://hackaday.io/project/5301-reverse-engineering-a-low-cost-usb-co-monitor
- CO2センサを部屋につけてログを取る – Qiita
heinemml/CO2Meter のサンプルコードを動かしてみる
下記のようにファイルを作って、
$ vi co2_temp.py
from CO2Meter import *
import time
sensor = CO2Meter("/dev/hidraw0")
while True:
time.sleep(2)
print(sensor.get_data())
下記のように実行。
$ sudo python3 co2_temp.py
{'temperature': 21.600000000000023}
{'temperature': 21.600000000000023, 'co2': 620}
CO2 濃度と気温が出力された!
Fluentd + Elasticsearch + Kibana で可視化する
先日の記事で Raspberry Pi に Fluentd + Elasticsearch + Kibana の環境を作ったので、 Fluentd で Elasticsearch にデータを送って、 Kibana でグラフ化してみる。
CO2 濃度と気温を JSON 形式で出力する
上記のサンプルコードを参考にして、 CO2 濃度と気温を JSON 形式で出力する。
上記のサンプルコードは取得タイミングによって CO2 濃度または気温が出力されないときあるので、両方の値が取得できたら JSON 形式で出力するようにする。
$ vi co2_temp.py
from CO2Meter import *
import time
import json
sensor = CO2Meter("/dev/hidraw0")
while True:
time.sleep(1)
data = sensor.get_data()
if 'temperature' in data and 'co2' in data:
print(json.dumps(data))
exit()
これで「両方の値が取得できたら JSON 形式で出力する」ができた。
Fluentd で Elasticsearch に送る
前回、 Raspberry Pi の CPU 温度、電圧、クロック数でやった要領で、 Fluentd で Elasticsearch に値を送る。
*/5 * * * * sudo python3 co2_temp.py | /home/pi/.anyenv/envs/rbenv/shims/fluent-cat log.co2_temp
Kibana でグラフを作る
前回、 Raspberry Pi の CPU 温度、電圧、クロック数でやった要領で、 Kibana でグラフ化してダッシュボードを作る。
いい感じにできた。
右側のグラフを見ると、人(私)が部屋に入ると、 CO2 濃度が 750 くらいまで上がることがわかる。
CO2 濃度を計測してわかったこと
CO2 濃度を計測してわかったこととしては、部屋の CO2 濃度は高いときで 750 〜 800ppm くらいで全然高くなくて( 1000ppm くらいから眠くなるらしい)、眠いのは春の陽気のせいなのか、もしくは普通に眠いのかもしれない。