
環境センサ 2JCIE-BU01 で遊んでみた
ふらっとTwitterに流れてきたIIJさんの記事が目に入り、面白そうだったので、実際に自分もIoTを使って自宅環境をデータ化/可視化してみました。
長時間のリモートワークで部屋の息苦しさを感じた筆者が、IoTで自宅環境の可視化してみることに。
— IIJ_ITS (@IIJ_ITS) April 30, 2020
二酸化炭素濃度や不快指数など取得できる環境センサでデータを集め、それらメトリクスをIIJ謹製「Machinist」を使ってグラフ化(可視化)し、自宅環境を分析しています。https://t.co/ntxiGywZ3U
▶︎ 今回使った材料達
<材料 1家庭分>
・ラズパイ(IoT機器:ご家庭にある物で結構です)・・・59 g
・2JCIE-BU01(センサ)・・・18 g
- 調味料 -
・Grafana(可視化ツール)・・・小さじ1
・InfluxDB(データベース)・・・大さじ1
▶︎ やりたい事
・定期的なデータ取得し、可視化(気温、湿度、CO2排出量)
・閾値越え後に通知(LINE、スマートスピーカー等)
いざ、自宅環境を可視化してみる
IIJさんの記事では簡単にデータ取得していたので、自分もできるだろうと錯覚し、やってみるも大苦戦。
2JCIE-BU01の使い方も理解していない事もあり、自分の思い通りにデータ取得ができなかった。Git Hubに公開されているPythonコードを使用する事で、簡単に値取りができる事がわかり、解決。
<就寝前>
就寝前にデータ取得を実施。
ラズパイにUSB型のセンサを直刺しの為か、温度が少し高めな気がする。
・気温:28.1℃
・湿度:54.9 %
・CO2濃度:1853ppm
・不快指数:76.56
$ python3 omron_sensor/2jciebu-usb-raspberrypi/sample_2jciebu.py
Time measured:2020/05/04 01:28:01
Temperature:28.16
Relative humidity:54.94
Ambient light:180
Barometric pressure:1007.321
Sound noise:38.22
eTVOC:521
eCO2:1853
Discomfort index:76.56
Heat stroke:24.62
Vibration information:0
SI value:0.0
PGA:0.0
Seismic intensity:0.0
Temperature flag:0
Relative humidity flag:0
Ambient light flag:0
Barometric pressure flag:0
Sound noise flag:0
eTVOC flag:0
eCO2 flag:0
Discomfort index flag:0
Heat stroke flag:0
SI value flag:0
PGA flag:0
Seismic intensity flag:0
<起床後>
起床後にすぐにデータ取得を実施。
・気温:27.2℃
・湿度:56.3 %
・CO2濃度:564ppm
・不快指数:75.45
※就寝前に換気した為か、CO2濃度が低下している。
$ python3 omron_sensor/2jciebu-usb-raspberrypi/sample_2jciebu.py
Time measured:2020/05/04 08:57:10
Temperature:27.21
Relative humidity:56.31
Ambient light:182
Barometric pressure:1007.361
Sound noise:37.07
eTVOC:24
eCO2:564
Discomfort index:75.45
Heat stroke:24.01
Vibration information:0
SI value:0.0
PGA:0.0
Seismic intensity:0.0
Temperature flag:0
Relative humidity flag:0
Ambient light flag:0
Barometric pressure flag:0
Sound noise flag:0
eTVOC flag:0
eCO2 flag:0
Discomfort index flag:0
Heat stroke flag:0
SI value flag:0
PGA flag:0
Seismic intensity flag:0
< 換気後 >
換気後、再度データ取得し、CO2濃度が低下した事を確認。
・気温:27.9℃
・湿度:52.9 %
・CO2濃度:409ppm
・不快指数:76.02
$ python3 omron_sensor/2jciebu-usb-raspberrypi/sample_2jciebu.py
Time measured:2020/05/04 09:21:48
Temperature:27.96
Relative humidity:52.93
Ambient light:182
Barometric pressure:1007.4
Sound noise:43.65
eTVOC:1
eCO2:409
Discomfort index:76.02
Heat stroke:24.16
Vibration information:0
SI value:0.0
PGA:0.0
Seismic intensity:0.0
Temperature flag:0
Relative humidity flag:0
Ambient light flag:0
Barometric pressure flag:0
Sound noise flag:0
eTVOC flag:0
eCO2 flag:0
Discomfort index flag:0
Heat stroke flag:0
SI value flag:0
PGA flag:0
Seismic intensity flag:0
部屋の環境データを取得できたは良いが、CO2濃度(eCO2)や不快指数(Discomfort index)等の危険レベルがどのくらいなのか、全く理解していなかったので、Googleで調べてみた。
CO2濃度(eCO2)について
AIR LABOさんのサイトに記載されていたCO2排出量に対するレベルを参考。
就寝前の値が、注意レベルである事が判明。
350~450PPM: 外気レベルです。
450~700PPM: 許容範囲です。
700~1,000PPM: 注意レベルです。
1,000~2,500PPM: 眠気が誘われるレベルです。
2,500~5,000PPM: 健康に害を及ぼす可能性のあるレベルです。
5,000PPM以上: 危険レベルです。
不快指数(Discomfort index)について
日本気象協会のサイトに記載されていた内容を参考。
計測した時は、指数75〜76くらいを彷徨っていたが、あまり良い結果ではなさそうだ。
不快指数は、「日中の蒸し暑さ」を表し、数字が大きいほど蒸し暑く不快であると言えます。「70未満・70~74・75~79・80~84・85以上」の5レベルで、80以上はほとんどの人が不快に感じる暑さです。
指数70〜74で不快感を抱く人が出始め、75〜79で半数以上が、80〜85で全員が不快と感じ、86を超えると我慢ができなくなる。
コードの内容を修正し、データを再取得
定期的にデータ取得をしたい為、Pythonコードに書かれていた内容を一部修正し、再実行。
InfluxDBクライアントモジュールを使い、変数を当て込んで、以下のようにコードを追記してあげられれば、取得した値をJSON形式でinfluxDBに投げられた。
from influxdb import InfluxDBClient
client = InfluxDBClient(host='localhost', port=8086, database='MyHomePy')
json_body = [
{
"measurement": "python_omron",
"fields": {
"Temperature": temperature, "RelativeHumidity": relative_humidity, "AmbientLight": ambient_light, "SoundNoise": sound_noise, "eCO2": eCO2, "DiscomfortIndex": discomfort_index, "HeatStroke": heat_stroke, "VibrationInformation": vibration_information
}
}
]
client.write_points(json_body)
取得できた自宅の環境データ
取得させる値を指定し、計測開始。
・取得期間:2020/5/5 16:12 - 5/6 15:12
・取得間隔:1h
以下は、influxDBに登録できた値。
> select * from python_omron tz('Asia/Tokyo')
name: python_omron_10sec
time AmbientLight DiscomfortIndex HeatStroke RelativeHumidity SoundNoise Temperature VibrationInformation eCO2
---- ------------ --------------- ---------- ---------------- ---------- ----------- -------------------- ----
2020-05-05T16:12:49.09607666+09:00 125 77.65 25.23 49.38 76.13 29.58 0 447
2020-05-05T17:12:49.260615837+09:00 310 78.33 25.46 45.72 57.8 30.55 0 634
2020-05-05T18:12:49.511573228+09:00 312 77.46 24.97 45.17 70.88 29.93 0 602
2020-05-05T19:12:49.687076986+09:00 312 77.88 25.32 47.37 62.23 29.99 0 618
2020-05-05T20:12:49.922277981+09:00 312 78.08 25.43 47.55 72.14 30.13 0 1400
2020-05-05T21:12:50.154181227+09:00 314 79.09 26.09 48.71 82.14 30.77 0 1163
2020-05-05T22:12:50.384464095+09:00 314 79.53 26.57 51.08 62.83 30.81 0 694
2020-05-05T23:12:50.614931892+09:00 312 79.78 26.49 48.97 73.07 31.27 0 1316
2020-05-06T00:12:50.842849778+09:00 189 78.92 26.02 49.83 38.37 30.5 0 706
2020-05-06T01:12:51.06912344+09:00 189 78.42 25.79 50.61 36.75 30.02 0 617
2020-05-06T02:12:51.295330355+09:00 189 78.21 25.6 50.99 36.13 29.82 0 485
2020-05-06T03:12:51.507209724+09:00 191 77.89 25.41 50.61 35.16 29.62 0 567
2020-05-06T04:12:51.783764757+09:00 189 77.85 25.37 50.78 33.69 29.57 0 626
2020-05-06T05:12:51.986690217+09:00 189 77.61 25.28 51.27 34.19 29.33 0 478
2020-05-06T06:12:52.223213359+09:00 191 77.71 25.28 50.6 36.09 29.48 0 416
2020-05-06T07:12:52.436965128+09:00 189 77.44 25.07 50.87 38.0 29.25 0 443
2020-05-06T08:12:52.673843203+09:00 191 77.46 25.08 50.77 37.32 29.27 0 421
2020-05-06T09:12:52.912293204+09:00 319 77.03 24.79 50.66 57.8 28.96 0 421
2020-05-06T10:12:53.147475313+09:00 191 76.99 24.77 49.17 37.52 29.09 0 531
2020-05-06T11:12:53.384317011+09:00 317 76.04 24.08 50.81 72.46 28.19 0 548
2020-05-06T12:12:53.544279559+09:00 317 77.98 25.53 51.5 73.04 29.59 0 942
2020-05-06T13:12:53.681186996+09:00 317 78.47 25.91 51.24 69.84 29.99 0 844
2020-05-06T14:12:53.915406015+09:00 317 78.11 25.5 49.91 59.94 29.87 0 589
2020-05-06T15:12:54.115941279+09:00 317 77.87 25.57 54.42 70.25 29.18 0 1885
>
Grafanaでみるとこんな感じ。
取得間隔が1hとなかなか粗いデータだが、計測してみると面白い。
5/5 20:00くらいに窓を締め切った状態でZoomを開始した事もあり、CO2濃度は注意レベルまで上昇。換気後はすぐに許容範囲内に収まってくれる。
就寝中にはCO2濃度が高まると思っていたが、思った以上に上昇はしていなかった。
5/6 10:00-11:00間でセンサを設置した部屋に居なかった事もあり、気温や不快指数が低下。気温は1℃くらい下がった。
LINE、スマートスピーカーで通知
値取りができたので、閾値を決めて、何かしら通知をするような仕組み(LINEにメッセージを送信したり、Google Homeに” お主、CO2排出しまくってるぜよ ” と喋らせる等)を追加させたかったが、うまく進まなかった事もあり、今回は割愛。
ここら辺の内容を参考すればできそう。
まとめ
今回のデータ取得で、定期的な換気が大切な事がよく分かった。
外出自粛に伴い自宅で筋トレする人たちは多いと思うが、窓を締め切った状態のままだと、すぐにCO2濃度は危険レベルまで上昇してしまうと思われる。
また、年間を通して取得したデータの傾向を分析したり、何かと連動させてみたり、ちょっとした実験的な事(例えば、自宅で植物を育てたらどのくらい効果があった等)を遊びながらできたら面白そうなので、また時間ができたらやってみたいと思いました。
そして何よりも、以下のネコリコホームプラスを電源差し込めば、やりたい事を簡単にすぐに実現できちゃう事がよく分かりました(笑)
以上です。