Cómo compilar un dispositivo Matter

1. Introducción

Matter es un protocolo de conectividad que ofrece oportunidades interesantes para el desarrollo de dispositivos inteligentes. En este codelab, compilarás tu primer dispositivo Matter. Para obtener más información sobre Matter, visita el Centro para desarrolladores de Google Home: Matter o el sitio web de Connectivity Standards Alliance.

Qué aprenderás

  • Cómo integrar un dispositivo físico con Matter
  • Cómo poner en funcionamiento y controlar tu dispositivo Matter con Google Home

Requisitos

2. Configura tu entorno

Identifica el dispositivo serial

El primer paso para configurar tu entorno de desarrollo es determinar a qué puerto serie está conectado tu dispositivo. Esta información te permitirá programar e interactuar con tu placa de desarrollo.

  1. Conecta la placa de desarrollo a la computadora con un cable USB.
  2. Busca el dispositivo de la placa de desarrollo en el sistema de archivos /dev. Puedes limitar la búsqueda especificando el prefijo del dispositivo de la placa de desarrollo. El ESP32 de Espressif usa /dev/ttyUSBx:
    user@host $ ls /dev/ttyUSB*
    /dev/ttyUSB0
    

Configura tu concentrador

Configura tu concentrador con la misma Cuenta de Google que piensas usar para este codelab.

Configura tu entorno de desarrollo

Requisitos previos

Estas instrucciones se probaron en Debian Linux y deberían funcionar en la mayoría de las distribuciones Linux basadas en Debian, incluido Ubuntu. Si trabajas con una distribución de Linux diferente, el procedimiento de configuración de dependencias puede variar con respecto a lo que se indica a continuación.

Instala dependencias

Ejecuta el siguiente comando para instalar los archivos binarios de los paquetes de Linux requeridos que tal vez aún no estén instalados:

$ sudo apt-get install git gcc g++ pkg-config libssl-dev libdbus-1-dev \
libglib2.0-dev libavahi-client-dev ninja-build python3-venv python3-dev \
python3-pip unzip libgirepository1.0-dev libcairo2-dev libreadline-dev screen

Configura el SDK

Para continuar con este codelab, necesitarás el SDK de Espressif (el marco de desarrollo de IoT de Espressif o "ESP-IDF").

  1. Crea un directorio para contener el ESP-IDF:
    $ mkdir ~/esp-idf_tools
    
  2. Clona el ESP-IDF desde GitHub en este directorio:
    $ cd ~/esp-idf_tools
    $ git clone -b v4.4.3 --recursive https://github.com/espressif/esp-idf.git
    
  3. Completa la instalación de la cadena de herramientas:
    $ cd ./esp-idf
    $ ./install.sh
    $ cd ~/
    

Configura el SDK de Matter

  1. Clona el repositorio de Matter de código abierto:
    $ git clone https://github.com/project-chip/connectedhomeip.git
    $ cd ./connectedhomeip
    $ git fetch origin v1.0-branch
    $ git checkout FETCH_HEAD
    
  2. Recupera los submódulos del repositorio:
    $ ./scripts/checkout_submodules.py --shallow --platform esp32
    
  3. Inicia el entorno de desarrollo de Matter:
    $ source ./scripts/bootstrap.sh
    

3. Consola para desarrolladores de Google Home

La Consola para desarrolladores de Google Home es la aplicación web en la que administras tus integraciones de Matter con Google Home.

Cualquier dispositivo Matter que haya aprobado la certificación de Matter de Connectivity Standards Alliance (Alliance) funciona en el ecosistema de Google Home. Los dispositivos en desarrollo que no se certificaron se pueden poner en funcionamiento en el ecosistema de Google Home bajo ciertas condiciones. Consulta Restricciones de vinculación para obtener más información.

Crea un proyecto de desarrollador

Para comenzar, ve a Google Home Developer Console:

  1. Haz clic en Crear proyecto.
  2. Ingresa un nombre único para el proyecto y, luego, haz clic en Crear proyecto. Diálogo de creación de proyecto nuevo
  3. Haz clic en + Agregar integración, que te llevará a la pantalla Recursos de Matter, donde podrás ver la documentación de desarrollo de Matter y leer sobre algunas herramientas.
  4. Cuando esté todo listo para continuar, haz clic en Siguiente: Desarrollo, que muestra la página Lista de tareas de Matter.
  5. Haz clic en Siguiente: Configuración.
  6. En la página Configuración, ingresa el Nombre del producto.
  7. Haz clic en Seleccionar el tipo de dispositivo y elige el tipo de dispositivo en el menú desplegable (en este caso, Light).
  8. En ID de proveedor (VID), selecciona VID de prueba y, luego, 0xFFF1 en el menú desplegable VID de prueba. En ID del producto (PID), ingresa 0x8000 y haz clic en Guardar y continuar y, luego, en Guardar en la página siguiente. Usa estos valores exactos de VID/PID, ya que los pasos posteriores del codelab dependen de ellos.
    Configura un proyecto
  9. Ahora verás tu integración en Integraciones de Matter.
  10. Reinicia la unidad central para asegurarte de que reciba la configuración del proyecto de integración de Matter más reciente. Si debes cambiar el VID o el PID más adelante, también deberás reiniciar el dispositivo después de guardar el proyecto para que el cambio se aplique. Consulta Cómo reiniciar los dispositivos Google Nest o Google Wifi para obtener instrucciones paso a paso sobre el reinicio.

4. Cómo construir el dispositivo

Todos los ejemplos de Matter se encuentran en la carpeta de ejemplos del repositorio de GitHub. Hay varias muestras disponibles, pero en este codelab nos centraremos en lighting-app.

Este ejemplo es un dispositivo simple que aparece en Google Home como una luz de encendido/apagado y responde a los comandos de encendido y apagado. Hacer que controle una luz eléctrica real está fuera del alcance de este codelab.

Configura la compilación

  1. Configura el SDK de Matter y activa el entorno de compilación de Matter:
    $ cd ~/esp-idf_tools/esp-idf
    $ source export.sh
    $ cd ~/connectedhomeip
    $ source ./scripts/activate.sh
    
  2. Habilita Ccache, que acelera el proceso de compilación:
    $ export IDF_CCACHE_ENABLE=1
    
  3. Ve al directorio de compilación de lighting-app ESP32 y configura la arquitectura de destino:
    $ cd ./examples/lighting-app/esp32
    $ idf.py set-target esp32
    
    1. Ejecuta la utilidad de configuración:
      $ idf.py menuconfig
      
    2. Selecciona Demo -> Device Type y establece Device Type en ESP32-DevKitC.
    3. Presiona la tecla de flecha hacia la izquierda para volver al menú de nivel superior.
    4. Selecciona Component config --->.
    5. Selecciona CHIP Device Layer --->.
    6. Selecciona Device Identification Options --->.
    7. Establece Vendor ID en el VID asignado por la alianza o en un VID de prueba.
    8. Establece Product ID en el PID que configuraste en la integración de Matter en la consola para desarrolladores de Google Home.
    9. Presiona S para guardar.
    10. Presiona Intro para aceptar la ruta de acceso predeterminada en la que se guardará la configuración.
    11. Presiona Return para descartar el diálogo de confirmación de guardado.
    12. Presiona Q para salir de la utilidad de configuración.

Ejecuta la compilación

Invoca la secuencia de comandos de compilación:

idf.py build

La compilación debería completarse sin errores.

Programa el dispositivo

  1. Conecta la placa de desarrollo a la computadora con un cable USB.
  2. Borra cualquier firmware anterior del dispositivo (si solo tienes una placa para desarrolladores conectada a tu computadora, puedes omitir la opción -p {device}; el dispositivo se detectará automáticamente):
    idf.py -p {device} erase-flash
    
  3. Copia tu nueva aplicación en la placa de desarrollo con el siguiente comando:
    idf.py -p {device} flash
    

Puedes encontrar más información sobre las opciones de escritura en la página de documentación de esptool.py de Espressif.

5. Conéctate al dispositivo

  1. Abre una ventana de terminal.
  2. Toma nota del directorio en el que te encuentras y, luego, conéctate a tu nuevo dispositivo Matter con screen de GNU:
    $ screen -L {device} 115200
    
  3. Si ves una consola en blanco, presiona el botón RESET para iniciar el proceso de arranque del dispositivo.

6. Cómo poner en funcionamiento el dispositivo

Nota: Este paso solo se completará correctamente si ya configuraste tu proyecto en Google Home Developer Console.

Nest Hub

Se requiere una unidad central para poner en funcionamiento tu dispositivo en la estructura de Matter. Este es un dispositivo Google Nest, como el Nest Hub (2ª gen.), que admite Matter y que funcionará como router de borde para los dispositivos compatibles con Thread y como ruta de cumplimiento local para enrutar las intenciones de casa inteligente.

Consulta esta lista para ver qué concentradores admiten Matter.

Antes de comenzar el proceso de puesta en marcha, verifica lo siguiente:

  • Tu concentrador está vinculado a la misma Cuenta de Google que usaste para acceder a Google Home Console.
  • El concentrador está en la misma red Wi-Fi que la computadora que usas para ejecutar tu dispositivo virtual de Matter.
  • El dispositivo central está en la misma estructura que usas en la app de Google Home (la "casa" en el Google Home Graph representa tu estructura).

Cómo vincular el dispositivo

Sigue las instrucciones de vinculación del ESP32 para vincular tu dispositivo.

Nota: Si usas un M5STACK, ten en cuenta que la pantalla permanecerá en blanco después de que se escriba el firmware, por lo que deberás ver el código QR con la URL que aparece en la consola. También puedes escribir el código de vinculación manual.

Ejemplo de resultado de la consola que muestra la URL del código QR:

I (1926) chip[DL]: Done driving station state, nothing else to do...
I (1936) chip[SVR]: SetupQRCode: [MT:X.XXXXXXXXXXXXXXXXX]
I (1936) chip[SVR]: Copy/paste the below URL in a browser to see the QR Code:
I (1946) chip[SVR]: https://project-chip.github.io/connectedhomeip/qrcode.html?data=MT%3XX.KXXXXXXXXXXXXXXXX
I (1956) chip[SVR]: Manual pairing code: [XXXXXXXXXXX]]

Solución de problemas

Falla en la puesta en servicio

Para obtener más sugerencias de solución de problemas, consulta la página de solución de problemas de Matter.

7. Controlar el dispositivo

Una vez que el dispositivo compatible con Matter se haya puesto en funcionamiento correctamente y aparezca en la app de Google Home como una bombilla, puedes intentar controlarlo con el Asistente de Google, la app de Google Home o el simulador del Asistente de Google en la extensión de Google Home para VS Code.

Asistente de Google

Usa Asistente de Google en tu teléfono o dispositivo central para alternar el estado del dispositivo con comandos por voz, como "Hey Google, alterna mis luces".

Consulta la sección Cómo controlar los dispositivos inteligentes para la casa con comandos por voz en Cómo controlar los dispositivos inteligentes para la casa que se hayan agregado a la app de Google Home para obtener más ejemplos de comandos.

App de Google Home

Puedes presionar las etiquetas Encendido y Apagado junto al ícono de la bombilla que se muestra en la app de Google Home.

Consulta Cómo controlar dispositivos con la app de Google Home para obtener más información.

Simulador del Asistente de Google

En la extensión de Google Home para VS Code, puedes usar el Simulador de Asistente de Google para emitir instrucciones a tu dispositivo con una interfaz similar a un chat.

8. ¡Felicitaciones!

Creaste y pusiste en funcionamiento correctamente tu primer dispositivo Matter. ¡Genial!

En este codelab aprendiste a hacer lo siguiente:

  • Instala un entorno de desarrollo de Matter desde los requisitos hasta un estado de funcionamiento.
  • Compila y ejecuta un dispositivo Matter.
  • Puesta en marcha y control del dispositivo desde Google Home

Para obtener más información sobre Matter, explora estas referencias: