In der folgenden Anleitung wird die Methode Beleuchtungs-App Beispiel aus dem Matter SDK zusammen mit einem M5Stack ESP32 Development Board.
Build-Umgebung einrichten
Klonen Sie zuerst das Matter-SDK.
In diesem Beispiel sehen wir uns die mindestens unterstützte Zusicherung für die Matter Release 5:
$ mkdir otaprep
$ cd otaprep
git clone https://github.com/project-chip/connectedhomeip.git
cd connectedhomeip
git fetch origin v1.0-branch
git checkout FETCH_HEAD
git submodule update --init --recursive
source ./scripts/activate.sh
Als Nächstes prüfen wir die im ESP32-GitHub-Workflow verwendete Version, welches Docker-Image am besten zu unserem Build passt:
$ cat .github/workflows/examples-esp32.yaml | grep chip-build | head -n 1
image: connectedhomeip/chip-build-esp32:0.5.99
Wir führen einen Container aus dem Docker-Image aus und übergeben die Flags, um die Matter SDK im Container und bietet Zugriff auf den ESP32-Gerät.
$ docker run --name container_name -it --user $(id -u):$(id -g) --mount source=$(pwd),target=/workspace,type=bind --device=/dev/ttyUSB0 connectedhomeip/chip-build-esp32:0.5.99 /bin/bash
Matter-Docker-Container beenden und starten
Bei jeder Ausführung eines docker run
-Befehls erstellen Sie einen neuen Container mit
das angegebene Bild. Dabei werden Ihre alten Daten, die auf einem
die vorherige Containerinstanz
verloren gegangen sind. Manchmal ist das das,
da Sie so mit einer neuen Installation beginnen können. Aber in dieser
Beispiel: Sie möchten Ihre Arbeits- und Umgebungskonfiguration
zwischen den Sitzungen.
user@host> docker stop container_name
Wenn Sie zur erneuten Ausführung bereit sind, starten Sie den Container und öffnen Sie ein Terminal Fenster:
user@host> docker start container_name
user@host> docker exec -it container_name /bin/bash
Mit den folgenden Methoden können Sie zusätzliche Terminalsitzungen für Ihren Container öffnen:
user@host> docker exec -it container_name /bin/bash
Oder starten Sie eine Root-Sitzung mit:
user@host> docker exec -u 0 -it container_name /bin/bash
SDK initialisieren
Initialisieren Sie im Container das Matter SDK und die ESP-IDF:
cd /workspace
git submodule update --init --recursive
source ./scripts/activate.sh
source /opt/espressif/esp-idf/export.sh
Build und Flash
Die nächste Aufgabe besteht darin, das Image zu erstellen und das Development Kit zu flashen, das OTA-Firmwareupdate für Matter.
Dazu müssen Sie ein Image erstellen.
Konfigurieren Sie zuerst den Build mit dem Dienstprogramm menuconfig
aus der ESP-IDF.
cd examples/lighting-app/esp32
idf.py menuconfig
Konfigurieren Sie im interaktiven Menü die folgenden Einstellungen:
Component config --->
CHIP Device Layer --->
Device Identification Options --->
Setze
Vendor ID
auf die von Connectivity Standards Alliance (Alliance) zugewiesene VID.Setze
Product ID
auf die PID, die du auf Matter eingestellt hast Integration in Google Home Developer Console.
Aktivieren Sie das Flag „OTA Requestor“:
Component config -->
CHIP Core -->
System options --->
Flag
[*] Enable OTA Requestor
für OTA-Anfragesteller aktivierenDrücken Sie zweimal die ESC, um zur obersten Menüebene zurückzukehren.
Aktivieren Sie das Flag Matter zur Erstellung von OTA-Images:
Component config -->
CHIP Device Layer --->
Matter OTA Image --->
[*] Generate OTA IMAGE
Legen Sie die Versionsnummer fest:
Application manager --->
[*] Get the project version from Kconfig
auswählenSetzen Sie
Project version (NEW)
auf1.0
.Drücken Sie s, um die Konfiguration zu speichern. Drücken Sie dann zweimal die Eingabetaste und dann q, Beenden Sie
menuconfig
.
Testzertifikate einrichten
Befolgen Sie die Schritte in Erstellen Sie Testzertifikate für Matter-Geräte, um CD-, DAC- und PAI-Zertifikate
Dein Gerät zusammenstellen
Führen Sie nun den Build aus und flashen Sie das Gerät:
idf.py build
idf.py -p /dev/ttyUSB0 erase_flash
idf.py -p /dev/ttyUSB0 flash
OTA-Image erstellen und hochladen
Ändern Sie nun die Build-Einstellungen erneut, um ein OTA-Image zu erstellen. Verwenden Sie die Methode dasselbe Image, aber mit erhöhter Versionsnummer.
Führen Sie menuconfig
aus.
idf.py menuconfig
Aktualisieren Sie im interaktiven Menü Folgendes:
Application manager --->
[*] Get the project version from Kconfig
auswählen- Setzen Sie
Project version (NEW)
auf2.0
. - Drücken Sie s, um die Konfiguration zu speichern. Drücken Sie dann zweimal die Eingabetaste und drücken Sie dann
q, um
menuconfig
zu beenden.
Erstellen Sie das Image und rufen Sie es ab. Im folgenden Beispiel sehen Sie sowohl den Standort
des Images für OTA und der Ausgabe beim Parsen mit dem ota_image_tool.py
.
cd build
/workspace/src/app/ota_image_tool.py show ./chip-lighting-app-ota.bin
Magic: 1beef11e
Total Size: 1243360
Header Size: 64
Header TLV:
[0] Vendor Id: XXXXX (0x000)
[1] Product Id: XXXXX (0x000)
[2] Version: 2 (0x2)
[3] Version String: v2.0
[4] Payload Size: 1243280 (0x12f890)
[8] Digest Type: 1 (0x1)
[9] Digest: e367f4d71e2ccd554b9a399c864abbf2c039382ef1def1b986fb2f59a99923a8
Da das Matter SDK von Ihrem Containerhost bereitgestellt wird, Das OTA-Image ist auf Ihrem Containerhost verfügbar.
Lade das OTA-Image auf Developer Console hoch. Folge dazu der Anleitung für OTA-Uploads.
Inbetriebnahme für Google Home und Beobachtung von Onlinereisebüros
Das Gerät muss über USB mit dem Linux-Hostcomputer verbunden sein. Die
Das folgende Beispiel zeigt die Verwendung von GNU screen
zum Lesen der Geräteprotokolle:
screen -L /dev/ttyUSB0 115200
Damit wird die Ausgabe des Geräts auf Ihrem Terminal angezeigt und der
Dieselbe Ausgabe in die Standard-Bildschirmprotokolldatei namens screenlog.0
.
Sie können die Datei screenlog.0
in einem anderen Texteditor öffnen oder in
eine andere Shell mit cat
, tail
, more
oder grep
.
Drücken Sie die rote Taste zum Zurücksetzen an der Seite des Geräts, um die Protokolle vom Start anzuzeigen.
In der Geräteausgabe sollten auch die zuvor festgelegte VID und PID zu sehen sein. als URL zu dem QR-Code-Bild ein, mit dem Sie das Gerät in Betrieb nehmen.
[0;32mI (2388) chip[DIS]: Advertise commission parameter vendorID=XXXXX productID=XXXX discriminator=3840/15 cm=1[0m
[0;32mI (1928) chip[SVR]: SetupQRCode: [MT:E59-000000000000000][0m
https://project-chip.github.io/connectedhomeip/qrcode.html?data=MT%3AE59-000000000000000
Vergewissere dich, dass dein Hub in deinem Zuhause online ist.
Gerät mit Google Home app (GHA) in Betrieb nehmen und dafür den QR-Code von auf den Link, der in der Protokolldatei angezeigt wird.
Lassen Sie das Gerät nach der Inbetriebnahme einige Minuten lang ohne Unterbrechung laufen.
Es sollte die Logausgabe in Bezug auf den OTA-Requestor, den Download von OTA-Images
und OTAImageProcessor
.
Nach der Installation des Images
stimmt mit der in die Konsole hochgeladenen Version überein und liegt nach dem
Kompilierungszeit, die beim ersten Start gemeldet wurde. Ausführung von grep
mit dem
Wenn du dem Muster im Regex-Modus in screenlog.0
folgst, ist das OTA-Problem illustriert.
process:
$ grep -E "(Compile time|OTA)" screenlog.0
I (76) boot: 1 otadata OTA data 01 00 0000f000 00002000
I (91) boot: 3 ota_0 OTA app 00 10 00020000 00177000
I (99) boot: 4 ota_1 OTA app 00 11 001a0000 00177000
I (645) cpu_start: Compile time: Oct 15 2022 06:21:59
I (135558) chip[SWU]: OTA Requestor received AnnounceOTAProvider
I (540658) chip[SWU]: OTA image downloaded to offset 0x1a0000
I (541348) OTAImageProcessor: Applying, Boot partition set offset:0x1a0000
I (76) boot: 1 otadata OTA data 01 00 0000f000 00002000
I (91) boot: 3 ota_0 OTA app 00 10 00020000 00177000
I (99) boot: 4 ota_1 OTA app 00 11 001a0000 00177000
I (645) cpu_start: Compile time: Oct 15 2022 07:35:31
I (76) boot: 1 otadata OTA data 01 00 0000f000 00002000
I (91) boot: 3 ota_0 OTA app 00 10 00020000 00177000
I (99) boot: 4 ota_1 OTA app 00 11 001a0000 00177000
I (645) cpu_start: Compile time: Oct 15 2022 07:35:31
Nach der ersten Ausführung können Sie die Schritte im Abschnitt
Erstelle ein OTA-Image und lade es hoch, ohne ein neues Image hochzuladen. Dieses Mal
die Versionen auf 1
zurücksetzen.
Führen Sie menuconfig
aus und führen Sie in den interaktiven Menüoptionen Folgendes aus:
Component config -->
CHIP Device Layer --->
Device Identification Options
Setzen Sie
Version String
aufv1.0
.Setzen Sie
Device Software Version Number
auf1
.Drücken Sie s, um die Konfiguration zu speichern, und dann q, um
menuconfig
zu beenden.
Entferne das Gerät aus deinem Zuhause in „GHA“.
Erstellen Sie das Image, falls noch nicht geschehen:
idf.py build
Flashen:
idf.py -p /dev/ttyUSB0 erase_flash
idf.py -p /dev/ttyUSB0 flash
Wiederholen Sie bei Bedarf die Schritte unter Inbetriebnahme für Google Home und beobachten Sie das Over-the-Air-Update (OTA).
OTA-Softwareupdate validieren
Die Gerätesoftwareversion kann über die Google Home App (GHA) geprüft werden. Nach der Inbetriebnahme eines Geräts gehen Sie so vor:
- Halte die Gerätekachel auf dem Hauptbildschirm von GHA lange gedrückt
- Tippe oben rechts auf das -Symbol.
- Tippen Sie auf Technische Daten.
- Prüfen Sie das Feld Softwareversion.