Una pasarela Matter en Rust: conectar dispositivos con Apple Home
Un prototipo con rs-matter: endpoints, tabla de dispositivos, comandos, estado y persistencia, junto con lo que falta probar.
En el artículo anterior emparejamos una pasarela prototipo con Apple Home usando un ordenador y un teléfono. Ahora veremos la parte Matter, implementada con rs-matter. La interoperabilidad Bluetooth Mesh real, la placa Linux y las pruebas a gran escala siguen pendientes.
La pasarela y sus dispositivos
La pasarela aparece como un nodo Matter. El endpoint 0 aporta las funciones básicas, el 1 actúa como agregador y cada bombilla conectada recibe su propio endpoint. El prototipo combina los tipos de dispositivo con los clusters Descriptor, On/Off, Bridged Device Basic Information y Groups para describir sus funciones y estado.
Una tabla para enlazar ambos lados
Una tabla local guarda el identificador del endpoint, la dirección del dispositivo, el nombre, el estado y su disponibilidad. Cuando Apple Home pide encender el endpoint 2, la pasarela busca la dirección y envía el comando correspondiente. Un producto real también necesita gestionar aprovisionamiento, seguridad y recuperación.
Comandos y actualizaciones de estado
Al recibir un comando, el prototipo actualiza primero su estado local de forma optimista y envía la orden. Si después llega un informe del dispositivo, utiliza ese valor para corregirlo. Si no hay respuesta, la pantalla puede mostrar temporalmente un estado incorrecto: aún quedan por desarrollar tiempos de espera, reintentos, consultas y detección de desconexión.
La comunicación inversa también importa. Si alguien pulsa un interruptor físico, la pasarela identifica el dispositivo, actualiza el endpoint y notifica el cambio a los suscriptores Matter. En la demostración con teléfono se eliminan anuncios idénticos repetidos para evitar restaurar un estado antiguo. Esa señal sin cifrar es solo una simulación, no una prueba Mesh real.
Altas, bajas y reinicios
El prototipo permite añadir y eliminar dispositivos en ejecución. Asigna números de endpoint crecientes y no reutiliza inmediatamente los eliminados para reducir confusiones en el controlador. La gestión a largo plazo sigue pendiente.
La relación entre endpoint, dirección y nombre se guarda en un archivo; rs-matter mantiene sus propios datos persistentes. La tabla se escribe primero en un archivo temporal antes de sustituir el anterior. Esto reduce el riesgo de corrupción, pero no garantiza por sí solo la recuperación ante un corte eléctrico. También habrá que consultar el estado real y proteger y respaldar las claves Mesh.
Límites de la prueba
La demostración probó el emparejamiento con Apple Home, el control y los informes de dispositivos simulados y el comportamiento básico al añadir, eliminar y reiniciar. No probó una red Mesh real, la placa Linux, la recuperación de fallos ni cientos de dispositivos. Las credenciales de prueba no equivalen a una certificación de producto.
El perfil release usa optimización de tamaño, LTO y eliminación de símbolos. Una compilación anterior para ordenador ocupó unos 2,3 MB; hay que medir de nuevo en cada plataforma. El siguiente paso será sustituir la simulación por hardware real.