ESP32-CAM
ESP32-CAMのカメラで動体検知してiPhoneのHomeKitやAmazon Alexaへ通知するMatterデバイスを作ります。
ESP32-CAMにカメラV2・モーションセンサーを有効にしてビルドしたTasmota32をWeb Installerでインストールし、ドライバスクリプトをTasmotaにアップロードしてMatterの設定して完成。ビルドは手元に環境を作らずWebのビルド環境GitPodを使います。
ハードウェア
技適ありのESP32-CAMとダウンローダ(ESP32などにUSB経由でプログラムを書き込んだりターミナルで操作したりするツール)を調達します
ファームウェア作成
ファームウェアはTasmotaを使用します。ESP32-CAMのカメラで動体検知する機能はオプション有効にしてファームウェアをビルドしなおす必要があります。今回は手元に環境を作らずTasmoCompilerとGitPodでビルドします。
GitHubのアカウントは必要なので、なければ作っておきましょう
まずはGitpodでtasmocompilerをビルドします
https://gitpod.io/#https://github.com/benzino77/tasmocompiler

Continue with GitHubでログインしてContinueでビルドが始まります

完了すると最後に以下のようにport 3000でサービス開始のログが出ますので【PORTS】タブに切り替えます

URLをクリックするとtasmocompilerの画面になります

DOWNLOAD SOURCEを押し完了したらNEXT

ここでWiFiの接続情報を入力(2.4GHzのみ)し、NEXT

欲しい機能にチェックを入れ、NEXT
・ESP32のWebcamを選択
・Matter protocol有効

カメラで動体検知する機能を有効にするdefine追加し、NEXT

#define USE_WEBCAM_V2
#define USE_WEBCAM_MOTION
COMPILEでビルド開始します
言語はEnglish、Versionは最新のバージョンで良いでしょう

ビルドが完了すると"Finished. Exit code: 0."のログ出力があり、ファームウェアが完成します

FIRMWARE.FACTORY.BINをダウンロードしましょう
(ファイル名="tasmota32-webcam.factory.bin")
ファームウェア書込み
ESP32-CAMをダウンローダを介してPCに接続します
書込みを行うのでESP32-CAMのIO0とGNDを接続します(シリアル通信するときには外す必要があります)

ESP32-CAM ダウンローダ
3V3 ---- 3.3V
GND ---- GND
UOR ---- TXD
UOT ---- RXD
GND -- IO0
Tasmota WebInstallerを開きます
【Tasmota WebInstaller】 https://tasmota.github.io/install/

Upload factory.binで先ほどダウンロードしておいたファームウェア("tasmota32-webcam.factory.bin")をアップロードします
connectし、INSTALL TASMOTA32-WEBCAM.FACTORY.BINで書込みを開始します


complete画面が出たら完了
ESP32-CAMのGND -- IO0の線を外して再起動したら、CONNECT してLOGS & CONSOLEで黒い画面を開きます

CONSOLE画面でWiFi設定をリセットするため、wificonfigコマンド実行します。その後BACKで元の画面に戻します
wificonfig 2
CHANGE WI-FIで設定を進めます

そのままWiFi接続をして(2.4GHzのみ)

繋がったら、VISIT DEVICE

ESP32-CAM内のWebサーバに入れます。ここで設定していきます

configuration -> Template で、 ESP32-Cam(2)を選択

自動リブートしたら、configuration -> Module で、 ESP32-Cam(2)を選択

自動リブートしたら、configuration -> Other で、Device Nameを識別しやすい名前に変更しておきます

自動リブートしたら、Tool->Consoleで黒い画面を立ち上げて、日本のlocaltimeに設定します。
「 timezone +9:00 」と入力すればOK。ログのタイムスタンプで正しく設定されたか確認。

GitHubから camMotionDriver.be と autoexec.be をダウンロード
Tool->Manage File systemで、 camMotionDriver.be と autoexec.be をアップロードします。

ここまでで、一旦リブートしましょう。
続いて、configuration->matter
Matter enableにチェックを入れてから「Save」します

自動リブートしたら、configuration->matter
Add to Configurationで Name = vmotion / Type = v.Occupancy のエンドポイント追加

Matterデバイスとして参加できるようにするために Commissioning openにチェックを入れて「Save」します

HomeKitへの参加
Commissioning openの状態で Manual pairing codeが表示されます

以降、iPhoneのHomeアプリでデバイス追加していきます

アクセサリを追加->その他のオプション->番号入力します

「認定されていない」旨の警告が出ますが、このまま追加してどんどん進めます。
ブリッジ1個と、ライト1個、人感センサー1個が認識されればOKです。

動作確認
「人感」がMatterデバイスとしてHomeKitに登録され、モーション検知に応じてiPhoneへ状態通知されます。
ESP32-CAMは、2秒間隔でカメラの画像をチェックして、動くものが検出されるとMatterのOccupancy:1として通知します。検出され続けている間は重複した通知は行いません。5秒間動きが検出されなければOccupancy:0として通知します。
http://<ESP32-CAMのipアドレス>:81/diff.mjpeg で画像の変化点を確認できます。(その他詳細は参考:【WEBCAM_V2】に記載があります)

数値はお好みに応じてスクリプト( camMotionDriver.be )の値を修正することもできます。

参考
【WEBCAM_V2】 = https://github.com/btsimonh/TasmotaBerryPLay/blob/master/tasdocs/esp32cam.md
【Tasmota】 = https://tasmota.github.io/docs/

