【M5Stack】インターホンの呼び出しを検知してみた

仕事で自室にいるとインターホンの呼出音に気付かないことがあり対策したお話です。

インターホンの親機はLDKに設置されています。音量を上げてしまえば良いのですが、音量を上げるとリビングではうるさく感じたり、近くで0歳児が寝ることもあるので音量を上げずに解決したいという前提です。

みんなどうしてる?

光センサ方式

通電検知方式

インターホン呼出時の画面点灯を光センサで検知する事例の方が多く見つかりましたが、スピーカー等への通電を検知している事例も見つかりました。

画面点灯では呼出時以外も検知してしまうため今回はスピーカーへの通電を検知する方式を採用、M5Stackシリーズの ATOM Lite を使用します。

ATOM Lite

ATOM Lite

  • スイッチサイエンス
Amazon

概要

ATOM Lite では通電のセンシングとHTTPリクエストを行う処理のみとし、後続の処理は Homebridge のために自宅で動かしている Raspberry Pi で行うことにしました。

Arduino IDE の環境に比べると Linux 環境の方が便利なライブラリや参考事例も豊富で、あとから処理を変更する際にもSSH経由で対応できるためです。

通知だけできれば良かったのですが、せっかくなので「SwitchBot ボット」にも連携してボタンを押せるようにしました。

作業中の様子

※既設の電線は着脱せず、SP+ / SP- 端子に耐火・耐熱電線を新規に接続します。

ATOM Lite での処理

ソースコードはこちらです。

GitHub - georz/arduino_bell_notification

Wi-Fi接続のリトライに5回連続で失敗したらソフトウェアリセットする処理が入れてあるくらいで、センシングとHTTPリクエストだけのシンプルな内容です。

HTTPレスポンスで次回センシングまでのディレイ(遅延時間)を返すことで、呼出音が鳴り続けている際の次回通知までの間隔を簡単に調整できるようにしています。

Raspberry Pi で利用したスクリプト

  1. GitHub - OpenWonderLabs/python-host: The python code running on Raspberry Pi or other Linux based boards to control SwitchBot.
  2. GitHub - thorsten-gehrig/alexa-remote-control: control Amazon Alexa from command Line (set volume, select station from tunein or pandora)

1.のSwitchBot公式スクリプトが私の環境では動作しなかったものの、下記の記事を参考にして無事動かすことができました。

ラズパイをハブとしてアレクサからSwitchBotを操作する - Qiita

2.のスクリプトでは下記のように作成したAlexaの定型アクションを呼び出しています。

alexa_remote_control.sh -d "EchoShow5" -e "automation:インターホン通知"
sleep 1
alexa_remote_control.sh -d "EchoSpot" -e "automation:インターホン通知"

バイス名にスペースが含まれると動かないので気を付ける必要があります。sleepを入れているのは複数台に連続して実行するとエラーになることがあるためです。

定型アクションの設定は毎回取得する処理となっていたため、この処理をスキップすることで約0.7秒ほど通知までの時間が早くなりました。

その他 curl で Slack などにも通知しています。
可能なものはバックグラウンドで並列実行することにより遅延を抑えています。

最後に

今回の内容に限っては「電気工事士法施行令 第一条 第四号に規定する軽微な工事」であるため電気工事士の資格は不要ですが、無資格者が100Vの電線を着脱するなどの作業を行うと法令違反になりますのでご注意ください。