Nivel 3. Y ahora sí… ¡Matter entra en Home Assistant!
Después de comprobar las posibilidades que nos ofrece eWeLink llega el momento que estábamos esperando: comprobar qué ocurre cuando dejamos a un lado la aplicación de SONOFF y utilizamos los S61s directamente desde Home Assistant mediante Matter.
Y aquí tuvimos la primera sorpresa. Reconocemos que, antes de empezar, nuestra primera reacción fue buscar Matter en HACS, pensando que necesitaríamos instalar algún componente adicional de la comunidad. Pero no. Matter forma parte actualmente de las integraciones oficiales de Home Assistant, por lo que no necesitamos instalar nada desde HACS.
Creación del Matter Server … como contenedor / docker
Eso sí, que la integración esté incluida oficialmente en Home Assistant no significa que podamos olvidarnos de toda configuración adicional. Para que nuestro Home Assistant Container pueda comunicarse con los dispositivos Matter necesitamos disponer de Matter Server, que en nuestra instalación ejecutamos también mediante Docker.
Empezando por el final, y antes de explicar cómo hemos llegado hasta aquí, vamos a ver qué tenemos realmente funcionando en nuestra pequeña instalación de Home Assistant de la casa manchega. A día de hoy, nuestro NanoPi M6 se encarga de ejecutar Home Assistant Container junto con el resto de servicios que utilizamos para nuestra instalación domótica.
Si hacemos un docker ps, podemos ver todos los contenedores que están actualmente en ejecución:
1 2 3 4 5 6 7 8 9 | pi@nanopi-m6:~$ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES c9dd4da3ebf2 ghcr.io/home-assistant-libs/python-matter-server:stable "matter-server --pri…" 7 days ago Up 2 hours matter-server b7096fd1b0aa mariadb:11 "docker-entrypoint.s…" 3 weeks ago Up 2 hours 0.0.0.0:3306->3306/tcp, [::]:3306->3306/tcp mariadb-ha a9e92bc0a7e7 koenkk/zigbee2mqtt:latest "docker-entrypoint.s…" 5 weeks ago Up 2 hours zigbee2mqtt 6b2120a64477 eclipse-mosquitto:1.6.15 "/docker-entrypoint.…" 5 weeks ago Up 2 hours 0.0.0.0:1883->1883/tcp, [::]:1883->1883/tcp, 0.0.0.0:9001->9001/tcp, [::]:9001->9001/tcp mosquitto 71ff479bb02a portainer/portainer-ce:latest "/portainer --no-set…" 5 weeks ago Up 2 hours 0.0.0.0:9000->9000/tcp, [::]:9000->9000/tcp, 8000/tcp, 0.0.0.0:9443->9443/tcp, [::]:9443->9443/tcp portainer c28dfd5a1f32 linuxserver/homeassistant:latest "/init" 5 months ago Up 2 hours homeassistant c19a9167a8e0 zyclonite/zerotier "entrypoint.sh -U" 17 months ago Up 2 hours zerotier-one |
Como podéis comprobar, Matter Server es ahora un contenedor más dentro de nuestra instalación, exactamente igual que tenemos otros servicios como MariaDB, Zigbee2MQTT o Mosquitto. Esto resulta especialmente interesante porque permite mantener nuestra instalación de Home Assistant Container sin necesidad de cambiar a Home Assistant OS o instalar ningún componente adicional dentro del propio Home Assistant.
En nuestro caso, el contenedor que nos interesa especialmente es el primero de la lista:
ghcr.io/home-assistant-libs/python-matter-server:stable
Es decir, Python Matter Server, el servidor que proporciona a Home Assistant la comunicación con nuestros dispositivos Matter. En cualquier caso es importante que no confundamos Matter Server con un coordinador Matter. No hemos añadido ningún dispositivo físico equivalente al coordinador Zigbee CZC. El servidor Matter es software y se ejecuta en nuestro NanoPi M6; los S61S, al utilizar Matter sobre Wi-Fi, se comunican directamente a través de nuestra infraestructura IP.
Esto enlaza además perfectamente con lo que explicábamos al principio del artículo. Nuestro NanoPi M6 sigue teniendo su coordinador Zigbee para los dispositivos Zigbee y ahora dispone además de Matter Server para los dispositivos Matter. Son dos arquitecturas diferentes que pueden convivir tranquilamente en la misma instalación.
Sin más, aquí os presentamos el docker-compose.yml del Matter Server
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | services: matter-server: image: ghcr.io/home-assistant-libs/python-matter-server:stable container_name: matter-server restart: unless-stopped network_mode: host command: - --primary-interface - lan security_opt: - apparmor:unconfined volumes: - ./data:/data - /run/dbus:/run/dbus:ro |
En nuestro caso hemos optado por ejecutar Matter Server en un contenedor independiente, manteniendo la filosofía de nuestra instalación de Home Assistant Container. El docker-compose es bastante sencillo, pero hay un par de decisiones que merece la pena comentar. La primera es el uso de network_mode: host, que hace que el contenedor comparta directamente la red del NanoPi M6, algo especialmente interesante con Matter para facilitar el descubrimiento y la comunicación con los dispositivos de nuestra red local.
La segunda decisión importante es mantener /data en un volumen persistente, asociado a un directorio del NanoPi M6. De esta forma, si necesitamos recrear o actualizar el contenedor matter-server, conservaremos su configuración y datos. Y con esto ya tenemos preparado nuestro Matter Server. Ahora solo falta incorporar los diferentes enchufes S61s a Home Assistant.
58