部屋内の CO2 濃度が高くなると眠くなる、という話をどこかで聞いて、最近日中に眠いのは春の陽気のせいかとも思っていたんだけど、もしかしたら CO2 濃度が高いんじゃ無いかと思って、計測してみることにした。

CO2 濃度計はいくつか候補があったんだけど、 Raspberry Pi に USB で接続できて USB から値が取れるらしい下記の商品を購入した。購入時の価格は「8,738円(税込)」。調べた限りではモノタロウが一番安かったので、モノタロウで購入した。(今調べたら Amazon で「9,099円(税込)」だったので、誤差の範囲かも。)

検討したけど購入しなかった CO2 濃度計

MH-Z19

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 のサンプルコードを動かしてみる

下記のようにファイルを作って、

$ 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 くらいから眠くなるらしい)、眠いのは春の陽気のせいなのか、もしくは普通に眠いのかもしれない。