🔻

動体検知カメラMatterデバイスを作る

に公開

ESP32-CAM

ESP32-CAMのカメラで動体検知してiPhoneのHomeKitやAmazon Alexaへ通知するMatterデバイスを作ります。
ESP32-CAMにカメラV2・モーションセンサーを有効にしてビルドしたTasmota32をWeb Installerでインストールし、ドライバスクリプトをTasmotaにアップロードしてMatterの設定して完成。ビルドは手元に環境を作らずWebのビルド環境GitPodを使います。

top.png
IMG_8040.jpg

ハードウェア

技適ありのESP32-CAMとダウンローダ(ESP32などにUSB経由でプログラムを書き込んだりターミナルで操作したりするツール)を調達します

https://tak054.hateblo.jp/entry/2024/10/25/233752

https://www.switch-science.com/products/7471

ファームウェア作成

ファームウェアはTasmotaを使用します。ESP32-CAMのカメラで動体検知する機能はオプション有効にしてファームウェアをビルドしなおす必要があります。今回は手元に環境を作らずTasmoCompilerとGitPodでビルドします。

GitHubのアカウントは必要なので、なければ作っておきましょう

まずはGitpodでtasmocompilerをビルドします
https://gitpod.io/#https://github.com/benzino77/tasmocompiler
build01.png
Continue with GitHubでログインしてContinueでビルドが始まります
build02.png
完了すると最後に以下のようにport 3000でサービス開始のログが出ますので【PORTS】タブに切り替えます
gitpod01.png
URLをクリックするとtasmocompilerの画面になります
gitpod02.png
DOWNLOAD SOURCEを押し完了したらNEXT
tas01.png
ここでWiFiの接続情報を入力(2.4GHzのみ)し、NEXT
tas02.png
欲しい機能にチェックを入れ、NEXT
・ESP32のWebcamを選択
・Matter protocol有効
tas03.png
カメラで動体検知する機能を有効にするdefine追加し、NEXT
tas04.png

#define USE_WEBCAM_V2
#define USE_WEBCAM_MOTION

COMPILEでビルド開始します
言語はEnglish、Versionは最新のバージョンで良いでしょう
tas05.png
ビルドが完了すると"Finished. Exit code: 0."のログ出力があり、ファームウェアが完成します
tas06.png
FIRMWARE.FACTORY.BINをダウンロードしましょう
(ファイル名="tasmota32-webcam.factory.bin")

ファームウェア書込み

ESP32-CAMをダウンローダを介してPCに接続します
書込みを行うのでESP32-CAMのIO0とGNDを接続します(シリアル通信するときには外す必要があります)
IMG_8041.jpg

 ESP32-CAM        ダウンローダ
       3V3  ----  3.3V
       GND  ----  GND
       UOR  ----  TXD
       UOT  ----  RXD
GND -- IO0

Tasmota WebInstallerを開きます
【Tasmota WebInstaller】 https://tasmota.github.io/install/
upload.png
Upload factory.binで先ほどダウンロードしておいたファームウェア("tasmota32-webcam.factory.bin")をアップロードします

connectし、INSTALL TASMOTA32-WEBCAM.FACTORY.BINで書込みを開始します
connect.png
installig.png
complete画面が出たら完了
ESP32-CAMのGND -- IO0の線を外して再起動したら、CONNECT してLOGS & CONSOLEで黒い画面を開きます
reboot.png
CONSOLE画面でWiFi設定をリセットするため、wificonfigコマンド実行します。その後BACKで元の画面に戻します

wificonfig 2

CHANGE WI-FIで設定を進めます
wificonfig.png
そのままWiFi接続をして(2.4GHzのみ)
image.png
繋がったら、VISIT DEVICE
image.png
ESP32-CAM内のWebサーバに入れます。ここで設定していきます
init.png
configuration -> Template で、 ESP32-Cam(2)を選択
temp01.png
自動リブートしたら、configuration -> Module で、 ESP32-Cam(2)を選択
module01.png
自動リブートしたら、configuration -> Other で、Device Nameを識別しやすい名前に変更しておきます
devname01.png

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

GitHubから camMotionDriver.be と autoexec.be をダウンロード

https://github.com/fknaopen/Berry_webcam_motion

Tool->Manage File systemで、 camMotionDriver.be と autoexec.be をアップロードします。
be_upload.png

ここまでで、一旦リブートしましょう。
続いて、configuration->matter
Matter enableにチェックを入れてから「Save」します
image.png
自動リブートしたら、configuration->matter
Add to Configurationで Name = vmotion / Type = v.Occupancy のエンドポイント追加
vmotion.png
Matterデバイスとして参加できるようにするために Commissioning openにチェックを入れて「Save」します
image.png

HomeKitへの参加

Commissioning openの状態で Manual pairing codeが表示されます
image.png

以降、iPhoneのHomeアプリでデバイス追加していきます
IMG_7954.jpg
アクセサリを追加->その他のオプション->番号入力します
IMG_7955 - コピー.jpg

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

動作確認

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

参考

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

Discussion