0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

MatterAdvent Calendar 2024

Day 21

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

Last updated at Posted at 2024-12-21

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経由でプログラムを書き込んだりターミナルで操作したりするツール)を調達します

ファームウェア作成

ファームウェアは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 をダウンロード

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/

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?