Prueba de manera inalámbrica en países nórdicos

En las siguientes instrucciones, se usa el ejemplo de la app de iluminación del SDK Matterjunto con una placa de desarrollo Nordic nRF52840.

Configuración del entorno

Estas instrucciones se basan en una instalación basada en Docker de la cadena de herramientas de nRF Connect. Si prefieres no usar Docker, puedes encontrar instrucciones para instalar nRF Connect de forma nativa en una computadora host están en el sitio de Nordic.

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 que se use la imagen de Docker correcta. Usa una de las imágenes creadas para la integración continua del SDK Matter.

user@host> cat .github/workflows/examples-nrfconnect.yaml | grep chip-build
            image: connectedhomeip/chip-build-nrf-platform:0.5.99

Conecta la placa de Nordic a la computadora. Verifica la enumeración USB de su interfaz serial:

En macOS:

user@host> ls /dev/tty.usbmodem*
/dev/tty.usbmodem0123456789000

En Linux, haz lo siguiente:

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. Pasa las marcas para activar la carpeta del SDK Matterde Matter del host y la interfaz serial USB 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 ejecutas un comando docker run, creas un contenedor nuevo con la imagen especificada. Cuando lo haces, se pierden los datos antiguos, que se guardaron en una instancia de contenedor anterior. A veces, esto es lo que quieres que suceda, ya que te permite comenzar con una instalación nueva. Sin embargo, en este ejemplo, es probable que desees guardar tu trabajo y la configuración del entorno entre sesiones.

user@host> docker stop container_name

Cuando estés listo para volver a ejecutar, inicia el contenedor y abre una ventana de terminal:

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 lo siguiente:

user@host> docker exec -it container_name /bin/bash

O inicia una sesión raíz con lo siguiente:

user@host> docker exec -u 0 -it container_name /bin/bash

Inicializa el SDK

En el contenedor, inicializa el Matter SDK y las variables de entorno para la cadena de herramientas de Nordic nRF52. La Matter inicialización del SDK 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

Compilación y escritura en la memoria flash

Configura el VID y el PID del dispositivo:

cd examples/lighting-app/nrfconnect
west build -b nrf52840dk_nrf52840 -t menuconfig

En las opciones del menú interactivo, haz lo siguiente:

  1. Modules --->

  2. connectedhomeip --->

  3. [*] Connected Home over IP protocol stack --->

  4. Ingresa el Device vendor ID (VID) y el Device product ID (PID) en formato de número entero base 10.

  5. Asegúrate de que esté seleccionada la marca [*] Enable OTA requestor.

  6. Presiona s para guardar la configuración, Intro para confirmar y, luego, q para salir de menuconfig.

Configura certificados de prueba

Sigue los pasos que se indican en Crea 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 de nRFConnect, descárgalas y luego, instálalas.

user@host> nrfjprog --program build/zephyr/merged.hex --chiperase -f NRF52

Abre una conexión de terminal a tu dispositivo en el host o en el contenedor. Usa tu herramienta de terminal favorita, como minicom o GNU screen.

user@host> minicom -c on -D /dev/ttyACM0 115200
user@host> screen /dev/ttyACM0 115200

Crea y sube una imagen OTA

Una vez que hayas escrito en la memoria flash del dispositivo, vuelve a cambiar la configuración de compilación para crear una imagen OTA con una versión de software del dispositivo incrementada.

Inicia Zephyr menuconfig:

west build -b nrf52840dk_nrf52840 -t menuconfig

En las opciones del menú interactivo, haz lo siguiente:

  1. Modules -->

  2. connectedhomeip -->

  3. Connected Home over IP protocol stack -->

  4. Cambia Device Software Version a 2.

  5. Cambia Device Software Version String a prerelease-2.

  6. Presiona s para guardar la configuración, Intro para confirmar y, luego, q para salir de menuconfig.

Compila el nuevo Matter archivo de paquete OTA. El resultado se coloca 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 del archivo de paquete OTA de MatterMatter generado:

/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 Matter se activa desde el host del contenedor, la imagen OTA también está disponible en el host del contenedor. Para subir la imagen OTA a la Google Home Developer Console siguiendo las instrucciones de carga de OTA.

Comisiona el dispositivo y observa el proceso de OTA.

Abre una conexión de terminal al dispositivo en el host o en el contenedor. Usa tu terminal favorita, como minicom o GNU screen:

minicom -c on -D /dev/ttyACM0 115200

Presiona el botón de restablecimiento del dispositivo para ver los registros del arranque.

En el resultado del dispositivo, deberías ver el VID y el PID que configuraste, 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 tu Hub esté en línea y comisiona el dispositivo con el Google Home app (GHA) usando el código QR del vínculo que se encuentra en el registro.

Deja que el dispositivo registre sus actividades después de la comisión.

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 reinicia. Después del reinicio, el tiempo de compilación de la imagen debe coincidir con el de la imagen subida a la Developer Console.

Valida la actualización de software OTA

La versión de software del dispositivo se puede verificar con la app de Google Home (GHA). Una vez que se comisiona un dispositivo, sigue estos procedimientos:

  1. Mantén presionada la tarjeta del dispositivo en la pantalla principal de GHA.
  2. Presiona el ícono en la esquina superior derecha.
  3. Presiona Información técnica.
  4. Verifica el campo Versión de software.

Pantalla de la app de Google Home que muestra el campo de la versión de software