In der folgenden Anleitung wird das Beispiel der Beleuchtungs-App aus dem Matter SDK zusammen mit einem Nordic nRF52840-Entwicklungsboard verwendet.
Umgebung einrichten
Diese Anleitung basiert auf einer Docker-basierten Installation der nRF Connect-Toolchain. Wenn Sie Docker nicht verwenden möchten, finden Sie auf der Nordic-Website eine Anleitung zur nativen Installation von nRF Connect auf einem Hostcomputer.
Matter SDK ansehen
user@host> mkdir otaprep
user@host> cd otaprep
user@host> git clone https://github.com/project-chip/connectedhomeip.git
user@host> cd connectedhomeip/
user@host> git fetch origin v1.0-branch
user@host> git checkout FETCH_HEAD
Prüfen Sie, ob das richtige Docker-Image verwendet wird. Verwenden Sie eines der Images, die für die Continuous Integration des Matter SDK erstellt wurden.
user@host> cat .github/workflows/examples-nrfconnect.yaml | grep chip-build
image: connectedhomeip/chip-build-nrf-platform:0.5.99
Verbinden Sie das Nordic-Board mit dem Computer. Prüfen Sie die USB-Enumeration der seriellen Schnittstelle:
Unter macOS:
user@host> ls /dev/tty.usbmodem*
/dev/tty.usbmodem0123456789000
Unter Linux:
user@host> ls /dev/tty*AC*
/dev/ttyACM0
oder
user@host> ls /dev/tty*USB*
/dev/ttyUSB0
Führen Sie einen Container mit den Informationen aus dem vorherigen Befehl aus. Übergeben Sie die Flags, um den SDK-Ordner Matter des Hosts und die serielle USB-Schnittstelle im Container bereitzustellen.
user@host> docker run --name container_name -it --user $(id -u):$(id -g) --mount source=$(pwd),target=/workspace,type=bind connectedhomeip/chip-build-nrf-platform:0.5.99 /bin/bash
Matter-Docker-Container beenden und starten
Wenn Sie einen docker run-Befehl ausführen, wird ein neuer Container mit dem angegebenen Image erstellt. Dabei gehen Ihre alten Daten verloren, die in einer vorherigen Containerinstanz gespeichert wurden. Manchmal ist das genau das, was Sie wollen, weil Sie so mit einer Neuinstallation beginnen können. In diesem Beispiel möchten Sie Ihre Arbeit und Umgebungskonfiguration jedoch wahrscheinlich zwischen den Sitzungen speichern.
user@host> docker stop container_name
Wenn Sie bereit sind, den Container wieder auszuführen, starten Sie ihn und öffnen Sie ein Terminalfenster:
user@host> docker start container_name
user@host> docker exec -it container_name /bin/bash
Sie können 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 Umgebungsvariablen für die Nordic nRF52-Toolchain. Die Initialisierung des Matter SDK dauert oft mehrere Minuten.
cd /workspacegit submodule update --init --recursivesource ./scripts/bootstrap.shsource ./scripts/activate.shexport ZEPHYR_BASE=/opt/NordicSemiconductor/nrfconnect/zephyrexport GNUARMEMB_TOOLCHAIN_PATH="$PW_ARM_CIPD_INSTALL_DIR"scripts/run_in_build_env.sh "python3 scripts/setup/nrfconnect/update_ncs.py --update --shallow"source /opt/NordicSemiconductor/nrfconnect/zephyr/zephyr-env.shBuild erstellen und flashen
Konfigurieren Sie die VID und PID für das Gerät:
cd examples/lighting-app/nrfconnectwest build -b nrf52840dk_nrf52840 -t menuconfigIn den interaktiven Menüoptionen:
Modules --->connectedhomeip --->[*] Connected Home over IP protocol stack --->Geben Sie die
Device vendor ID(VID) und dieDevice product ID(PID) im Base-10-Ganzzahlformat ein.Achten Sie darauf, dass das Flag
[*] Enable OTA requestorausgewählt ist.Drücken Sie s, um die Konfiguration zu speichern, und Eingabe, um die Eingabe zu bestätigen. Drücken Sie dann q, um
menuconfigzu beenden.
Testzertifikate einrichten
Folge der Anleitung unter Matter-Gerätetestzertifikate erstellen, um CD-, DAC- und PAI-Zertifikate zu erstellen.
Gerät erstellen
west build -b nrf52840dk_nrf52840Gerät flashen
Dies geschieht auf dem Hostcomputer, nicht im Docker-Container.
Wenn Sie die nRFConnect-Befehlszeilentools noch nicht haben, laden Sie sie herunter und installieren Sie sie.
user@host> nrfjprog --program build/zephyr/merged.hex --chiperase -f NRF52
Stellen Sie eine Terminalverbindung zu Ihrem Gerät her, entweder auf dem Host oder im Container. Verwenden Sie Ihr bevorzugtes Terminaltool, z. B. minicom oder GNU screen.
user@host> minicom -c on -D /dev/ttyACM0 115200
user@host> screen /dev/ttyACM0 115200
OTA-Image erstellen und hochladen
Nachdem du dein Gerät geflasht hast, ändere die Build-Einstellungen noch einmal, um ein OTA-Image mit einer höheren Gerätesoftwareversion zu erstellen.
Starten Sie Zephyr menuconfig:
west build -b nrf52840dk_nrf52840 -t menuconfigIn den interaktiven Menüoptionen:
Modules -->connectedhomeip -->Connected Home over IP protocol stack -->Ändern Sie
Device Software Versionzu2.Ändern Sie
Device Software Version Stringzuprerelease-2.Drücken Sie s, um die Konfiguration zu speichern, und Eingabe, um den Vorgang zu bestätigen. Drücken Sie dann q, um
menuconfigzu beenden.
Erstelle die neue OTA-Bundle-Datei Matter. Die Ausgabe wird in build/zephyr/zephyr.bin platziert.
/workspace/src/app/ota_image_tool.py create -v hex_VID -p hex_PID -vn version_no -vs version_string path_to_binary -da digest_algorithm path_to_ota_filePrüfen Sie die Eigenschaften der generierten Matter-OTA-Bundle-Datei:
/workspace/examples/lighting-app/nrfconnect# /workspace/src/app/ota_image_tool.py show firmware-ota-update-test.binMagic: 1beef11e
Total Size: 951784
Header Size: 72
Header TLV:
[0] Vendor Id: XXXXX (0xXXXX)
[1] Product Id: 32768 (0x8000)
[2] Version: 2 (0x2)
[3] Version String: prerelease-2
[4] Payload Size: 951696 (0xe8590)
[8] Digest Type: 1 (0x1)
[9] Digest: 75f2e8b0c8e922b8bb3841504190bcdd83533e936a284c7254d29327d605c930
Da das Matter-SDK von Ihrem Containerhost bereitgestellt wird, ist das OTA-Image auch auf Ihrem Containerhost verfügbar. Lade das OTA-Image gemäß der Anleitung zum Hochladen von OTA-Images in den Google Home Developer Console hoch.
Nimm das Gerät in Betrieb und beobachte den OTA-Prozess.
Öffnen Sie eine Terminalverbindung zum Gerät, entweder auf dem Host oder im Container. Verwenden Sie Ihr bevorzugtes Terminal, z. B. minicom oder GNU screen:
minicom -c on -D /dev/ttyACM0 115200Drücken Sie die Taste zum Zurücksetzen des Geräts, um die Logs vom Bootvorgang zu sehen.
In der Geräteausgabe sollten die von dir festgelegte VID und PID sowie die URL für den QR-Code zur Inbetriebnahme angezeigt werden:
I: nRF5 802154 radio initialized
I: 4 Sectors of 4096 bytes
(...)
I: 681 [SVR]Server Listening...
I: 684 [DL]Device Configuration:
I: 687 [DL] Serial Number: 11223344556677889900
I: 692 [DL] Vendor Id: XXXXX (0xXXXX)
I: 695 [DL] Product Id: XXXXX (0xXXXX)
I: 699 [DL] Hardware Version: 0
I: 702 [DL] Setup Pin Code (0 for UNKNOWN/ERROR): 20202021
I: 708 [DL] Setup Discriminator (0xFFFF for UNKNOWN/ERROR): 3840 (0xF00)
I: 714 [DL] Manufacturing Date: (not set)
I: 718 [DL] Device Type: 65535 (0xFFFF)
I: 723 [SVR]SetupQRCode: [MT:6FCJ142C00KA0648G00]
I: 727 [SVR]Copy/paste the below URL in a browser to see the QR Code:
I: 733 [SVR]https://project-chip.github.io/connectedhomeip/qrcode.html?data=MT%000000000000000000000
I: 742 [SVR]Manual pairing code: [30900112302]
I: 747 [DL]CHIP task running
I: 752 [DL]CHIPoBLE advertising started
I: 757 [DL]NFC Tag emulation started
Achte darauf, dass dein Hub online ist, und nimm das Gerät mit dem Google Home app (GHA) in Betrieb. Verwende dazu den QR-Code, den du über den Link im Protokoll findest.
Lassen Sie das Gerät nach der Inbetriebnahme seine Aktivitäten protokollieren.
Im Geräteprotokoll sollte der folgende Text angezeigt werden:
/* Hub OTA provider identification */
I: 69642 [SWU]OTA Requestor received AnnounceOTAProvider
D: 69647 [SWU] FabricIndex: 1
D: 69649 [SWU] ProviderNodeID: 0x00000000XXXXXXXX
D: 69654 [SWU] VendorID: 0x6006
D: 69657 [SWU] AnnouncementReason: 0
D: 69660 [SWU] Endpoint: 2
...
D: 69799 [SWU]Establishing session to provider node ID 0x00000000FC843D94 on fabric index 1
...
D: 262265 [SWU]QueryImageResponse:
D: 262268 [SWU] status: 0
D: 262271 [SWU] imageURI: bdx://00000000FC843D94/37f09fd6-0000-0000-0000-000000000000
D: 262278 [SWU] softwareVersion: 2
D: 262281 [SWU] softwareVersionString: 2
D: 262285 [SWU] updateToken: 36
D: 262288 [SWU] userConsentNeeded: 0
D: 262292 [SWU]Update available from version 0 to 2
...
D: 262372 [SWU]Establishing session to provider node ID 0x00000000FC843D94 on fabric index 1
...
D: 262409 [SWU]BDX::SendMessage
Nachdem das Image angewendet wurde, wird das Gerät neu gestartet. Nach dem Neustart sollte die Kompilierungszeit des Images mit der des in Developer Console hochgeladenen Images übereinstimmen.
OTA-Softwareupdate validieren
Die Softwareversion des Geräts kann in der Google Home App (GHA) geprüft werden. Nachdem ein Gerät in Betrieb genommen wurde, gehe so vor:
- Drücke auf dem Hauptbildschirm von GHA lange auf die Gerätekachel.
- Tippen Sie oben rechts auf das Symbol .
- Tippe auf Technische Informationen.
- Prüfe das Feld Softwareversion.