Expansor de timbre con Home Assistant – Parte II

Buenas , después de varios días de pruebas con el sensor de proximidad he visto que hay dos problemas , uno salvable por programación que es que al reiniciar el Docker de zigbee2mqtt manda un true que hace que suene el timbre , este ya esta salvado , pero otro que a pesar de habar bajado la sensibilidad al mínimo cuando cierran algunas puertas fuertemente en la escalera lo detecta y manda un falso positivo , este no se puede salvar tan fácilmente , pero siempre queda el plan B y el C !!!!

En este caso el plan B ha sido usar uno de los sensores magnéticos para puertas y ventanas de Xiaomi ( MCCGQ11LM) que tenia por casa y cambiar el sensor de vibración por uno magnético.

https://www.zigbee2mqtt.io/devices/MCCGQ11LM.html

El montaje queda de la siguiente forma:

Al activarse la bobina el campo magnético que genera basta para excitar el sensor del MCCGQ11LM , hay que tener en cuenta que funcionaria a la inversa de un sensor de ventana

Vista lateral del montaje del sensor

Le daremos un friendly name en el fichero de config de zigbee2mqtt.

'0x00158d0003d4a2e2': friendly_name: sensor_proximidad_timbre
Lenguaje del código: YAML (yaml)

Crearemos el sensor binario que captura la detección de movimiento.

# SENSOR PROXIMIDAD TIMBRE ENTRADA - platform: "mqtt" state_topic: "zigbee2mqtt/sensor_proximidad_timbre" availability_topic: "zigbee2mqtt/bridge/state" payload_on: false payload_off: true value_template: "{{ value_json.contact }}" device_class: "door" name: sensor_proximidad_timbre_evento
Lenguaje del código: YAML (yaml)

Estos son el resto de sensores : batería , sensibilidad y link quality

### SENSOR PROXIMIDAD TIMBRE - platform: "mqtt" state_topic: "zigbee2mqtt/sensor_proximidad_timbre" availability_topic: "zigbee2mqtt/bridge/state" unit_of_measurement: "%" icon: "mdi:battery" device_class: "battery" value_template: "{{ (((value_json.voltage|float)-2800)/5)|int }}" expire_after: 21600 force_update: true name: "sensor_proximidad_timbre_bateria" - platform: "mqtt" state_topic: "zigbee2mqtt/sensor_proximidad_timbre" availability_topic: "zigbee2mqtt/bridge/state" icon: "mdi:signal" unit_of_measurement: "lqi" value_template: "{{ value_json.linkquality }}" name: "sensor_proximidad_timbre_estado"
Lenguaje del código: YAML (yaml)

Este es un sensor de batería que añado a todos los sensores que tienen batería para que cambie el icono en función de la carga restante

sensor_proximidad_timbre_battery_level: friendly_name: Sensor proximidad timbre value_template: "{{ states.sensor.sensor_proximidad_timbre_bateria.state |default(-1)|int if states.sensor.sensor_proximidad_timbre_bateria is not none }}" unit_of_measurement: '%' icon_template: '{% if states.sensor.sensor_proximidad_timbre_bateria.state|int == 100 %} mdi:battery {% elif states.sensor.sensor_proximidad_timbre_bateria.state|int >= 90 %} mdi:battery-90 {% elif states.sensor.sensor_proximidad_timbre_bateria.state|int >= 80 %} mdi:battery-80 {% elif states.sensor.sensor_proximidad_timbre_bateria.state|int >= 70 %} mdi:battery-70 {% elif states.sensor.sensor_proximidad_timbre_bateria.state|int >= 60 %} mdi:battery-60 {% elif states.sensor.sensor_proximidad_timbre_bateria.state|int >= 50 %} mdi:battery-50 {% elif states.sensor.sensor_proximidad_timbre_bateria.state|int >= 40 %} mdi:battery-40 {% elif states.sensor.sensor_proximidad_timbre_bateria.state|int >= 30 %} mdi:battery-30 {% elif states.sensor.sensor_proximidad_timbre_bateria.state|int >= 20 %} mdi:battery-20 {% elif states.sensor.sensor_proximidad_timbre_bateria.state|int >= 10 %} mdi:battery-10 {% else %} mdi:battery-outline {% endif %}'
Lenguaje del código: YAML (yaml)

Le damos los valores en customize.yaml

binary_sensor.sensor_proximidad_timbre_evento: friendly_name: Sensor timbre icon: "mdi:bell-ring" sensor.sensor_proximidad_timbre_bateria: friendly_name: Sensor timbre sensor.sensor_proximidad_timbre_estado: friendly_name: Sensor timbre
Lenguaje del código: YAML (yaml)

Aquí empezamos con las automatizaciones , en esta simplemente enviamos un aviso por telegram para que quede constancia pero no hacemos nada ya que no esta activado el input_boolean int_amplificar_timbre

####################################### ### Automatizaciones timbre entrada ####################################### - id: Alguien ha pulsado el timbre de la entrada pero no se expande alias: Alguien ha pulsado el timbre de la entrada pero no se expande initial_state: 'on' trigger: - platform: state entity_id: binary_sensor.sensor_proximidad_timbre_evento to: 'off' condition: - condition: state entity_id: input_boolean.int_amplificar_timbre state: 'off' - condition: state entity_id: input_boolean.int_ha_completamente_iniciado state: 'on' action: - service: notify.notif_telegram_bot data: message: | {{ "\U0001F514" }} *Timbre entrada :* Sin expandir{{ "\U0001F514" }}
Lenguaje del código: YAML (yaml)

En esta si que esta activado el input_boolean int_amplificar_timbre , esta dentro de rango de horas que le hemos indicado y además hay alguien de la familia en casa , entonces hace lo siguiente :

  • Envía un mensaje por Telegram dando en aviso
  • Enciende de color amarillo los tres Gateways Xiaomi que tenemos actualmente
  • Hace sonar bien alto un tono de llamar a la puerta por los tres Gateways Xiaomi
  • Hace cinco ciclos de encendido/apagado de las tres luces diferentes de la habitación de mi hijo que entra en modo autista con los cascos de gaming
  • Apaga los tres Gateways Xiaomi
- id: Alguien ha pulsado el timbre de la entrada y se expande alias: Alguien ha pulsado el timbre de la entrada y se expande initial_state: 'on' trigger: - platform: state entity_id: binary_sensor.sensor_proximidad_timbre_evento to: 'off' condition: - condition: state entity_id: input_boolean.int_amplificar_timbre state: 'on' - after: '07:00:00' before: '23:30:00' condition: time - condition: state entity_id: input_boolean.int_alguien_en_casa state: 'on' - condition: state entity_id: input_boolean.int_ha_completamente_iniciado state: 'on' action: - service: notify.notif_telegram_bot data: message: | {{ "\U0001F514" }} *Timbre entrada :* Alguien ha pulsado el timbre{{ "\U0001F514" }} - service: light.turn_on entity_id: light.gateway_light_7c49eb1d1d0a data: brightness: 255 rgb_color: [255,128,0] - service: light.turn_on entity_id: light.gateway_light_286c07f0e736 data: brightness: 255 rgb_color: [255,128,0] - service: light.turn_on entity_id: light.gateway_light_286c07f0b574 data: brightness: 255 rgb_color: [255,128,0] # Doorbells # 10 - Doorbell # 11 - Knock at a door # 12 - Amuse # 13 - Alarm clock - service: xiaomi_aqara.play_ringtone data: gw_mac: !secret gateway_1_mac ringtone_id: 10 ringtone_vol: 80 - service: xiaomi_aqara.play_ringtone data: gw_mac: !secret gateway_2_mac ringtone_id: 10 ringtone_vol: 80 - service: xiaomi_aqara.play_ringtone data: gw_mac: !secret gateway_3_mac ringtone_id: 10 ringtone_vol: 80 # Alternamos las luces de la habitacion de Oriol - service: light.toggle entity_id: light.tira_led_cama_oriol - service: light.toggle entity_id: light.tira_led_mesa_oriol - service: light.toggle entity_id: light.luz_oriol - delay: 00:00:01 - service: light.toggle entity_id: light.tira_led_cama_oriol - service: light.toggle entity_id: light.tira_led_mesa_oriol - service: light.toggle entity_id: light.luz_oriol - delay: 00:00:01 - service: light.toggle entity_id: light.tira_led_cama_oriol - service: light.toggle entity_id: light.tira_led_mesa_oriol - service: light.toggle entity_id: light.luz_oriol - delay: 00:00:01 - service: light.toggle entity_id: light.tira_led_cama_oriol - service: light.toggle entity_id: light.tira_led_mesa_oriol - service: light.toggle entity_id: light.luz_oriol - delay: 00:00:01 - service: light.toggle entity_id: light.tira_led_cama_oriol - service: light.toggle entity_id: light.tira_led_mesa_oriol - service: light.toggle entity_id: light.luz_oriol - delay: 00:00:01 - service: light.toggle entity_id: light.tira_led_cama_oriol - service: light.toggle entity_id: light.tira_led_mesa_oriol - service: light.toggle entity_id: light.luz_oriol - delay: 00:00:01 - service: light.toggle entity_id: light.tira_led_cama_oriol - service: light.toggle entity_id: light.tira_led_mesa_oriol - service: light.toggle entity_id: light.luz_oriol - delay: 00:00:01 - service: light.toggle entity_id: light.tira_led_cama_oriol - service: light.toggle entity_id: light.tira_led_mesa_oriol - service: light.toggle entity_id: light.luz_oriol #Apagamos la luz del gateway - service: light.turn_off entity_id: light.gateway_light_7c49eb1d1d0a - service: light.turn_off entity_id: light.gateway_light_286c07f0e736 - service: light.turn_off entity_id: light.gateway_light_286c07f0b574
Lenguaje del código: YAML (yaml)

Una cosa importante a resaltar es que tuve que montar esta automatización ya que cada vez que arrancaba Home Assistant enviaba un pulso que hacia sonar el timbre , de esta forma eliminamos que el pulso inicial dispare la automatización

########################################## ########## ARRANQUE DEL SISTEMA ########## ########################################## - id: boot Sistema domotica completamente iniciado alias: boot Sistema domotica completamente iniciado initial_state: 'on' trigger: - event: start platform: homeassistant action: - delay: 00:05:00 - service: input_boolean.turn_on entity_id: input_boolean.int_ha_completamente_iniciado
Lenguaje del código: YAML (yaml)

Así nos llegarían las notificaciones a Telegram

Ya solo nos queda mostrarlo en nuestro panel

- type: entities title: Recibidor show_name: true show_state: false show_header_toggle: false columns: 3 entities: - light.luz_recibidor - input_boolean.int_foto_entrada - binary_sensor.sensor_movimiento_recibidor_evento - binary_sensor.sensor_proximidad_timbre_evento - input_boolean.int_amplificar_timbre - input_boolean.int_cortesia_si_todo_apagado
Lenguaje del código: YAML (yaml)

Y como siempre hay un plan C en caso de que fallase el plan B , en este caso no lo llegue a realizar , pero ya lo tenia preparado y estudiado , con un relé de 230V el cual conectaría su bobina en paralelo con la alimentación del timbre y usando los contactos común y normalmente abierto cerraría los contactos de un Xiaomi MiJia wireless switch ( WXKG01LM ) ya que tengo varios que me sobraron de cuando los use para convertir los interruptores Simón a zigbee.

Deja un comentario