しょくふんのしつけのためのシステムを作ってみた (飼い主への通知編)

2019年4月4日

こんにちは、hatpoppoです。

今回は「ペットのしょくふんをしつけたい」の第3弾である「飼い主への通知編」について書いていこうと思います。

前回の記事では、しかるタイミングを検知するシステムを画像を用いた方法で実装しました。
そして、今回は検知システムの結果をどうやって飼い主に知らせるか
という部分を書いていきます。

飼い主への通知に利用するツールは、slackです。
slackはビジネスでよく使われているチャットアプリで、話したい内容ごとにチャンネルを作ることができるので、とても便利なアプリです。

そんなslackを家族で利用して、検知の通知専用のチャンネルとしてdetectチャンネルを作りました。

実際に通知させた結果がこんな感じです。

ちなみに通知をしてくれるのは、morinagaさんです。 名前の由来は、僕がココアが好きだからです。

また、通知しているタイミングは、ビーグルズ(飼っているビーグル2頭のことです)がそれぞれトイレに侵入(invade)した時です。
いつトイレに侵入したのかを後からでもわかるように、[年/月/日-時:分:秒] invade と表示しています。

この通知は、侵入を検知したらすぐに通知することができるので、飼い主にしかるタイミングをベストタイミングで通知できます。 (システムや通信環境の関係で、通知は数秒遅れていますが…)

通知システムのオプション

さらにシステムのオプションとして、以下の機能を追加しました。

コマンド説明
開始トイレへの侵入の検知を開始する
停止トイレへの侵入の検知を停止する
検知されていなくても、今の状況の画像を表示させる
detect threshold 閾値差分処理による検知の閾値を変更する
testデバッグモード。検知の出力をtestチャンネルに出力する
deployデバッグモードの終了。detectチャンネルで実利用する
使い方上記のコマンドを全て表示する

オプションを以下でいくつか紹介します。

「開始」「停止」

検知してほしいとは言っても、して欲しくない時間帯があります。
それは、例えば寝ている時。
寝ているときにピコンピコンと通知されてしまったら、とても嫌ですよね。
あとは、予期しない検知の対策です。
検知に利用しているのが画像なのですが、画像は人間が考えている以上に光の変化に敏感です。
そのため、予期しない検知が起こることを考えた上で、意味のない通知をさせないために、
停止オプションを追加しました。
停止を実行すると、そのままシステムは停止したままなので、検知を再開させるために開始オプションを追加しました。

「今」

システムによる検知が確実ではないと考えた上で、いつでも今の状況を知るために追加しました。
また検知とは関係なく、ただただ今の状況を知りたい時があったので、そんな場合にも便利な機能です。

「detect threshold 閾値」

前回の記事で紹介しましたが、検知システムは2つの画像がどれだけ違うのかを数値(動体検知値と呼ぶことにします)として表しています
そして、動体検知値が大きいほど、2つの画像の間で大きな変化があったことを示します。
また動体検知値は、ビーグルズが侵入していなくても、小さな光の変化のみで大きくなることがあります。
よって、動体検知値がどんな大きさの時に、ビーグルズが侵入したのかという設定には調整が必要です。
その調整をslackを通して行うために追加したのが、このdetect threshold (検知閾値という意味です)というオプションです。

「test」「deploy」

検知を通知するチャンネルはdetectチャンネルですが、デバッグモード(システム修正モード)として使うために新しくtestチャンネルを作成しました。
detectチャンネルには、家族全員が入っているため、システム修正のための通知音が意味もなく何度も響いてしまうと、とても迷惑です。
そのため、僕だけが入っているtestチャンネルを作って、通知が僕以外に行かないようにしてあります。
修正が完了したら、detectチャンネルに切り替えるための機能であるdeployオプションを追加しました。

これで、しょくふんをしかる最適なタイミングを飼い主に通知できるシステムも実装することができました。

最後に

今回の工夫としては、ただ検知の結果を通知するだけではなく、いくつかのオプションを追加することで、システム運用に関しても使いやすいシステムになったところかなと思っています。

前回の記事で、検知システムにはまだ誤検知があると書きましたが、それは通知システム側からも抑制できるとも考えています。 (例えば、検知を5回連続でした時に通知をするとかとか)

ですので、検知システムの修正だけではなく、通知システムの修正など視野を広く持って、システムの精度向上を目指していきたいと思います。

感想や改善点など何かありましたら、コメントなど頂けると幸いです。 最後までこの記事を見ていただきまして、ありがとうございました。