Poniższe instrukcje korzystają z aplikacja Oświetlenie przykład z pakietu Matter SDK i NRF52840 w połączeniu z NRF52840 platformy deweloperskiej.
Konfiguracja środowiska
Te instrukcje dotyczą instalacji opartej na Dockerze nRF Connect, z łańcuchem narzędzi. Jeśli nie chcesz używać Dockera, instrukcje instalowania nRF Natywne łączenie się z komputera hosta w witrynie skandynawskiej.
Sprawdź pakiet Matter SDK
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
Wybierz odpowiedni obraz Dockera, którego chcesz użyć. Użyj jednego z obrazów utworzonych dla ciągłą integrację z pakietem SDK Matter.
user@host> cat .github/workflows/examples-nrfconnect.yaml | grep chip-build
image: connectedhomeip/chip-build-nrf-platform:0.5.99
Podłącz tablicę Nordic do komputera. Sprawdź wyliczenie USB jego interfejs szeregowy:
W systemie macOS:
user@host> ls /dev/tty.usbmodem*
/dev/tty.usbmodem0123456789000
W systemie Linux:
user@host> ls /dev/tty*AC*
/dev/ttyACM0
lub
user@host> ls /dev/tty*USB*
/dev/ttyUSB0
Uruchom kontener, korzystając z informacji zgromadzonych w poprzednim poleceniu. Powodzenie flagi do podłączania folderu pakietu SDK Matter hosta i pamięci USB; do kontenera.
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
Zatrzymywanie i uruchamianie kontenera Dockera Matter
Każde uruchomienie polecenia docker run
powoduje utworzenie nowego kontenera
określonego obrazu. Stare dane, które zostały zapisane na
poprzednia instancja kontenera zostanie utracona. Czasem tak właśnie chcesz
ponieważ umożliwia rozpoczęcie od nowa instalacji. Ale w tym
przykład, w którym najprawdopodobniej chcesz zapisać konfigurację miejsca pracy i środowiska
między sesjami.
user@host> docker stop container_name
Gdy uznasz, że chcesz uruchomić ponownie, uruchom kontener i otwórz terminal okno:
user@host> docker start container_name
user@host> docker exec -it container_name /bin/bash
Możesz otworzyć dodatkowe sesje terminala w kontenerze, używając:
user@host> docker exec -it container_name /bin/bash
Możesz też rozpocząć sesję główną za pomocą:
user@host> docker exec -u 0 -it container_name /bin/bash
Inicjowanie pakietu SDK
W kontenerze zainicjuj pakiet SDK Matter oraz zmiennych środowiskowych dla łańcucha narzędzi Nordic nRF52, Matter Inicjowanie pakietu SDK często trwa kilka minut.
$ cd /workspace
$ git submodule update --init --recursive
$ source ./scripts/bootstrap.sh
$ source ./scripts/activate.sh
$ export ZEPHYR_BASE=/opt/NordicSemiconductor/nrfconnect/zephyr
$ export 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.sh
Tworzenie i Flash
Skonfiguruj VID i PID urządzenia:
$ cd examples/lighting-app/nrfconnect
$ west build -b nrf52840dk_nrf52840 -t menuconfig
W interaktywnym menu:
Modules --->
connectedhomeip --->
[*] Connected Home over IP protocol stack --->
Wpisz
Device vendor ID
(VID) iDevice product ID
(PID) w formacie base10. w formacie liczby całkowitej.Sprawdź, czy wybrana jest flaga
[*] Enable OTA requestor
.Naciśnij s, aby zapisać konfigurację, naciśnij s, aby potwierdzić, a następnie q, aby wyjść z
menuconfig
.
Konfigurowanie certyfikatów testowych
Wykonaj czynności opisane w artykule Tworzenie certyfikatów testowych urządzenia Matter. do tworzenia certyfikatów CD, DAC i PAI.
Skompiluj urządzenie
$ west build -b nrf52840dk_nrf52840
Flash urządzenia
Należy to zrobić na komputerze hosta, a nie w kontenerze Dockera.
Jeśli nie masz jeszcze narzędzi wiersza poleceń nRFConnect, pobierz je zainstalować.
user@host> nrfjprog --program build/zephyr/merged.hex --chiperase -f NRF52
Otwórz połączenie z terminalem urządzenia na stronie hosta lub
kontenera. Użyj ulubionego narzędzia terminala, takiego jak minicom
czy GNU screen
.
user@host> minicom -c on -D /dev/ttyACM0 115200
user@host> screen /dev/ttyACM0 115200
Utwórz i prześlij obraz OTA
Po zainstalowaniu aktualizacji urządzenia jeszcze raz zmień ustawienia kompilacji, aby utworzyć obraz OTA ze zwiększoną wersją oprogramowania urządzenia.
Uruchom Zephyr menuconfig
:
$ west build -b nrf52840dk_nrf52840 -t menuconfig
W interaktywnym menu:
Modules -->
connectedhomeip -->
Connected Home over IP protocol stack -->
Zmień
Device Software Version
na2
.Zmień
Device Software Version String
naprerelease-2
.Naciśnij s, aby zapisać konfigurację, naciśnij s, aby potwierdzić, a następnie q, aby wyjść z
menuconfig
.
Utwórz nowy plik pakietu OTA Matter. Dane wyjściowe są umieszczane
w usłudze build/zephyr/zephyr.bin
.
$ /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_file
Potwierdź właściwości wygenerowanego pakietu OTA Matter plik:
/workspace/examples/lighting-app/nrfconnect# /workspace/src/app/ota_image_tool.py show firmware-ota-update-test.bin
Magic: 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
Pakiet SDK Matter jest podłączony z hosta kontenera, obraz OTA jest też dostępny na hoście kontenera. Prześlij obraz OTA do Google Home Developer Console, postępując zgodnie z przesyłaniem OTA instrukcje.
Uruchom urządzenie i obserwuj proces OTA.
Otwórz połączenie z terminalem urządzenia na hoście lub w
kontenera. Użyj ulubionego terminala, takiego jak minicom
lub GNU screen
:
$ minicom -c on -D /dev/ttyACM0 115200
Naciśnij przycisk resetowania urządzenia, aby wyświetlić logi z rozruchu.
W danych wyjściowych urządzenia powinny być widoczne ustawione przez Ciebie identyfikatory VID i PID oraz URL kodu QR uruchamiania:
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
Upewnij się, że centrum jest online, i uruchom urządzenie za pomocą Google Home app (GHA) za pomocą kodu QR z linku znalezionego w dzienniku.
Po uruchomieniu urządzenia pozostaw rejestrowanie aktywności.
W dzienniku urządzenia powinien pojawić się następujący tekst:
/* 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
Po zastosowaniu obrazu urządzenie uruchomi się ponownie. Po ponownym uruchomieniu czas kompilowania obrazu powinno być takie samo jak zdjęcie przesłane do Developer Console
Sprawdzanie aktualizacji oprogramowania OTA
Wersję oprogramowania urządzenia można sprawdzić w aplikacji Google Home (GHA). Po oddaniu urządzenia do użytku wykonaj te czynności:
- Przytrzymaj kafelek urządzenia na ekranie głównym aplikacji GHA
- W prawym górnym rogu kliknij ikonę .
- Kliknij Informacje techniczne.
- Sprawdź pole Wersja oprogramowania