Poniższe instrukcje korzystają z aplikacja Oświetlenie przykład z pakietu SDK Matter z interfejsem M5Stack ESP32 platformy deweloperskiej.
Konfiguracja środowiska kompilacji
Najpierw skopiuj pakiet SDK Matter.
W tym przykładzie sprawdzamy minimalne obsługiwane zobowiązanie w przypadku Google Home: Matter, wersja 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
Następnie sprawdzamy wersję używaną w przepływie pracy GitHub ESP32, aby określić, który obraz Dockera najlepiej pasuje do naszej kompilacji:
$ cat .github/workflows/examples-esp32.yaml | grep chip-build | head -n 1
image: connectedhomeip/chip-build-esp32:0.5.99
Uruchamiamy kontener z obrazu Dockera, przekazując flagi umożliwiające Matter SDK w kontenerze i aby zapewnić dostęp do urządzenie ESP32.
$ 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
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 inicjujemy pakiet SDK Matter i identyfikator ESP IDF:
cd /workspace
git submodule update --init --recursive
source ./scripts/activate.sh
source /opt/espressif/esp-idf/export.sh
Tworzenie i flashowanie
Kolejne zadanie to utworzenie obrazu i uruchomienie pakietu deweloperskiego, który otrzymasz. aktualizacji oprogramowania OTA Matter.
W tym celu musisz utworzyć obraz.
Najpierw skonfiguruj kompilację za pomocą narzędzia menuconfig
z identyfikatora ESP IDF.
cd examples/lighting-app/esp32
idf.py menuconfig
W interaktywnym menu skonfiguruj te ustawienia:
Component config --->
CHIP Device Layer --->
Device Identification Options --->
Ustaw
Vendor ID
na swój identyfikator VID przypisany do Connectivity Standards Alliance (Alliance).Ustaw
Product ID
na identyfikator PID ustawiony na urządzeniu Matter w Google Home Developer Console.
Włącz flagę żądania OTA:
Component config -->
CHIP Core -->
System options --->
Włącz flagę żądania OTA
[*] Enable OTA Requestor
Naciśnij dwukrotnie ESC, aby powrócić do menu najwyższego poziomu.
Włącz flagę tworzenia obrazu OTA Matter:
Component config -->
CHIP Device Layer --->
Matter OTA Image --->
[*] Generate OTA IMAGE
Ustaw numer wersji:
Application manager --->
Wybierz
[*] Get the project version from Kconfig
Ustaw
Project version (NEW)
na1.0
Naciśnij s, aby zapisać konfigurację, naciśnij dwukrotnie s, a następnie s, aby wpisać zamknij:
menuconfig
.
Konfigurowanie certyfikatów testowych
Wykonaj czynności opisane w Utwórz certyfikaty testowe urządzeń Matter, aby je utworzyć Certyfikaty CD, DAC i PAI.
Skompiluj urządzenie
Teraz uruchom kompilację i zainstaluj urządzenie:
idf.py build
idf.py -p /dev/ttyUSB0 erase_flash
idf.py -p /dev/ttyUSB0 flash
Tworzenie i przesyłanie obrazu OTA
Teraz ponownie zmień ustawienia kompilacji, aby utworzyć obraz OTA. Użyj ten sam obraz, ale z zwiększonym numerem wersji.
Uruchom menuconfig
.
idf.py menuconfig
W interaktywnym menu zaktualizuj te elementy:
Application manager --->
- Wybierz
[*] Get the project version from Kconfig
- Ustaw
Project version (NEW)
na2.0
- Naciśnij s, aby zapisać konfigurację, naciśnij dwukrotnie s, a następnie naciśnij
q, aby wyjść z
menuconfig
.
Skompiluj i pobierz obraz. Poniższy przykład pokazuje zarówno lokalizację,
obrazu na potrzeby funkcji OTA oraz danych wyjściowych podczas analizowania za pomocą 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
Pakiet SDK Matter jest podłączony z hosta kontenera, obraz OTA jest dostępny na hoście kontenera.
Prześlij obraz OTA do Developer Console, wykonując instrukcje przesyłania OTA.
Komisję Google Home i obserwuj OTA.
Upewnij się, że urządzenie jest podłączone do hosta z systemem Linux przez USB.
Poniższy przykład pokazuje wykorzystanie programu GNU screen
do odczytu dzienników urządzenia:
screen -L /dev/ttyUSB0 115200
Spowoduje to wyświetlenie w terminalu danych wyjściowych urządzenia i zapisanie
w domyślnym pliku dziennika ekranu o nazwie screenlog.0
.
Możesz otworzyć plik screenlog.0
w innym edytorze tekstu lub wyświetlić go w
kolejną powłokę z atrybutami cat
, tail
, more
lub grep
.
Naciśnij czerwony przycisk resetowania z boku urządzenia, aby wyświetlić logi z rozruchu.
W danych wyjściowych urządzenia powinny być także ustawione wcześniej ustawienia VID i PID. jako adres URL obrazu z kodem QR, którego użyjesz do zlecania urządzenia.
[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
Upewnij się, że Hub jest online w domu.
Przekieruj urządzenie za pomocą: Google Home app (GHA), używając kodu QR z link widoczny w pliku dziennika.
Po uruchomieniu urządzenie powinno działać bez przerw przez kilka minut.
W dzienniku powinny pojawić się dane wyjściowe związane z żądaniem OTA, pobieraniem obrazów OTA,
i OTAImageProcessor
.
Po zainstalowaniu obrazu zwróć uwagę na czas kompilacji obrazu
odpowiada temu, który został przesłany do konsoli, i jest późniejszy niż
czas kompilacji zarejestrowany przy pierwszym uruchomieniu. Wykonuję polecenie grep
z
następujący wzorzec w trybie wyrażenia regularnego w witrynie screenlog.0
może ilustrować funkcję OTA
proces:
$ 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
Po pierwszym uruchomieniu możesz powtórzyć kroki z sekcji
Utwórz i prześlij obraz OTA bez przesyłania nowego obrazu. Tym razem
ustaw wersje z powrotem na 1
.
Uruchom menuconfig
i w interaktywnym menu wykonaj te czynności:
Component config -->
CHIP Device Layer --->
Device Identification Options
Ustaw
Version String
nav1.0
.Ustaw
Device Software Version Number
na1
.Naciśnij s, aby zapisać konfigurację, a następnie q, aby wyjść z
menuconfig
.
Usuń urządzenie z domu w aplikacji GHA.
Utwórz obraz, jeśli nie został jeszcze utworzony:
idf.py build
Flash-a:
idf.py -p /dev/ttyUSB0 erase_flash
idf.py -p /dev/ttyUSB0 flash
W razie potrzeby powtórz czynności opisane w artykule Prowizja do Google Home i obserwuj OTA.
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