Si una bombilla está apagada, cambiar su brillo la enciende. ¿Hay alguna manera de que la bombilla se mantenga apagada mientras se guarda el ajuste de brillo? (¿Quizás en z2m?)
Hola @Chris75,
Este comportamiento no proviene de Gladys, sino de Zigbee en sí. Cuando se cambia el brillo, el comando enviado es « Move to Level (with On/Off) », que enciende la bombilla por diseño. La mayoría de las bombillas no saben modificar su nivel mientras están apagadas.
Dos opciones en Zigbee2MQTT, si tu bombilla las expone. Ve a Z2M, selecciona el dispositivo y luego mira si hay un bloque level_config en los exposes:
on_level: es el nivel que se aplicará la próxima vez que la bombilla reciba una orden de encendido. Es exactamente lo que buscas, memorizas el brillo sin encender.execute_if_off: permite enviar un cambio de brillo sin encender la lámpara. El soporte depende mucho del firmware, algunas bombillas lo ignoran por completo.
También existe current_level_startup si tu necesidad es más bien fijar el nivel después de un corte de energía.
Después, si el objetivo final es simplemente que la bombilla se encienda con el brillo correcto en un caso específico, lo más simple es poner la acción « cambiar el brillo » directamente en la escena que enciende. No es necesario pre-memorizar nada, la bombilla se encenderá al nivel solicitado.
De hecho, encontré la siguiente solución: creé un modo noche/día (encendido/apagado) en un widget con un ajuste general de la luminosidad para la noche (variable virtual mqtt). Por lo tanto, no necesito cambiar la luminosidad en cada escena afectada, ya que la bombilla se encenderá con el nivel de luminosidad definido en el modo noche.
Pero efectivamente, existe otra posibilidad con las siguientes exposiciones:
pero supongo que no están incluidos en gladys y debo usar node-red.
Hola @Chris75,
Tu solución de modo noche/día es muy buena, incluso a menudo es más legible que un ajuste oculto en la bombilla: ves de un vistazo en qué estado estás, y funciona igual para todas tus bombillas, independientemente de la marca. Si te conviene, manténla ![]()
Para responder a tu pregunta: tienes razón, estos exposes no se recuperan en Gladys. El servicio Zigbee2MQTT convierte los exposes en características de Gladys mediante una correspondencia explícita (estado, brillo, temperatura de color, temperatura, humedad, etc.), y todo lo que no está en esta lista se ignora. level_config es parte de esto: es un objeto compuesto de parámetros, y hoy Gladys solo gestiona los compuestos para el color.
En cuanto a Node-RED, no es necesario. Dos opciones:
1. Lo más simple: ajustarlo una vez en la interfaz de Zigbee2MQTT. Estos valores se almacenan en la bombilla misma, no en z2m. Vas a la pestaña Exposes de tu bombilla en la interfaz de Z2M, pones tu on_level (o activas execute_if_off), y listo: Gladys no necesita saber nada, el comportamiento cambia para todos, incluyendo tus escenas existentes.
2. Si quieres cambiarlo dinámicamente (por ejemplo: cambiar on_level según tu modo noche/día), hay una acción de escena dedicada en Gladys: Zigbee2MQTT → Enviar un mensaje MQTT. Pones:
- Tema:
zigbee2mqtt/nom_de_ton_ampoule/set - Mensaje:
{"level_config": {"on_level": 50}}
Y pasa directamente por la conexión MQTT de Gladys, sin dependencias adicionales. El mensaje acepta variables Handlebars, por lo que incluso puedes inyectar un valor de otro lugar en la escena.
Dos advertencias sobre estos atributos: execute_if_off y on_level son opcionales en la especificación Zigbee, no todas las bombillas los implementan (y algunas los aceptan sin aplicarlos). El hecho de que z2m los muestre en los exposes es una buena señal, pero no una garantía: prueba antes de construir toda tu lógica sobre ellos.
Después, si varias personas tienen esta necesidad, podemos agregar el soporte para level_config en el servicio Zigbee2MQTT. La verdadera pregunta es cómo exponerlo en Gladys: es un parámetro de configuración del dispositivo en lugar de un valor para controlar a diario, y no encaja naturalmente en las categorías de características actuales.
