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
- Una unidad central, que es cualquier dispositivo Google Nest compatible con Matter, como el Nest Hub (2a generación)
- Una placa de evaluación de Matter ESP32-DevkitC o ESP32 M5STACK de Espressif Systems.
- Una PC con Linux
- Conocimientos básicos de Linux
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.
- Conecta la placa de desarrollador a la computadora con un cable USB.
- 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”).
- Crea un directorio para que contenga el ESP-IDF:
$ mkdir ~/esp-idf_tools
- 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
- Completa la instalación de la cadena de herramientas:
$ cd ./esp-idf $ ./install.sh $ cd ~/
Cómo configurar el SDK de Matter
- 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
- Recupera los submódulos del repositorio:
$ ./scripts/checkout_submodules.py --shallow --platform esp32
- 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:
- Haz clic en Crear proyecto.
- Ingresa un nombre de proyecto único y, luego, haz clic en Crear proyecto.
- 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.
- Cuando tengas todo listo para continuar, haz clic en Next: Develop, que mostrará la página de la lista de tareas de Matter.
- Haz clic en Next: Setup.
- En la página Configuración, ingresa el Nombre del producto.
- Haz clic en Seleccionar tipo de dispositivo y selecciona el tipo de dispositivo en el menú desplegable (en este caso,
Light
). - 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.
- Ahora verás tu integración en Integraciones de Matter.
- 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
- 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
- Habilita Ccache, que acelera el proceso de compilación:
$ export IDF_CCACHE_ENABLE=1
- 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
- Ejecuta la utilidad de configuración:
$ idf.py menuconfig
- Selecciona
Demo -> Device Type
y estableceDevice Type
enESP32-DevKitC
. - Presiona la flecha hacia la izquierda para volver al menú de nivel superior.
- Selecciona
Component config --->
. - Selecciona
CHIP Device Layer --->
. - Selecciona
Device Identification Options --->
. - Configura
Vendor ID
con el VID que asignaste a Alliance o con un VID de prueba. - Establece
Product ID
en el PID que estableciste en la integración de Matter en la consola para desarrolladores de Google Home. - Presiona S para guardar.
- Presiona Intro para aceptar la ruta predeterminada en la que se guardará la configuración.
- Presiona Intro para descartar el cuadro de diálogo de confirmación de guardado.
- Presiona Q para salir de la utilidad de configuración.
- Ejecuta 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
- Conecta la placa de desarrollador a la computadora con un cable USB.
- 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
- 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
- Abre una ventana de terminal.
- 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
- 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
- Asegúrate de haber creado un proyecto con la combinación de VID/PID correcta en la consola de Google Home.
- Asegúrate de ingresar el VID y el PID correctos en la configuración de compilación.
- Asegúrate de haber seleccionado el
Device Type
correcto en la configuración de compilación.
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:
- El Primer sobre Matter de Google Home, en el que aprenderás los conceptos y principios importantes del protocolo de Matter.
- La especificación de Matter, la biblioteca de dispositivos de Matter y la biblioteca de clústeres de aplicaciones de Matter, publicada por Connected Standard Alliance.
- El repositorio de GitHub de Matter.