Ultima entrada

  • Relé contacto seco ( dry contact ) zigbee e integración en Home Assistant

    Tengo desde hace cuatro años o mas como relé de termostato en la caldera un SonOff Mini que va como un tiro , pero en el proceso de cambio de wifi a Zigbee le ha tocado al Mini , lo tenia modificado para hacerlo de contacto seco ( dry contact ) o sin tensión de la siguiente manera , cortando esas dos pistas y uniendo los otros dos puntos

    Quedando de la siguiente manera

    Para empezar el proceso de cambio lo primero es elegir uno que sea zigbee y directamente sea de contacto seco para no tener que cambiar nada a nivel de placa

    En Aliexpres encontre este que cumple ambos requisitos (  AC DC7-32V 85-250V )

    Este es el manual que trae , podemos ver que solo tiene un par de pulsadores , el de cambio de estado y el de emparejamiento

    Pulsaremos el botón superior de emparejamiento durante al menos ocho segundos

    Nos aparecerá en Zigbee2MQTT si lo tenemos en permitir emparejamiento

    Nos aparecerá como un interruptor Tuya

    Definiremos el estado inicial al darle tensión , en mi caso seria OFF al estar conectado a la caldera

    Y al momento ya tenemos movimiento en MQTT Explorer

    Este seria el JSON que nos enviara ante cada cambio producido

    {
      "action": "on",
      "device": {
        "applicationVersion": 72,
        "dateCode": "",
        "friendlyName": "rele_zigbee",
        "hardwareVersion": 1,
        "ieeeAddr": "0xa4c1387ebe0cd9f3",
        "manufacturerID": 4417,
        "manufacturerName": "_TZ3000_g8n1n7lg",
        "model": "TS0001",
        "networkAddress": 29706,
        "powerSource": "Mains (single phase)",
        "stackVersion": 0,
        "type": "Router",
        "zclVersion": 3
      },
      "last_seen": "2025-01-26T19:38:14+01:00",
      "linkquality": 47,
      "power_on_behavior": "off",
      "state": "ON"
    }

    Definimos un sensor para saber la ultima conexión del dispositivo

        - state_topic: "zigbee2mqtt/rele_zigbee"
          availability_topic: "zigbee2mqtt/bridge/state"
          icon: "mdi:calendar-clock"
          value_template: "{{ value_json.last_seen }}"
          name: "rele_zigbee_ultima_conexion"        

    Creamos un sensor binario para saber si el dispositivo esta activo o no

        - state_topic: "zigbee2mqtt/rele_zigbee/availability"       
          availability_topic:  "zigbee2mqtt/rele_zigbee/availability"     
          name: rele_zigbee_disponibilidad      
          device_class: "connectivity"      
          payload_on: "online"
          payload_off: "offline"  

    Definimos la parte de puesta y lectura del estado del relé

        - name: rele_zigbee
          command_topic: "zigbee2mqtt/rele_zigbee/set"
          state_topic: "zigbee2mqtt/rele_zigbee"
          availability_topic: "zigbee2mqtt/bridge/state"
          icon: mdi:power-socket
          payload_on: "ON"
          payload_off: "OFF"
          value_template: "{{ value_json.state }}"

    Le damos algun retoque en customize.yaml

    binary_sensor.rele_zigbee_disponibilidad: 
      friendly_name: "Rele Zigbee"
    switch.rele_zigbee: 
      friendly_name: "Rele Zigbee"    

    Creamos un sensor para saber el tiempo transcurrido desde la ultima conexión

      - platform: template
        sensors:
          rele_zigbee_ultima_conexion_minutos:
            value_template: >-
              {% set x1 = as_timestamp(states('sensor.rele_zigbee_ultima_conexion')) %}
              {% set x2 = as_timestamp(now()) %}
              {% set time = x2 - x1 | int(0) %}
              {% set days = (time/86400) | int %}
              {% set hours = (time / 3600 % 24) | int %}
              {% set minutes = (((time / 3600) % 1) * 60) | int %}
              {{ days ~ 'd ' ~ hours ~ 'h ' ~ minutes ~ 'm' }}        
            friendly_name: Ultima conexión Rele Zigbee
            icon_template: "mdi:calendar-clock"

    Y ya podemos ponerlo por el lovelace

    - entity: binary_sensor.rele_zigbee_disponibilidad
    - entity: sensor.rele_zigbee_ultima_conexion_minutos
    - type: divider  

    Ya podemos crear nuestras automatización , en este caso para hacer pruebas cree una que si el OpenMQTTGateway no tenia comunicación durante 30 minutos lo reiniciase.

    - id: reinicio de OpenMQTTGateway si esta mas de quince minutos sin conectar 
      alias: reinicio de OpenMQTTGateway si esta mas de quince minutos sin conectar 
      initial_state: 'on'
      trigger:
        - platform: state
          entity_id: binary_sensor.ping_openmqttgateway
          # from: 'on'
          to: 'off'
          for:
            minutes: 30
      action:
        - service: notify.notif_telegram_bot
          data_template:
            message: "\U0001f648\U0001f648 Atención! el dispositivo *OpenMQTTGateway* se ha desconectado de la red interna , lo reiniciamos\U0001f648\U0001f648"            
        - service: switch.turn_off  
          entity_id: switch.rele_zigbee        
        - delay: 00:00:15
        - service: switch.turn_on
          entity_id: switch.rele_zigbee         

    Y con esto y un bizcocho ………….

2 comentarios en «Ultima entrada»

  1. Hola Antonio!! LLegue a tu web buscando un tutorial de como instalar un ZBDongle-E en un QNAP TS 251D pero aun ando bastante liado jaja ojala me puedas dar una mano si tienes un tiempo libre!! Abrazo desde Argentina!!

    Responder

Deja un comentario