taltalpのアイコン画像

ラズパイとAmbientでリモートワーク作業環境のログを取る

taltalp 2020年07月15日に作成  (2020年07月16日に更新)

最近リモートワークで自宅にこもる時間が増えました。
自宅で一日作業部屋にこもっていると、気がつくとなんとなくぼーっとしたり、眠くなったりすることはないでしょうか。

そういうときは窓を開けて部屋の換気をしましょう。
二酸化炭素濃度が高まると人は眠くなったり集中力が低下したりするようです。

とは言え、"なんとなく"ぼーっとするというのは一体どのくらいの二酸化炭素濃度でなるのでしょうか。
実は気づいていないだけで、ぼーっとしていることに気づかないまま非効率な作業を続けているのではないでしょうか。

私はこの"なんとなく"の判断が苦手です。数値化してその判断基準を機械にゆだねたいと常に思っています。

前置きが長くなりましたが今回は、
自宅で仕事に集中できるように、部屋の二酸化炭素濃度や温湿度をグラフ化し、
適切なタイミングで換気を行えるようにしたいとおもいます。

アイデア

I2C通信で簡単に環境測定を行えるセンサが数多く売られています。例えば今回使う下記のようなセンサがあります。

  • Bosch BME280 (温度、湿度、気圧センサ)
  • AMS CSS811 (二酸化炭素、総揮発性有機化合物センサ)

これらのセンサをRaspberry Piで制御してセンサの読み出しを行います。
Raspberry Piを使えばI2C通信なんかもPythonで簡単に記述できます。

また、今回はAmbientというサービスを使って、Webブラウザでグラフ表示ができるようにしたいと思います。
このAmbientを使うと、わずか2行のコードでデータのグラフ化ができてしまったので紹介しようと思いました。

事前準備

pyenvでpythonのバージョンを3.8.3にしています。

回路図

キャプションを入力できます

環境設定

pythonで利用するライブラリのインストールを行います。

  • CCS811, BME280ライブラリ
pip install adafruit-circuitpython-ccs811
pip install Adafruit-BME280
  • Ambient
pip install git+https://github.com/AmbientDataInc/ambient-python-lib.git

ソースコード

使用したソースコードは下記のとおりです。予めAmbientに会員登録して、チャンネルIDとライトキーを取得しておいて下さい。

import time
import board
import digitalio
import busio
import adafruit_ccs811
import adafruit_bme280
import ambient

i2c = busio.I2C(board.SCL, board.SDA)
ccs811 = adafruit_ccs811.CCS811(i2c)
bme280 = adafruit_bme280.Adafruit_BME280_I2C(i2c)

bme280.sea_level_pressure = 1013.25

# Ambientと接続: チャンネルID, ライトキー
ambi = ambient.Ambient(123456, '0123456789abcdef')

# Wait for the sensor to be ready
while not ccs811.data_ready:
    pass

while True:
    co2 = ccs811.eco2
    voc = ccs811.tvoc
    temp = bme280.temperature
    humid = bme280.humidity
    press = bme280.pressure

    # データを送信
    r = ambi.send({"d1": co2, "d2": voc, "d3": temp, "d4": humid, "d5": press})

    time.sleep(60)

動作画面

グラフが表示されました。
Ambientにスマホでログインすれば、家のどこにいても(外でも)グラフを見ることができます。

キャプションを入力できます

適切な環境

厚生労働省が公開している建築物環境衛生管理基準についてによると、

  • 二酸化炭素濃度 1000ppm以下
  • 温度 17~28℃
  • 湿度 40~70%

が適切とされています。我が家ではこれを超えていたら換気するようにしました。
一晩寝ていると2000ppm程度まであがっていることもあるので、朝起きて作業する前にはしっかり換気をしないといけないなどの知見を得ました。

基準値を超えたら通知が来るようにするとより便利ですね(今回はやりませんが)

これで快適在宅ワークを送っていきたいと思います。

1
taltalpのアイコン画像
アナログ回路分野を学んでいる博士課程の学生です。ADCの研究をしています。 twitter: @taltalpp
taltalp さんが 2020/07/15 に 編集 をしました。 (メッセージ: 初版)
taltalp さんが 2020/07/16 に 編集 をしました。
ログインしてコメントを投稿する