Escena de luz con detección de movimiento - 2 problemas

Hola,

He pasado 3 días en Home Assistant sin éxito intentando crear actividades que me parecían simples (despertar con luz progresiva en intensidad y temperatura de color, entre otras), por lo que ahora me dirijo a Gladys (con Zigbee2MQTT).

He creado una escena en mi pasillo para encender las luces cuando se detecta movimiento, luego las luces se apagan automáticamente.

- Movimiento detectado → luces se encienden
- Después de 2 minutos sin movimiento → luces se atenuan
- Después de 30 segundos sin movimiento → luces se apagan

- Si me muevo durante la atenuación → las luces vuelven a la potencia máxima

- Día: intensidad luminosa más fuerte | Noche: intensidad luminosa más débil

Mi problema:

  1. Apagado brusco: las luces se apagan instantáneamente, mientras que el encendido y la atenuación son fluidos. Sin embargo, he activado las transiciones en Zigbee2MQTT/dispositivo/ajuste (específico)/transición: ¿Alguien ha logrado tener un apagado gradual con bombillas Hue Gu10?
  2. Mal retraso después de un reencendido: cuando las luces están en modo « atenuado » y detecto movimiento, las luces suben bien a la potencia máxima; pero solo permanecen encendidas el resto del tiempo del modo atenuado (30 segundos), en lugar de reiniciar el tiempo completo del modo potencia máxima (2 minutos). Como si la escena reanudara donde se detuvo, en lugar de volver a empezar. ¿Cómo hacer para que cada vez que se detecta un nuevo movimiento, la escena comience de nuevo?

¡Gracias por sus consejos! :folded_hands:

¡Hola y bienvenido a Gladys!

Tus dos problemas tienen una explicación. Los tomo en orden.

1. Apagado brusco

La acción « Apagar las luces » de Gladys envía simplemente {"state": "OFF"} a zigbee2mqtt/<tu bombilla>/set. Es Zigbee2MQTT quien aplica la transición, o no. En principio, cuando la opción transition está configurada en el dispositivo, Z2M transforma este OFF en una disminución gradual hasta 0, luego apaga.

Para saber de qué lado está el problema, apaga la bombilla directamente desde la interfaz de Z2M. Si también es instantáneo, Gladys no tiene la culpa: el problema está entre Z2M y la bombilla. Verifica entonces que el valor de transición (en segundos) se haya guardado correctamente.

En todos los casos, lo más fiable es pedir la transición directamente en el mensaje: así tiene prioridad sobre la opción del dispositivo. En tu escena, reemplaza « Apagar las luces » por la acción « Enviar un mensaje Zigbee2mqtt » :

  • Tema : zigbee2mqtt/NOMBRE_DE_TU_BOMBILLA/set (el nombre tal como aparece en Z2M, incluyendo el prefijo zigbee2mqtt/)
  • Mensaje : {"state": "OFF", "transition": 3} (3 segundos de fade)

Se necesita una acción por bombilla. Si tus GU10 están en un grupo Z2M, un solo mensaje en zigbee2mqtt/NOMBRE_DEL_GRUPO/set es suficiente, y se apagarán exactamente al mismo tiempo. El mismo truco funciona para la disminución, por ejemplo {"brightness_percent": 20, "transition": 2}.

2. El retraso que no vuelve a cero

La escena no reanuda donde se detuvo. Cada movimiento lanza una nueva ejecución de la escena, en paralelo a la que ya está en curso, y Gladys no cancela la anterior.

Supongo que tu escena es algo como « Movimiento → encender → Esperar 2 min → bajar → Esperar 30 s → apagar ». Cuando te mueves durante la fase de bajada, la nueva ejecución enciende a tope. Pero la anterior sigue en su « Esperar 30 s », y apaga al final. Además, 2 minutos después, la nueva ejecución va a bajar el brillo, lo que puede encender las lámparas en bajo: ajustar un brillo enciende una bombilla Z2M.

La solución es dejar de contar el tiempo con « Esperar » y dejar que el disparador lo haga. El disparador « Cambio de estado del dispositivo » tiene una opción prevista para esto: « Ejecutar la escena después de que la condición haya sido válida durante : ». El temporizador se cancela tan pronto como el sensor vuelve a « Movimiento detectado », y se reinicia al próximo « Sin movimiento ».

Por lo tanto, hay que dividir en 3 pequeñas escenas :

Escena A – Pasillo : encendido

  • Disparador : « Cambio de estado del dispositivo » → detector del pasillo = Movimiento detectado
  • Acciones : tu lógica día/noche. Por ejemplo, una condición « Si… Entonces… Si no… » que contiene una « Condición temporal » : Entonces brillo fuerte, Si no brillo bajo.

Escena B – Pasillo : bajada

  • Disparador : detector del pasillo = Sin movimiento, marcando « Ejecutar la escena después de que la condición haya sido válida durante : 2 minutos »
  • Acción : bajar el brillo

Escena C – Pasillo : apagado

  • Disparador : detector del pasillo = Sin movimiento durante 150 segundos (2 min + 30 s, porque los dos temporizadores comienzan al mismo tiempo)
  • Acción : el mensaje Zigbee2mqtt {"state": "OFF", "transition": 3} visto anteriormente

Resultado : si te mueves durante la fase de bajada, la escena A vuelve a encender la luz a tope y los temporizadores de B y C se cancelan. Cuando te detienes, se reinician a cero : 2 minutos a tope, luego 30 segundos bajado, luego apagado en fade.

Dos consejos :

  • En B y C, también marca « Ejecutar solo cuando se haya superado el umbral ». El temporizador solo comienza entonces en el paso de « Movimiento detectado » a « Sin movimiento ». Si el sensor devuelve « Sin movimiento » más tarde, la bajada no se reiniciará, y tus lámparas no se encenderán en bajo.
  • El temporizador solo comienza cuando el detector envía « Sin movimiento », y cada detector espera un cierto tiempo antes de enviarlo. En algunos modelos, este tiempo se ajusta en Z2M (opción occupancy_timeout). El retraso real es entonces ese tiempo más tus 2 minutos : ajusta en consecuencia.

La duración en segundos en el disparador y la acción Zigbee2mqtt están disponibles en la versión actual de Gladys (5.1.3) : piensa en actualizar si es necesario.

¡Mantennos informados!

¡Muchas gracias, es muy preciso! De hecho, había utilizado « esperar ». Entiendo tu lógica al leerla.

Observo que al apagar, el tiempo de transición indicado en M2QTT solo indicará el retraso entre la orden de apagado y la luz que se apaga, en lugar de tener una intensidad luminosa que disminuya gradualmente durante la duración de la transición indicada.
Es un poco misterioso:
-Si introduzco « 0 » en transición, la luz se enciende de manera abrupta y se apaga de manera abrupta.
-Si pongo 1, la luz hace una ligera transición al encenderse, pero se apaga de manera abrupta.
-Si pongo 5, la luz hace la misma transición que en 1 al encenderse, y se apaga de manera abrupta con un retraso de 5 segundos.

Afirmo que incluso con {« state »: « OFF », « transition »: 3}, mis GU10 se apagan bruscamente.
Tengo una acción por bombilla, no he hecho un grupo. ¿Me aconsejas agrupar mis bombillas cuando las tengo en parejas y enviar órdenes al grupo en lugar de a cada bombilla por separado?

¿Quizás debería activar el control nativo de Hue?

Para el segundo punto, me gustaría tener tu opinión sobre un detalle: durante el día, después de 2 minutos, se atenúa durante 30 segundos y luego se apaga. Pero por la noche (en la idea), se enciende durante 5 minutos, no se atenúa, y se apaga después de 5 minutos (a menos que se detecte movimiento entre tanto, se reinicia durante 5 minutos).

Para eso, intenté añadir una condición temporal en « pasillo baja » y en « apagado »:

Condición Temporal (07:00 - 23:00)

Entonces: Atenuar luz

Si no: vacío (en la idea, « vacío » haría continuar « pasillo encendido »?)

Y he separado la escena de apagado haciendo una para el día (después de 150 segundos) y una para la noche (después de 5 minutos)

¡Gracias por la respuesta detallada, tu prueba es muy reveladora!

1. Apagado

Con una transición, tu GU10 espera la duración y luego se apaga de golpe. Por defecto, Z2M simula el apagado con un fade usando un comando Zigbee estándar (« bajar a 0 y luego apagar »), y tus bombillas lo ejecutan a su manera.

Por lo tanto, sí, activa Hue native control en cada bombilla, en los parámetros específicos del dispositivo en Z2M. Z2M usa entonces el protocolo propio de Hue, el del puente Hue, y la transición se convierte en una verdadera duración de fade (si la bombilla lo soporta). Luego, vuelve a probar {"state": "OFF", "transition": 3}.

Si no cambia nada, aquí tienes un plan B para la escena de apagado, ya que tus reducciones de brillo son fluidas:

  1. Mensaje {"brightness": 1, "transition": 3}
  2. Esperar 3 segundos
  3. Mensaje {"state": "OFF", "transition": 0}

Para el grupo, no es indispensable. Gladys no gestiona los grupos Z2M como dispositivos: solo podrías controlarlo con la acción « Enviar mensaje Zigbee2mqtt ». Su ventaja es una sola orden y dos bombillas perfectamente sincronizadas. Con 2 bombillas, dos mensajes seguidos son suficientes. Primero ajusta el fade en una bombilla.

2. Día / noche

Tu lógica es buena. Con un « Si no » vacío, la escena « Pasillo baja » simplemente se detiene sin hacer nada, y las lámparas permanecen encendidas como están. No « continúa » « Pasillo encendido », que ya ha terminado su trabajo, pero el resultado es el que quieres. Más simple aún: pon la Condición temporal directamente como primera acción, seguida de la reducción. Fuera del horario, la escena se detiene ahí.

Punto importante: cada escena de apagado debe tener su propia Condición temporal como primera acción. De lo contrario, el apagado « de día » (150 s) también se activa de noche y se apaga después de 2 minutos y 30 segundos:

  • Apagado de día: Sin movimiento durante 150 s → Condición temporal Después de 07:00 / Antes de 23:00 → apagado
  • Apagado de noche: Sin movimiento durante 5 min → Condición temporal Después de 23:00 / Antes de 07:00 (Gladys gestiona el paso de medianoche) → apagado

La condición se verifica cuando el temporizador termina, por lo que también funciona alrededor de las 23:00 y 07:00. De noche, un movimiento cancela el temporizador de 5 min, que vuelve a empezar desde cero en el próximo « Sin movimiento ».

PD: escribiste « dim durante 30 min ». Si son 30 s, 150 s es el valor correcto; para 30 min, habría que poner 32 min.

¡Gracias! ¡Lógica, en efecto! He reemplazado los « Si, Entonces, Sino », cuando el « Sino » está vacío, porque parece que es lo mismo que simplemente poner una condición temporal « Si, Entonces ».

(Buena observación, quería escribir 30s, está corregido)

  1. Al activar « Hue Native Control » en mis 2 GU10, noto que las escenas no se inician durante el día. Por lo tanto, por ahora lo he desactivado. ¿Debo hacer algo más para que la escena funcione una vez que « Hue Native Control » esté activado?
  2. Con « Hue Native Control » desactivado, « {« state »: « OFF », « transition »: 3} » no me da un apagado fluido.
  3. Con « Hue Native Control » desactivado, « {« brightness »: 1, « transition »: 3} » + 3s + « {« state »: « OFF », « transition »: 0} » tampoco me da un apagado fluido.
  4. Si activo « Hue Native Control », ¿dejo « transition: 1 » o ya no se tiene en cuenta?
  5. ¿Funciona « Hue Native Control » sin un puente Hue?
  6. Problema (ligero), noto que el encendido a máxima potencia dura 2 minutos y 15 segundos (en lugar de 2 minutos), y que el atenuado dura 30 segundos (perfecto). ¿Alguna idea para lograr exactamente 2 minutos?

Escena 1: Encendido

Cuando
Entrada Sensor 1 (Detección de movimiento) - Movimiento detectado - nada marcado

Entonces
Condición « Si… Entonces… Sino… »
Condición temporal
≥ 07:00 · ≤ 23:00

Entonces
Al mismo tiempo
Controlar un dispositivo -
zigbee2mqtt-entree-plafond-1-light-brightness-brightness · 254
Controlar un dispositivo - zigbee2mqtt-entree-plafond-2-light-brightness-brightness · 254

Sino

Al mismo tiempo
Controlar un dispositivo -
zigbee2mqtt-entree-plafond-1-light-brightness-brightness · 51
Controlar un dispositivo - zigbee2mqtt-entree-plafond-2-light-brightness-brightness · 51

Escena 2: Reducción

Cuando
Entrada Sensor 1 (Detección de movimiento) - Sin movimiento - Ejecutar la escena después de que la condición haya sido válida durante: 2 minutos

Entonces
Condición temporal
≥ 07:00 · ≤ 23:00
Al mismo tiempo
Controlar un dispositivo -
zigbee2mqtt-entree-plafond-2-light-brightness-brightness · 26
Controlar un dispositivo - zigbee2mqtt-entree-plafond-1-light-brightness-brightness · 26

Escena 3: Apagado de día

Cuando

Entrada Sensor 1 (Detección de movimiento) - Sin movimiento - Ejecutar la escena después de que la condición haya sido válida durante: 150 segundos

Entonces

Condición temporal≥ 07:00 · ≤ 23:00

Al mismo tiempo

Enviar un mensaje Zigbee2mqttzigbee2mqtt/Entrée Plafond 1/set - {« state »: « OFF », « transition »: 3}

Enviar un mensaje Zigbee2mqtt - zigbee2mqtt/Entrée Plafond 2/set - {« state »: « OFF », « transition »: 3}

Escena 4: Apagado de noche

Cuando

Entrada Sensor 1 (Detección de movimiento) - Sin movimiento - Ejecutar la escena después de que la condición haya sido válida durante: 5 minutos

Entonces

Condición temporal≥ 23:00 · ≤ 07:00

Al mismo tiempo

Enviar un mensaje Zigbee2mqtt - zigbee2mqtt/Entrée Plafond 1/set - {« state »: « OFF », « transition »: 3}
Enviar un mensaje Zigbee2mqtt - zigbee2mqtt/Entrée Plafond 2/set - {« state »: « OFF », « transition »: 3}