W instrukcjach poniżej używamy aplikacji do oświetlenia z Matter pakietu SDK oraz płytki deweloperskiej Nordic nRF52840.
Konfiguracja środowiska
Te instrukcje dotyczą instalacji nRF Connect opartej na Dockerze. Jeśli nie chcesz używać Dockera, instrukcje instalacji nRF Connect na komputerze hosta znajdziesz na stronie Nordic.
Sprawdź pakiet SDK Matter
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
Sprawdź, czy używasz prawidłowego obrazu Dockera. Użyj jednego z obrazów utworzonych na potrzeby ciągłej integracji pakietu 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ź wyliczanie USB interfejsu szeregowego:
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 zebranych w poprzednim poleceniu. Przekaż flagi, aby zamontować w kontenerze folder pakietu SDK hosta Matter i interfejs szeregowy USB.
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
Za każdym razem, gdy uruchomisz polecenie docker run
, utworzysz nowy kontener z określonym obrazem. Gdy to zrobisz, utracisz stare dane zapisane w poprzedniej instancji kontenera. Czasami jest to pożądane, ponieważ umożliwia rozpoczęcie od nowej instalacji. W tym przykładzie prawdopodobnie chcesz jednak zapisać pracę i konfigurację środowiska między sesjami.
user@host> docker stop container_name
Gdy zechcesz ponownie uruchomić aplikację, uruchom kontener i otwórz okno terminala:
user@host> docker start container_name
user@host> docker exec -it container_name /bin/bash
Dodatkowe sesje terminala w kontenerze możesz otworzyć za pomocą tego polecenia:
user@host> docker exec -it container_name /bin/bash
Możesz też rozpocząć sesję z uprawnieniami roota, używając tego polecenia:
user@host> docker exec -u 0 -it container_name /bin/bash
Inicjowanie pakietu SDK
W kontenerze zainicjuj pakiet SDK Matter i zmienne środowiskowe dla zestawu narzędzi Nordic nRF52. Inicjowanie pakietu SDK Matter 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
Kompilowanie i flashowanie
Skonfiguruj identyfikator dostawcy (VID) i identyfikator produktu (PID) urządzenia:
cd examples/lighting-app/nrfconnect
west build -b nrf52840dk_nrf52840 -t menuconfig
W opcjach menu interaktywnego:
Modules --->
connectedhomeip --->
[*] Connected Home over IP protocol stack --->
Wpisz
Device vendor ID
(VID) iDevice product ID
(PID) w formacie liczby całkowitej w systemie dziesiętnym.Sprawdź, czy wybrana jest flaga
[*] Enable OTA requestor
.Naciśnij s, aby zapisać konfigurację, naciśnij Enter, aby potwierdzić, a następnie naciśnij q, aby wyjść z
menuconfig
.
Konfigurowanie certyfikatów testowych
Aby utworzyć certyfikaty CD, DAC i PAI, wykonaj czynności opisane w artykule Tworzenie certyfikatów testowych urządzeń Matter.
Tworzenie urządzenia
west build -b nrf52840dk_nrf52840
Flashowanie urządzenia
Wykonaj to na komputerze hosta, a nie w kontenerze Dockera.
Jeśli nie masz jeszcze narzędzi wiersza poleceń nRFConnect, pobierz je i zainstaluj.
user@host> nrfjprog --program build/zephyr/merged.hex --chiperase -f NRF52
Otwórz połączenie terminalowe z urządzeniem na hoście lub w kontenerze. Użyj ulubionego narzędzia terminalowego, np. minicom
lub GNU screen
.
user@host> minicom -c on -D /dev/ttyACM0 115200
user@host> screen /dev/ttyACM0 115200
Tworzenie i przesyłanie obrazu OTA
Po flashowaniu urządzenia ponownie 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 opcjach menu interaktywnego:
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 Enter, aby potwierdzić, a następnie naciśnij q, aby wyjść z
menuconfig
.
Utwórz nowy plik pakietu OTA Matter. Dane wyjściowe są umieszczane w pliku 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 pliku Matter pakietu OTA:
/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
Ponieważ Matter pakiet SDK jest zamontowany z hosta kontenera, obraz OTA jest też dostępny na tym hoście. Prześlij obraz OTA do Google Home Developer Console, postępując zgodnie z instrukcjami przesyłania OTA.
Uruchom urządzenie i obserwuj proces aktualizacji OTA.
Otwórz połączenie terminalowe z urządzeniem na hoście lub w kontenerze. Użyj ulubionego terminala, np. minicom
lub GNU screen
:
minicom -c on -D /dev/ttyACM0 115200
Naciśnij przycisk resetowania urządzenia, aby wyświetlić logi od momentu uruchomienia.
W danych wyjściowych urządzenia powinny być widoczne ustawione identyfikatory VID i PID oraz adres URL kodu QR do uruchomienia:
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
Sprawdź, czy Hub jest online, i przeprowadź konfigurację urządzenia za pomocą Google Home app (GHA), używając kodu QR z linku znalezionego w logu.
Po uruchomieniu pozostaw urządzenie, aby rejestrowało aktywności.
W dzienniku urządzenia powinien pojawić się ten 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 kompilacji obrazu powinien być taki sam jak w przypadku obrazu przesłanego do Developer Console.
Sprawdzenie aktualizacji oprogramowania OTA
Wersję oprogramowania urządzenia można sprawdzić w aplikacji Google Home (GHA). Po uruchomieniu urządzenia wykonaj te czynności:
- Przytrzymaj kafelek urządzenia na ekranie głównym GHA.
- W prawym górnym rogu kliknij ikonę .
- Kliknij Informacje techniczne.
- Sprawdź pole Wersja oprogramowania.