Mostrar el estado real de tus bombillas zigbee

¿Tus bombillas aparecen encendidas cuando apagas el interruptor de la pared? Aprende a mostrar el estado real de tus bombillas zigbee.

¿Por qué aparecen encendidas?

Si tienes integradas bombillas a través de zigbee2mqtt en Home Assistant es muy posible que lo hayas notado. Cuando controlas siempre la bombilla a través de Home Assistant u otros dispositivos inteligentes no hay problema. Sin embargo, cuando colocas tu bombilla en una lámpara que a veces accionas con los interruptores de toda la vida se produce esta incoherencia.

Esto sucede porque están funcionando de forma simultánea dos mecanismos que no están coordinados:

  • Por un lado, el protocolo Zigbee que da la orden a la bombilla para encenderse y apagarse (entre otros).
  • Por otro, el circuito eléctrico tradicional que apaga la bombilla cuando se corta la corriente.

En la práctica, esto supone que si la bombilla está encendida y la apagas a través del interruptor tradicional, la bombilla se apagará, pero seguirá apareciendo con el estado de “encendida” en tu panel de control.

Como te puedas imaginar, esto supone un problema para tus automatizaciones, tus escenas y tus tarjetas de ocupación. Si el estado mostrado no es real, nada de lo que funcione dependiendo de ello actuará correctamente.

¿Cómo puedo mostrar el estado real?

Aunque viene desactivada por defecto, el complemento zigbee2mqtt cuenta con una propiedad denominada ‘Availability‘ o “disponibilidad”. Esta propiedad permite identificar si los dispositivos están ‘online’ u ‘offline’, y funciona de forma diferente dependiendo si se trata de un dispositivo activo o pasivo.

  • Con los dispositivos activos (principalmente, los que están alimentados por corriente eléctrica), por defecto envía una señal cada 10 minutos al dispositivo, marcándolo como ‘offline’ si no responde.
  • Con los dispositivos pasivos (alimentados por batería) por defecto realiza la comprobación cada 25 horas.

Las bombillas corresponden al primer caso, y esto nos dá un hilo del que tirar para mostrar el estado real. Lo que vamos a hacer es crear un ayudante, que nos va a servir como entidad virtual para registrar el estado real de la bombilla.

Creación y actualización del ayudante

Para mostrar el estado real de tus bombillas zigbee tienes que hacer lo siguiente:

  1. El primer paso es activar la opción de ‘Availability’ en zigbee2mqtt. Para ello accede al complemento desde el menú lateral. Luego navega por el menú superior hasta Ajustes > Ajustes > Disponibilidad. Si seleccionas la opción ‘simple’ los dispositivos pasarán a estar ‘offline’ de acuerdo a lo indicado en el apartado anterior. Si seleccionas la opción ‘advanced’ podrás parametrizar el tiempo que zigbee2mqtt considera para marcar los dispositivos como offline.
  2. Lo siguiente es crear el ayudante que va a registrar el estado real. Ve a Ajustes > Dispositivos y servicios > Ayudantes > Crear ayudante. Selecciona el tipo “alternar” o ‘boolean’ y asígnale un nombre (por ejemplo, “bombilla salon”). Esto creará la entidad ‘input_boolean.bombilla_salon‘ que puede tomar los valores ‘on’ y ‘off’. Esta será la entidad que utilizaremos en el futuro, ya que mostrará el estado real de las bombillas.
  3. Por último, tenemos que crear una automatización que actualice el estado en cualquier circunstancia. Básicamente, lo que va a hacer esta actualización es encender y apagar el ayudante, cuando la bombilla pase a estado ‘on’ y ‘off’ respectivamente, pero también lo va a hacer cuando zigbee2mqtt mande el ‘topic’ correspondiente a MQTT, que es el siguiente:
trigger:
  - platform: mqtt
    topic: zigbee2mqtt/[FRIENDLY-NAME]/availability
    payload: offline

En este código tienes que reemplazar el nombre de tu dispositivo tal y como está asignado en zigbee2mqtt. Asimismo, para identificar cuando enciendes el interruptor de la pared tendrías que cambiar el payload a ‘online’.

A continuación te dejo el código completo de la automatización del ejemplo.

alias: Actualización de estado (bombilla salón)
description: "Esta automatización actualiza el estado real de la bombilla del salón"
trigger:
  - platform: mqtt
    topic: zigbee2mqtt/bombilla_salon/availability
    payload: offline
    id: Bombilla apagada
    alias: Bombilla apagada por interruptor
  - platform: state
    entity_id:
      - light.bombilla_salon
    to: "off"
    id: Bombilla apagada ha
    alias: Bombilla apagada por HA
  - platform: mqtt
    topic: zigbee2mqtt/bombilla_salon/availability
    payload: online
    id: Bombilla encendida
    alias: Bombilla encendida por interruptor
  - platform: state
    entity_id:
      - light.bombilla_salon
    to: "on"
    id: Bombilla encendida ha
    alias: Bombilla encendida por HA
condition: []
action:
  - choose:
      - conditions:
          - condition: trigger
            id:
              - Bombilla apagada
              - Bombilla apagada ha
        sequence:
          - service: input_boolean.turn_off
            data: {}
            target:
              entity_id: input_boolean.bombilla_salon
      - conditions:
          - condition: trigger
            id:
              - Bombilla encendida
              - Bombilla encendida ha
          - condition: state
            entity_id: light.bombilla_salon
            state: "on"
        sequence:
          - service: input_boolean.turn_on
            data: {}
            target:
              entity_id: input_boolean.bombilla_salon
mode: single

Si lo prefieres también puedes importar el blueprint correspondiente con este botón, para crear la automatización en pocos segundos.

Open your Home Assistant instance and show the blueprint import dialog with a specific blueprint pre-filled.
¿Dudas?¿necesitas ayuda? entra aquí
Y si te ha gustado, compártelo! 🙂
Send this to a friend