Cómo compilar un dispositivo Matter

1. Introducción

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

Qué aprenderás

  • Cómo integrar un dispositivo físico con Matter
  • Cómo asignar y controlar tu dispositivo Matter con Google Home.

Requisitos

2. Configura tu entorno

Identifica el dispositivo en serie

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

  1. Conecta la placa de desarrollador a la computadora con un cable USB.
  2. Busca en el sistema de archivos /dev para encontrar el dispositivo de la placa de desarrollador. Para acotar la búsqueda, puedes especificar el prefijo del dispositivo de tu placa de desarrollador. El ESP32 de Espressif usa /dev/ttyUSBx:
    user@host $ ls /dev/ttyUSB*
    /dev/ttyUSB0
    

Configura tu concentrador

Configura la unidad central con la misma Cuenta de Google que quieres usar en 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 de Linux basadas en Debian, incluido Ubuntu. Si trabajas con una distribución de Linux diferente, el procedimiento de configuración de dependencias puede ser diferente del que se indica a continuación.

Instala dependencias

Ejecuta el siguiente comando para instalar los objetos binarios de paquetes de Linux obligatorios que pueden no estar ya 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 framework de desarrollo de IoT de Espressif o “ESP-IDF”).

  1. Crea un directorio para que contenga el ESP-IDF:
    $ mkdir ~/esp-idf_tools
    
  2. Clona el ESP-IDF de 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 ~/
    

Cómo configurar 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.

Todos los dispositivos Matter que hayan aprobado la certificación Matter de Connectivity Standards Alliance (Alliance) funciona en el ecosistema de Google Home. Los dispositivos en desarrollo que no están certificados se pueden encargar en el ecosistema de Google Home bajo ciertas condiciones. Consulta Restricciones de sincronización para obtener más información.

Crea un proyecto de desarrollador

Primero, ve a la consola para desarrolladores de Google Home:

  1. Haz clic en Crear proyecto.
  2. Ingresa un nombre de proyecto único y, luego, haz clic en Crear proyecto. Diálogo Crear proyecto nuevo
  3. Haz clic en + Add integration para ir a la pantalla Matter resources, en la que podrás ver la documentación de desarrollo de Matter y leer sobre algunas herramientas.
  4. Cuando tengas todo listo para continuar, haz clic en Next: Develop, que mostrará la página de la lista de tareas de Matter.
  5. Haz clic en Next: Setup.
  6. En la página Configuración, ingresa el Nombre del producto.
  7. Haz clic en Seleccionar tipo de dispositivo y selecciona el tipo de dispositivo en el menú desplegable (en este caso, Light).
  8. En ID del proveedor (VID), selecciona VID de prueba y selecciona 0xFFF1 en el menú desplegable VID de prueba. En ID del producto (PID), ingresa 0x8000 y haz clic en Guardar y continuar y, luego, hacer clic en Guardar en la siguiente página. Usa estos valores exactos de VID/PID; 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 para asegurarte de que reciba la configuración del proyecto de integración de Matter más reciente. Si tienes que cambiar el VID o PID más adelante, también deberás reiniciar después de guardar el proyecto para que se aplique el cambio. Consulta Cómo reiniciar los dispositivos Google Nest o Google Wifi para obtener instrucciones de reinicio paso a paso.

4. Compila el dispositivo

Todos los ejemplos de Matter se encuentran en la carpeta de ejemplos del repositorio de GitHub. Hay varios ejemplos disponibles, pero nuestro enfoque en este codelab es en lighting-app.

Este ejemplo es un dispositivo simple que aparece en Google Home como una luz de encendido y apagado, que responde a los comandos de encendido y apagado. Hacer que el dispositivo 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 su entorno de compilación:
    $ 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 del ESP32 lighting-app y establece 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 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. Configura Vendor ID con el VID que asignaste a Alliance o con un VID de prueba.
    8. Establece Product ID en el PID que estableciste 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 predeterminada en la que se guardará la configuración.
    11. Presiona Intro para descartar el cuadro de 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.

Programar el dispositivo

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

Puedes encontrar más información sobre las opciones de escritura en la memoria flash 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 RESTABLECER para iniciar el proceso de inicio del dispositivo.

6. Encargar el dispositivo

Nota: Este paso solo se realizará correctamente si ya configuraste tu proyecto en la consola para desarrolladores de Google Home.

Nest Hub

Se requiere una unidad central para enviar tu dispositivo a la tela de Matter. Este es un dispositivo Google Nest, como Nest Hub (2a generación), que admite Matter y que servirá como router de borde para dispositivos compatibles con Thread y como ruta de entrega local para enrutar intents de casa inteligente.

Consulta esta lista para ver qué unidades centrales admiten Matter.

Antes de comenzar el proceso de comisión, asegúrate de lo siguiente:

  • La unidad central está sincronizada con la misma Cuenta de Google que usaste para acceder en la consola de Google Home.
  • La unidad central está conectada a la misma red Wi-Fi que la computadora que usas para ejecutar el dispositivo Virtual Matter.
  • La unidad central está en la misma estructura que usas en la app de Google Home. (La "casa" en 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 M5STACK, ten en cuenta que la pantalla permanecerá en blanco después de la escritura en la memoria flash, por lo que tendrás que 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]]

Soluciona problemas

Falla la puesta en marcha

Si quieres obtener más sugerencias para solucionar problemas, consulta la página de solución de problemas de Matter.

7. Cómo controlar el dispositivo

Una vez que tu dispositivo compatible con Matter se haya encargado correctamente y aparezca en la app de Google Home como una bombilla, puedes intentar controlar el dispositivo con Asistente de Google, la app de Google Home o el simulador de 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 concentrador para activar o desactivar el estado del dispositivo a partir de comandos por voz, como decir "Hey Google, activa o desactiva las luces".

Para obtener más ejemplos de comandos, consulta la sección Cómo controlar dispositivos de casa inteligente con comandos por voz en Cómo controlar los dispositivos de casa inteligente agregados a la app de Google Home.

App de Google Home

Puedes presionar las etiquetas Activar y Desactivar 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 de Asistente de Google

En la extensión de Google Home para VS Code, con el simulador de Asistente de Google, puedes emitir declaraciones a tu dispositivo por medio de una interfaz similar a un chat.

8. ¡Felicitaciones!

Creaste y encargaste correctamente tu primer dispositivo Matter. ¡Genial!

En este codelab aprendiste a hacer lo siguiente:

  • Instalar un entorno de desarrollo de Matter desde los requisitos hasta un estado operativo.
  • Compila y ejecuta un dispositivo Matter.
  • Envía y controla tu dispositivo desde Google Home.

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