🔻

昭和なドアベルをMatterデバイスにしてAlexa定型アクションへ

に公開

Matterデバイスを作るハードウェア編

以下の記事でMatterのコンタクトセンサーとしてAlexaに接続するソフトウェアは完成しました。
TasmotaでMatterデバイスを作ってAlexa定型アクションへ

次は、こんな昭和なドアベルに組み込むハードウェアを作ります。
image.png

ドアベル調査と基板実装

ドアベルはナショナルEB-63K、電源は乾電池4本直列。スイッチの配線ネジ端子2-3間の電圧は実測+5.5V程度。M5Atomの電源は5VでUSBアダプタから給電するので、ドアベルの電源もそこから取るようにします。
https://www2.panasonic.biz/jp/densetsu/ha/signal/chime/guidance/

image.png

なので回路はこんな感じ。
(玄関スイッチからの5V入力をフォトリレー(TLP228G)を介してGPIO22(内部プルダウンに設定)への3.3V入力にしてやるだけ)
Tasmota-DoorBell-Sch.PNG
実装は単2乾電池2本のスペースに収まるように長細くするなどしておきます
image.png
image.png
乾電池を外したスペースに基板を収め、ドアベルの+ー端子へはんだ付けします。M5Atomへの入力となる配線はネジ端子3に接続
image.png
玄関スイッチからの配線も元のネジ端子2-3に接続し、ACアダプタを挿して完成
IMG_7749.jpg

反応しないことがあるので対策

完成したのですが、玄関スイッチをちょっと長めに押さないとAlexaのコンタクトセンサーが反応しないことがあります。
訪問者がスイッチを押す長さは通常0.2、0.3秒程度のところ、1秒近く押さないと取りこぼすことがあるのですが、これは、「コンタクトセンサー」の用途から言ってまあそうだろうなと。(そんなスピードで反応する必要が無い。むしろ困る)
image.png
対策は、1.5秒ほどオフを遅延させるオフディレータイマーを入れることですね。ハードウェア追加 or ファームウェアの変更で可能ですが面倒。
少し調べるとファームウェア変更せずともTasmota内で動くスクリプトでオフディレータイマーが実現できそうです。

オフディレータイマー実装

Matterのコンタクトセンサーのエンドポイント設定としてswitch2(GPIO22)を直接見ていたところを、vContactとして設定しなおし、vContactを1.5秒接続を続けるようスクリプト制御すればOK。

まず、 TasmotaでMatterデバイスを作ってAlexa定型アクションへ でやったように、M5AtomをPCにUSBで接続し、Tasmota WebInstallerを起動してVISIT DEVICEでM5Atom内のWebサーバに入ります。
【Tasmota WebInstaller】 https://tasmota.github.io/install/

configuration->configure matter
Add to ConfigurationでvContact(Type = vContact)エンドポイントを追加。bellとでも名前を付けておきます。
以前設定したContactは炎マークで削除します
image.png
こんな状態になればOK
image.png
Configuration->Main Menuと戻って、Main Menuから、Tools -> Consoleでコマンド実行できるコンソール画面を開きます。
image.png
Enter command入力欄に以下のコマンド(5行)を入力
コマンドの意味が知りたい場合は→ https://tasmota.github.io/docs/Commands/

switchmode2 1
setoption83 1
rule1 on switch2#state==1 do backlog mtrupdate {"name":"bell", "contact":1};delay 15; mtrupdate {"name":"bell", "contact":0} endon
rule1 1
rule1 5

ここでもう一度Alexaへ登録しなおせば完了
Alexaへの参加

玄関スイッチを押すとドアベルの鳴動とともにAlexaに通知されます。

参考:その時のコンソールログ

17:47:43.420 RUL: SWITCH2#STATE==1 performs 'backlog mtrupdate {"name":"bell", "contact":1};delay 15; mtrupdate {"name":"bell", "contact":0}'
17:47:43.438 RSL: RESULT = {"MtrUpdate":"Done"}
17:47:43.639 RSL: RESULT = {"Delay":15}
17:47:43.747 RSL: RESULT = {"POWER":"OFF"}
17:47:43.748 RSL: POWER = OFF
17:47:45.157 RSL: RESULT = {"MtrUpdate":"Done"}

ということで、Alexaに通知されたコンタクトセンサーをトリガーにして、お好みの定型アクションを作りましょう。

スクリプト書けるTasmotaおすすめ【Tasmota】 = https://tasmota.github.io/docs/
image.png

Discussion