こんにちは、私は id:side_tana。この記事は Mackerel Advent Calendar 17 日目の記事です。昨日は koudenpa さんでした。
この記事では部屋にモニタリングを導入するまでの経緯とその結果をご紹介します。
序
私は春に引っ越したのですが、引っ越してからしばらく睡眠の質が低い日々を過ごしていました。1週間ほどその状態で過ごしたとき、夜間に寝室のCO2濃度が高まって、それが悪影響となっているのではないか、とひらめきました。
その日の晩に寝室のドアを開けて寝たところ、寝苦しさについてはかなり改善されました。おそらくこれが原因だったのではないか、と思っています。
ともあれ私は睡眠の質を取り戻しました。めでたしめでたし。
本当に?
果たして本当にそうでしょうか? 私は専門家ではないので睡眠の質とCO2の関係性はわかりません。しかし本当にCO2が変化したのかは計測できるはずです。
部屋の可観測性を確認する
まずは現時点での部屋の可観測性を確認します。私の部屋にはすでに Nature Remo があります。Nature Remo はスマートリモコンと呼ばれる製品です。リモコンを登録したり、学習させることでスマートフォンから家電を操作することができます。
Nature Remo には「ルール」という機能があり、例えば「部屋が暗くなったら照明をオン」「室温が15度を下回ったら暖房をオン」といったルールを設定することで、家電の操作を自動化することができます。そしてそのためのセンサと、APIがあります。これを使わない手はありません。
幸い Mackerel エージェント向けのプラグインを papix さんが公開されています。
こうして「室温」「明るさ」「湿度」については Mackerel 上から確認することができるようになりました。*1
CO2 濃度を測りたい
しかし私が今測りたいのは CO2 濃度です。入門監視にも「ツールに依存しても監視の仕組みはよくならない」といったエピソードが最初に有りました。また、「自分でツールをつくらなければならない時もある」とも書かれています。
ということで CO2 の濃度を測りましょう。今回は CO2mini という製品を使います。実はこの製品はUSBで接続すると HID デバイスとして認識され、センサー情報を取得できることが知られています。
http://r-kurain.hatenablog.com/entry/2016/01/26/164648
https://dounokouno.com/2018/05/27/raspberry-pi-co2-mini/
https://hackaday.io/project/5301-reverse-engineering-a-low-cost-usb-co-monitor
今回はこの製品を用い、Goでセンサ情報を取得する Mackerel Agent 向けのプラグインを実装しました。こうして私の部屋は CO2 濃度に対する可観測性を獲得したのです。
$ ./bin/mackerel-plugin-co2mini --local room --path /dev/co2mini0 CO2Mini.co2ppm.room 484 1576503848 CO2Mini.temperature.room 15.100000 1576503848
ちなみにこんな動きをします。CO2 の値が低いのは、今棒鱈煮をつくっており、換気のため窓を開けているからです。
なおホストの端末には Raspberry Pi を使っています。Mackerel Advent Calendar 3日目でhnw さんが紹介されているようにインストールが簡単になりました。助かりますね。
結果
実際に寝室のドアを締めて寝てみると Mackerel 上で以下のようなグラフを確認できました。
一方で、寝室のドアを開けっ放しにして寝ると次のようになりました。
寝室のドアを閉めて寝ると CO2 濃度が高まる、という当初の仮説は正しかったようです!*2
アラートの設定
監視、というとアラートとは切っても来れない関係があります。しかし今回のケースに関しては「安眠のための監視によって安眠を阻害される」といった結果になるのが目に見えているので設定しませんでした。
確かにこれがプロダクションサービスなら「睡眠中にCO2 濃度が一定の基準を超えた場合にアラートを発報する」モニタリングルールを設定します。そしてオンコールの担当者が私の家にやってきて寝室のドアを開け、去っていくでしょう。。。*3
以上、Mackerel Advent Calendar 17日目の記事でした。明日は cm-watanabeseigo さんです。