En las siguientes instrucciones, se usa el app de iluminación ejemplo del SDK de Matter junto con una nRF52840 nórdica de desarrollo de aplicaciones.
Configuración del entorno
Estas instrucciones se basan en una instalación basada en Docker del nRF Connect de la cadena de herramientas. Si prefieres no usar Docker, sigue las instrucciones para instalar nRF. si se conectan de forma nativa en una computadora host, en el sitio nórdico.
Descubre el SDK de 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
Verifica la imagen de Docker correcta que se usará. Utiliza una de las imágenes creadas para la integración continua del SDK de Matter.
user@host> cat .github/workflows/examples-nrfconnect.yaml | grep chip-build
image: connectedhomeip/chip-build-nrf-platform:0.5.99
Conecta la placa nórdica a la computadora. Comprueba la enumeración USB de su interfaz en serie:
En macOS:
user@host> ls /dev/tty.usbmodem*
/dev/tty.usbmodem0123456789000
En Linux, realiza una de estas dos acciones:
user@host> ls /dev/tty*AC*
/dev/ttyACM0
o
user@host> ls /dev/tty*USB*
/dev/ttyUSB0
Ejecuta un contenedor con la información recopilada en el comando anterior. Aprobado las marcas para activar la carpeta del SDK Matter del host y la interfaz USB interfaz en serie en el contenedor.
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
Detén e inicia el contenedor de Docker de Matter
Cada vez que ejecutes un comando docker run
, crearás un contenedor nuevo con
la imagen especificada. Cuando haces esto, tus datos antiguos, que se guardaron en una
instancia de contenedor anterior, se pierde. A veces, esto es lo que quieres
ya que te permite comenzar con una instalación nueva. Pero en esta
ejemplo, es probable que quieras guardar tu trabajo y la configuración del entorno
entre sesiones.
user@host> docker stop container_name
Cuando esté todo listo para volver a ejecutarlo, inicia el contenedor y abre una terminal ventana:
user@host> docker start container_name
user@host> docker exec -it container_name /bin/bash
Puedes abrir sesiones de terminal adicionales en tu contenedor con el siguiente comando:
user@host> docker exec -it container_name /bin/bash
O inicia una sesión raíz con:
user@host> docker exec -u 0 -it container_name /bin/bash
Inicializa el SDK
En el contenedor, inicializa el SDK de Matter y el variables de entorno para la cadena de herramientas nRF52 de los países nórdicos. El La inicialización del SDK de Matter suele tardar varios minutos.
$ 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
Compila y escribe en la memoria flash
Configura los VID y PID del dispositivo:
$ cd examples/lighting-app/nrfconnect
$ west build -b nrf52840dk_nrf52840 -t menuconfig
En las opciones del menú interactivo:
Modules --->
connectedhomeip --->
[*] Connected Home over IP protocol stack --->
Ingresa el
Device vendor ID
(VID) y elDevice product ID
(PID) en base 10 de números enteros.Asegúrate de que la marca
[*] Enable OTA requestor
esté seleccionada.Presiona s para guardar la configuración, Intro para confirmar y, luego, q para salir de
menuconfig
.
Configurar certificados de prueba
Sigue los pasos que se indican en Cómo crear certificados de prueba de dispositivos Matter. para crear certificados de CD, DAC y PAI.
Compila tu dispositivo
$ west build -b nrf52840dk_nrf52840
Cómo escribir en la memoria flash del dispositivo
Esto se hace en la computadora host, no en el contenedor de Docker.
Si aún no tienes las herramientas de línea de comandos nRFConnect, descarga y instalarlos.
user@host> nrfjprog --program build/zephyr/merged.hex --chiperase -f NRF52
Abre una conexión terminal en tu dispositivo, ya sea en el host
contenedor. Usa tu herramienta de terminal favorita, como minicom
o screen
de GNU.
user@host> minicom -c on -D /dev/ttyACM0 115200
user@host> screen /dev/ttyACM0 115200
Crea y sube imágenes OTA
Cuando hayas instalado tu dispositivo, vuelve a cambiar la configuración de compilación para crear una una imagen inalámbrica con una versión incrementada de software del dispositivo.
Inicia Zephyr menuconfig
:
$ west build -b nrf52840dk_nrf52840 -t menuconfig
En las opciones del menú interactivo:
Modules -->
connectedhomeip -->
Connected Home over IP protocol stack -->
Cambia
Device Software Version
por2
.Cambia
Device Software Version String
porprerelease-2
.Presiona s para guardar la configuración, Intro para confirmar y, luego, q para salir de
menuconfig
.
Compila el nuevo archivo de paquete de OTA Matter. Se coloca el resultado
en 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
Confirma las propiedades de tu paquete inalámbrico de Matter generado archivo:
/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
Debido a que el SDK de Matter se activa desde el host del contenedor, la imagen OTA también está disponible en el host del contenedor. Sube la imagen OTA al Google Home Developer Console siguiendo los pasos de la carga OTA instrucciones.
Pon en marcha el dispositivo y observa el proceso de actualización inalámbrica.
Abre una conexión de terminal al dispositivo, ya sea en el host
contenedor. Usa tu terminal favorita, como minicom
o screen
de GNU:
$ minicom -c on -D /dev/ttyACM0 115200
Presiona el botón de restablecimiento del dispositivo para ver los registros desde el inicio.
En el resultado del dispositivo, deberías ver el VID y el PID que estableciste, así como la URL del código QR de comisión:
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
Asegúrate de que la unidad central esté en línea y encargue el dispositivo con la Google Home app (GHA) con el código QR del vínculo que se encuentra en el registro.
Deja el dispositivo registrando sus actividades después de la puesta en marcha.
Deberías ver el siguiente texto en el registro del dispositivo:
/* 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
Después de aplicar la imagen, el dispositivo se reiniciará. Después del reinicio, el tiempo de compilación de la imagen debe coincidir con la que se subió al Developer Console
Valida la actualización de software OTA
Puedes consultar la versión de software del dispositivo con la app de Google Home (GHA). Una vez que se pone en marcha un dispositivo, sigue estos procedimientos:
- Mantén presionada la tarjeta del dispositivo en la pantalla principal de GHA
- Presiona el ícono en la parte superior derecha
- Presiona Información técnica.
- Verifica el campo Versión de software.