Matterデバイスを作るハードウェア編
以下の記事でMatterのコンタクトセンサーとしてAlexaに接続するソフトウェアは完成しました。
→ TasmotaでMatterデバイスを作ってAlexa定型アクションへ
次は、こんな昭和なドアベルに組み込むハードウェアを作ります。
ドアベル調査と基板実装
ドアベルはナショナルEB-63K、電源は乾電池4本直列。スイッチの配線ネジ端子2-3間の電圧は実測+5.5V程度。M5Atomの電源は5VでUSBアダプタから給電するので、ドアベルの電源もそこから取るようにします。
https://www2.panasonic.biz/jp/densetsu/ha/signal/chime/guidance/
なので回路はこんな感じ。
(玄関スイッチからの5V入力をフォトリレー(TLP228G)を介してGPIO22(内部プルダウンに設定)への3.3V入力にしてやるだけ)
実装は単2乾電池2本のスペースに収まるように長細くするなどしておきます
乾電池を外したスペースに基板を収め、ドアベルの+ー端子へはんだ付けします。M5Atomへの入力となる配線はネジ端子3に接続
玄関スイッチからの配線も元のネジ端子2-3に接続し、ACアダプタを挿して完成
反応しないことがあるので対策
完成したのですが、玄関スイッチをちょっと長めに押さないとAlexaのコンタクトセンサーが反応しないことがあります。
訪問者がスイッチを押す長さは通常0.2、0.3秒程度のところ、1秒近く押さないと取りこぼすことがあるのですが、これは、「コンタクトセンサー」の用途から言ってまあそうだろうなと。(そんなスピードで反応する必要が無い。むしろ困る)
対策は、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は炎マークで削除します
こんな状態になればOK
Configuration->Main Menuと戻って、Main Menuから、Tools -> Consoleでコマンド実行できるコンソール画面を開きます。
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/