El problema
Hoy en día, la conexión entre un dispositivo Zigbee2mqtt y su equivalente en Gladys se basa en el nombre del dispositivo (el friendly_name definido en Zigbee2mqtt).
Consecuencia: si se renombra un dispositivo desde la interfaz de Zigbee2mqtt, Gladys ya no lo reconoce. Se trata como un nuevo dispositivo, y el antiguo permanece en la base de datos con su antiguo nombre.
Tres efectos concretos:
- Aparecen duplicados en las listas de dispositivos, especialmente al crear una escena o agregar un componente a un tablero — no se sabe cuál es el correcto.
- Las escenas existentes fallan silenciosamente. Continúan apuntando al antiguo dispositivo, que ya no recibe ningún dato. No se muestra ningún mensaje de error, la escena simplemente ya no se activa.
- El historial se divide en dos. Las mediciones anteriores al cambio de nombre permanecen en el antiguo dispositivo, las posteriores están en el nuevo. Los gráficos vuelven a empezar desde cero.
El problema se ha reportado en el foro aquí: Limpieza de la base de datos de dispositivos
Nota: renombrar un dispositivo desde Gladys no causa ningún problema, está bien gestionado. Es solo el renombrado desde Zigbee2mqtt lo que rompe el enlace.
La solución actual
- Elegir un nombre definitivo en Zigbee2mqtt en el momento del emparejamiento y no tocarlo después.
- Renombrar solo desde Gladys, lo cual no tiene ningún impacto en el enlace.
- Si el daño está hecho: eliminar manualmente el antiguo dispositivo desde Integraciones → Zigbee2mqtt → Dispositivos, luego recrear las escenas afectadas.
Funciona, pero supone conocer la trampa de antemano — lo cual no es el caso de nadie la primera vez.
La funcionalidad solicitada
Que Gladys siga el renombrado automáticamente, sin crear duplicados y sin romper las escenas existentes.
Dos enfoques posibles, complementarios:
1. Escuchar el evento de renombrado de Zigbee2mqtt
Zigbee2mqtt ya publica un evento device_renamed que contiene el antiguo y el nuevo nombre. Gladys podría suscribirse a este evento y actualizar la referencia del dispositivo sobre la marcha. Es una corrección dirigida, sin migración de datos, que resuelve el caso del renombrado realizado mientras Gladys está en funcionamiento.
2. Basarse en la dirección Zigbee (dirección IEEE) en lugar del nombre
Esta es la solución fundamental: la dirección IEEE es el identificador de hardware del dispositivo, nunca cambia, sin importar el nombre que se le dé. Gladys ya recupera esta dirección y la muestra en la ficha del dispositivo, pero no la usa para la identificación. Este enfoque también cubre los casos que el evento no cubre (renombrado realizado mientras Gladys está apagado, por ejemplo). A cambio, requiere una migración de los dispositivos Zigbee existentes.
Beneficio
Renombrar un dispositivo es una operación común, que se hace naturalmente al reorganizar la instalación. Hoy en día es una operación de riesgo, cuyos efectos solo aparecen más tarde, cuando una escena ya no se activa. Esta evolución eliminaría por completo la trampa.
