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

# Matterデバイスを作るハードウェア編
以下の記事でMatterのコンタクトセンサーとしてAlexaに接続するソフトウェアは完成しました。
→ [TasmotaでMatterデバイスを作ってAlexa定型アクションへ](https://qiita.com/nfukuoka/items/0fd07fe6e3ad6ad5940f)

次は、こんな昭和なドアベルに組み込むハードウェアを作ります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/6824/860580e8-1322-5632-9858-47501cc44766.png)

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

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/6824/6c1e85ec-9063-f723-d751-2fa033fd7787.png)

なので回路はこんな感じ。
(玄関スイッチからの5V入力をフォトリレー(TLP228G)を介してGPIO22(内部プルダウンに設定)への3.3V入力にしてやるだけ)
![Tasmota-DoorBell-Sch.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/6824/cfa6abd6-1cfb-c1dc-ad6f-d1db3bfe5b81.png)
実装は単２乾電池２本のスペースに収まるように長細くするなどしておきます
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/6824/4491e8a4-de0b-71d8-5c42-b8aa26470986.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/6824/cec70f19-50f2-83a8-8a7f-cf2de3c3d3b0.png)
乾電池を外したスペースに基板を収め、ドアベルの＋ー端子へはんだ付けします。M5Atomへの入力となる配線はネジ端子３に接続
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/6824/f74c59fa-7593-243e-9948-4a63207efdc2.png)
玄関スイッチからの配線も元のネジ端子２－３に接続し、ACアダプタを挿して完成
![IMG_7749.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/6824/32e2b30f-9014-e4a1-6b6f-2278ec7b6d55.jpeg)

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

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

まず、 [TasmotaでMatterデバイスを作ってAlexa定型アクションへ](https://qiita.com/nfukuoka/items/0fd07fe6e3ad6ad5940f)　でやったように、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](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/6824/40714ec7-4261-5ec9-b521-9994cbdf4eaf.png)
こんな状態になればOK
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/6824/02d8bfb4-bbab-6239-db01-8ca116d5a57c.png)
Configuration->Main Menuと戻って、Main Menuから、Tools -> Consoleでコマンド実行できるコンソール画面を開きます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/6824/7ab67cda-34c0-a66e-a6da-80bfd8f9947b.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への参加](https://qiita.com/nfukuoka/items/0fd07fe6e3ad6ad5940f#alexa%E3%81%B8%E3%81%AE%E5%8F%82%E5%8A%A0)

玄関スイッチを押すとドアベルの鳴動とともに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](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/6824/f5716212-3c96-c3d7-d841-46d04114f0b9.png)