Hace unas semanas os comentaba las limitaciones que me había encontrado en Home Assistant durante las primeras semanas de uso. Una de las que más problemas me ha traído en casa es la imposibilidad de configurar el comportamiento de las luces Philips Hue cuando se va la luz… y he podido solucionarlo! Os cuento cómo.
El problema: las luces se encienden cuando se va la luz
A ver, no es que se enciendan cuando se va la luz, evidentemente si no hay luz no se pueden encender… pero cuando vuelve la luz se encienden TODAS al 100% en tonos cálidos, es decir, en la configuración por defecto de las bombillas.
En mi casa no se va la luz demasiado a menudo, pero a veces encendemos demasiadas cosas a la vez… y salta el automático. Pues en cuanto vuelvo a dar la luz se encienden TODAS las luces y todos los enchufes Philips Hue, los cuales actualmente los tengo en los calefactores de los cuartos de baño.
Además, hasta que Home Assistant no se vuelve a iniciar por completo y los interruptores se conectan de nuevo no es posible apagarlas… así que esos 3 o 4 minutos que tarda la Pi en encenderse y Home Assistant en estar disponible se hacen ETERNOS mientras mi mujer me mira con la cara esa que significa ‘cariño, no pasa nada, pero me gustaría que esto funcionara algo mejor, tómatelo como una sugerencia, mi amor’. Ya me entendéis.
Si tenemos el bridge de Philips Hue original es posible configurar el comportamiento de las bombillas cuando vuelve la luz desde la app. Las posibilidades son las típicas: ON (todas las luces se encienden), OFF (todas las luces se mantienen apagadas) y RECOVER (las luces recuperan el estado que tuvieran antes de irse la luz). Además, el bridge es integrable con Home Assistant, por lo que si mantienes el bridge de Philips Hue no tendrás ningún problema.
Pero ya sabéis que yo soy un descerebrao y decidí quitar todos los bridges zigbee y utilizar únicamente Home Assistant con el dongle zigbee SonOFF… lo cual a todas luces (nunca mejor dicho) me ha traído más problemas que ventajas, aunque es verdad que he aprendido mucho y creo que va más rápido que los bridge oficiales ya que no hay intercambio de informacíón entre plataformas, todos los dispositivos se conectan al dongle de SonOFF y se gestionan a través de la PI, por lo que después de investigar un tiempo comprobé con amargura que no existe ningún parámetro para configurar el comportamiento de las bombillas 🙁
La solución: Mosquitto Broker
Eclipse Mosquitto es un software para enviar mensajes ligeros, así para entendernos. Básicamente publica colas de mensajes a las que te puedes suscribir. No voy a liaros más, si a alguien le interesa profundizar en este tema puede entrar en la web del Mosquitto Broker https://mosquitto.org/ o leer el post de BBits donde lo explican estupendamente.
El caso es que en mi instalación de Home Assistant utilizo Mosquitto para publicar los mensajes y Zigbee2MQTT para que Mosquitto sea capaz de publicar mensajes Zigbee. Suena complicado pero es casi la instalación estándar.
Lo más normal es que hubiera un parámetro de configuración en Zigbee2MQTT que es donde tenemos todos los dispositivos para configurar el comportamiento. Aquí es donde os comenté que estaba la opción de eliminar el delay de las luces Hue, el pequeño gradiente de 1 segundo que hacen cuando se encienden y se apagan… que queda muy bonito pero añade retraso. Y lo más gracioso es que esto no se puede modificar desde el bridge de Hue ni desde la app oficial ni desde ningún sitio… pero sí desde la configuración a bajo nivel del dispositivo en Zigbee2MQTT:
Pero con el comportamiento cuando vuelve la luz la cosa se complica un poco más. Básicamente hay que enviar un comando a través de Mosquitto que modifica el comportamiento de la luz en ‘lenguaje zigbee’. Os lo explico de forma sencilla:
El comando que hay que enviar es «hue_power_on_behavior» y hay que enviarlo directamente al topic zigbee2mqtt/nombre_luz/set/ con el parámetro que queramos configurar. No te has enterado de nada, verdad? Así de ‘user-friendly’ son algunas cosas de Home Assistant, yo no sé por qué me meto en estos fregaos…
El comando ‘hue_power_on_behavior’ es el que controla qué hace la bombilla cuando vuelve la luz. Acepta los parámetros ‘on’ (se enciende la luz cuando vuelve la luz), ‘off’ (se queda apagada), ‘default’ (comportamiento por defecto de la bombilla, normalmente 100% de luminosidad y tono cálido) y ‘recover’ (vuelve al estado en el que estaba cuando se ha ido la luz).
Es decir, que en mi caso que lo que quiero es que se mantengan apagadas, tendría que mandar un ‘hue_power_on_behavior = off’ a cada una de las bombillas. Ah, y también a los enchufes que controlan los calefactores.
Para ello, debemos entrar en la configuración del Mosquitto Broker MQTT y aquí le decimos que queremos enviar al topic (o tema si lo tienes en castellano) zigbee2mqtt/Nombre Dispositivo/set/hue_power_on_behavior simplemente un ‘off’:
Podemos escuchar ese topic para ver si el cambio ha llegado correctamente, tal y como veis en la parte de abajo de la imagen.
Recuerda que tienes que hacerlo para todas las bombillas o interruptores, ya que no se puede configurar el comportamiento de forma global, aunque desde el bridge de Hue original tampoco se podia, había que hacerlo bombilla por bombilla.
Y de esta sencilla forma… xD
He de decir que el ‘recover’ no me ha funcionado. En mi opinión este seria el comportamiento perfecto, ya que si por ejemplo alguien está en el baño cuando se va la luz, o en la cocina o algo así, al volver se encenderá la luz igual que estaba antes, mientras que las que estaban apagadas seguirán apagadas.
Reconozco que no es una solución sencilla, llevo bastante tiempo de pruebas e investigación hasta que he dado con la tecla… y no os imagináis las pruebas que he hecho y las veces que he hecho saltar el automático aprovechando cuando mi mujer estaba fuera de casa (para evitarme la bronca) hasta que por fin funciona como necesitaba que funcionara. Es verdad que puede ser que se vaya la luz cuando alguien esté en la ducha y después tenga que esperar esos 3-4 minutos hasta que se pueda encender la luz, pero espero que eso no ocurra nunca. Seguiré haciendo pruebas a ver si en algún momento funciona el recover y las configuraré todas de nuevo. Ya os contaré 🙂
Y si esta entrada te ha resultado útil para ahorrarte algunas de las doscientas horas que he necesitado yo para dar con la solución, podrías invitarme a un cafetillo 😉
Gracias por este resumen, lo probe directamente enviando comando
mosquitto_pub -t ‘zigbee2mqtt/0x001788010bd58d86/set’ -m ‘{ «hue_power_on_behavior»: «off» }’
Pero veo que funciona a medias, en tu video veo como parece intentar de querer encender y se apaga inmediatamente.
En mi caso no tengo ese efecto, pero si es cierto que si apago y enciendo el interruptor en poco tiempo. Se pierde esta configuracion o eso parece.
Entiendo que realmente la configuracion del estado ON OFF o el RECOVER (que no parece funcionar) no se guarda internamente en la propia bombilla, si no que es el Mosquitto el que envio como tiene que comportarse cada vez que se engacha no?
Gracias!
Hola sabido! Muchas gracias por tu mensaje! Pues no te sé decir porque si es mosquitto quien manda el mensaje, como es que cuando se va la luz y luego vuelve, la bombilla sigue apagada? No debería ser así ya que cuando vuelve la corriente a la bombilla mosquitto todavía no puede publicarle nada ya que no se ha levantado aun, por lo que debe almacenar algo de información en la misma bombilla, no?
En mi caso funciona perfecto, el video de la lamparilla no hace justicia ya que en este momento no hay ligero parpadeo ni luz residual que creo que se debía al mismo interruptor de la lamparilla. Estos días han saltado los plomos en varias ocasiones debido al calor y haber encendido demasiadas cosas y te aseguro que funciona como debe, cuando vuelve la luz se quedan APAGADAS por defecto sin tintineo ni energía residual ni nada 🙂
a mi si me funcionó con recover, muchas gracias!
Genial Arturo! Gracias a ti por el feedback!
Yo tengo 3 lamparas HUE numero de modelo 929001821602, monocromaticas dimmeables, que no se por que razon me las toma el zigbee2mqtt como 8718699673147. La opcion «recover,» no esta, esta la opcion «prervious» que debe ser lo mismo, y el comportamiento es erratico: por ahi respeta el ultimo estado y por ahi no.Ya no se que setearle……
Y no es mejor conectar el Raspberry PI a un SAI/UPS para que cuando se vaya la luz, siga funcionando?
Hola Ben! Muchas gracias por tu comentario! En realidad eso no te soluciona mucho y estás añadiendo complejidad a la red, ya que los SAIs no son baratos, hay que cambiarles las baterías cada cierto tiempo… y aún así, la bombilla se quedará quedando sin luz y aparecerá como desconectada en Home Assistant! Es verdad que cuando cuelga la luz, en cuanto se conecte ya sabrá el estado en el que tiene que ponerse, pero tendremos que elegir igualmente cuál es su estado por defecto cuando vuelva la corriente y todavía no se haya conectado a la plataforma.