PROBLEM

  • 以前からオフィスに行くと目や喉が痛くなることがあったので、自分の体調なのか環境なのか原因を切り分けるために汚染計測器「Dienmern DM106A」を購入
    • ただ、DM106Aの計測はその時その時のスナップショットなので傾向を読み解きづらい、また、都度実施する手間がかかる

-

SOLUTION

というわけで、DM106AのセンサーデータをRaspberry Piで定期取得することにした。設置方法の詳細はGitHubレポジトリを参照。下記は実装概要。

電子部品の構成

item description
Raspberry Pi 3 Model B+  
Aosong DHT11 気温・湿度センサー、GPIO
Nova SDS021 PM2.5・PM10センサー、UART
ams CCS811 TVOC・CO2eセンサー、I2C

電子工作は素人ゆえどのセンサーを買えばいいかわからなかったのでDM106Aを分解して各センサーの型番をしらべた。DHT011、SDS021はDM106Aとおなじセンサー、HCHOセンサーは信頼性があり手ごろなのがうまく見つけられなかった。TVOCセンサーはAdafruitが推しているCCS811を採用した。

コードの構成

item description
AirElixir.Application アプリケーション管理
AirElixir.GoogleSpreadsheets センサーデータ記録
AirElixirSensor.Publisher センサーデータ発行・送信
AirElixirSensor.Subscriber センサーデータ購読・受信

基本構成はGrovePiを参考にした。発行処理はElixirでうまくいかないケースがあったのでまずはPython/ErlPortでおこなった。後々Elixirに移行できるようにマクロにしてある。

5日ほど稼働してわかったこと・見立て、今後の課題

  • オフィスの空気清浄機「Hitachi EP-LVG110」はPMをきちんとフィルターしていた
  • 人の入りが多い時間帯に空気(TVOCやCO2e)がよごれる
    • 人が「出る」ときよりも「入る」際に濃度があがるのは、外のVOCが服などに付着しているためと推察
  • TVOCやCO2eはPMのうごきに連動している(かも)
    • チャート上はEP-LVG110がPM除去しているためわからないが、日本気象協会のPM2.5分布予測に照らしてみるとPM濃度が高い日にTVOC濃度があがっていた
      • TODO: PMがVOCを運んでいる可能性があるので、IQAirなどのAPIから周辺環境のPMデータも取得したいところ
  • TVOCの変動が大きすぎる
    • ポーリング・出力を20分ごとからポーリング3秒ごと・出力20分ごとに変更した、出力データは20分の平均
  • TVOCのスパイクを抑えたい

-

WRAPUP

Elixirは健康管理に向いている。

「なんか体調がすぐれないなあ...」
「Elixirちょうだい!」

という感じ。

-

以上 :mask: