ゆるい空き室モニタをつくる5(ゆるいモニタ編)
完結編。
複数の人感センサーを使えるようにし、
人感センサーが人を検知した回数を時系列に可視化
という github activity
みたな表現で、空き室モニタを表示する。
これまで。
複数のセンサを扱う
M5StickC と PIR を2セットつくる。
プログラムはちょっと改変。
マイコン毎に20行目のtopicを変更する。
const char *topic = "sensor/room1";
また、人感センサが検知すると、LEDを赤く光らせるとうざいので、display にMQTTに送るpayloadを表示する。
ok [{status": true}]
program
Grafana のStatus history
前回つくった棒グラフ。
複数のセンサを表示すると、いささか以上に、見づらい。
ここで、grafana の status history
の出番。
Queryは、上記の棒グラフと感じ。
SELECT count("status") as room1 FROM "sensor_pir"
WHERE ("topic" = 'room1' AND status = true) AND $timeFilter
GROUP BY time($__interval) fill(none)
センサー毎に、 room1
のところを room2
、 room3
と増やしていけばいい。
as room1
の指定のおかげで、グラフ毎にタイトル sensor_pir.room1
といったタイトルがつく。
visualizations で、 Status history
を選択。
検知数毎に、表示する色を Threshholds
で設定。
あまり細かいと見えにくいので、最少の集計単位時間を 5分
にする。
直近6時間の5分毎の検知数を色分表示で、なんとなく空き室具合がわかる。
room1 は、15時から17時まで空いてた。でも17時から使ってる。
room3(実はcommand line でpublishしたテストデータ)は、15時くらいから動いてた。とか。
さらに、最少の集計単位時間を 1時間
にしてみる。
実はホントにほしかったのは、これ。
会議室の空き状況が一目でわかる。
あと、検知数が多い時間帯は、きっと人数も多いはず。
この仕組みなら数十室程度の管理はできそう。
24時間後。