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/