MH-Z19 という格安 CO2 センサを読んでみた | tech - 氾濫原 の続きです。
Raspberry Pi で喋らせる
Open jtalk で喋るようにしてあるので
- 1000ppm を超えたら換気をうながす (アラート)
- 600ppm 未満になったら告知する (アラート解除)
みたいにした。
alert = false
loop do
begin
ppm = get_latest.last
case
when ppm > 2000
system("jsay.sh", "CO2濃度が2000ppmを超えました。ただちに換気を行ってください")
alert = true
when ppm > 1000
system("jsay.sh", "CO2濃度が1000ppmを超えました。換気を行ってください")
alert = true
when alert && ppm < 600
alert = false
system("jsay.sh", "CO2濃度が600ppmまで下がりました")
end
rescue Exception => e
p e
end
sleep 5 * 60
end
get_latest は GrowthForecast からデータをとってくるやつ。センサーからデータを読むプロセスは別にしてあるので、間接的にgfからとってきてる。
常に表示する
家で余っているスマフォに常時表示するようにした。これも GrowthForecast からデータをとる。具体的には
- ロード直後は http://gf.lab.lowreal.net/xport/home/sensor/co2?t=sh&width=60 で過去ログをとってくる
- その後は1秒ごとに http://gf.lab.lowreal.net/api/home/sensor/co2 を取得して number と updated_at を使う
グラフは vis.js を使ってみた。結構つかいやすい。example のうちの 404 Not Found を参考にしたらうまくできた。
今後
GrowthForecast にデータを投げてるので、gf の API をメインで使ってみたが、gf はそういう用途のためのものじゃないので、かなり無駄感がある。WebSockeet 経由でデータを転送するゲートウェイみたいなのをまず作ったほうがいいかもしれない。