Expansor de timbre con Home Assistant

Buenas , en esta ocasión montaremos un expansor del timbre de entrada aprovechando parte de la plataforma actual con Home Assistant , para ello lo único nuevo será el sensor de vibración TuYa TS0210 , conectado a nuestro zigbee2mqtt , podéis encontrar mas información de este sensor en la pagina del proyecto :

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

Este sensor va alimentado por un par de pilas AAA lo que teóricamente garantiza dos años o mas de autonomía de bateria.

Dispone de un botón lateral de reset y emparejamiento , y de un indicador superior de color rojo cuando detecta movimiento

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

'0x84fd27fffe2c1eb1': friendly_name: sensor_vibracion_timbre
Lenguaje del código: YAML (yaml)

Hemos tenido que agrandar el agujero de salida de sonido superior del timbre que tenemos montado actualmente en casa

El sensor reposaría simplemente en los soportes de la lamina metálica superior , siendo golpeada por esta cuando entra en funcionamiento el electroimán , que a su vez hará que el sensor detecte vibraciones

Vista de como queda el timbre montado con el sensor ya montado , importante que quede holgado ya no debe estar aprisionado por la tapa para que quede libre al movimiento.

Crearemos el sensor binario que captura la detección de movimiento , es muy importante el off_delay: 2 , podeis poner el valor en segundos que mas oportuno creáis , si no siempre este sensor estará a True.

# BINARY SENSOR VIBRACION TIMBRE ENTRADA

# BINARY SENSOR VIBRACION TIMBRE ENTRADA - platform: "mqtt" state_topic: "zigbee2mqtt/sensor_vibracion_timbre" availability_topic: "zigbee2mqtt/bridge/state" value_template: "{{ value_json.vibration }}" payload_on: true payload_off: false device_class: "vibration" name: sensor_vibracion_timbre_evento off_delay: 2 # 2 segundos
Lenguaje del código: YAML (yaml)

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

### SENSOR VIBRACION TIMBRE - platform: "mqtt" state_topic: "zigbee2mqtt/sensor_vibracion_timbre" availability_topic: "zigbee2mqtt/bridge/state" value_template: "{{ value_json.battery }}" unit_of_measurement: "%" device_class: "battery" icon: "mdi:battery" expire_after: 21600 force_update: true name: "sensor_vibracion_timbre_bateria" - platform: "mqtt" state_topic: "zigbee2mqtt/sensor_vibracion_timbre" availability_topic: "zigbee2mqtt/bridge/state" value_template: "{{ value_json.sensitivity }}" icon: "mdi:bell-ring" name: "sensor_vibracion_timbre_sensibilidad" - platform: "mqtt" state_topic: "zigbee2mqtt/sensor_vibracion_timbre" availability_topic: "zigbee2mqtt/bridge/state" value_template: "{{ value_json.linkquality }}" unit_of_measurement: "lqi" icon: "mdi:signal" name: "sensor_vibracion_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_vibracion_timbre_bateria_level: friendly_name: Sensor timbre puerta value_template: "{{ states.sensor.sensor_vibracion_timbre_bateria.state |default(-1)|int if states.sensor.sensor_vibracion_timbre_bateria is not none }}" unit_of_measurement: '%' icon_template: '{% if states.sensor.sensor_vibracion_timbre_bateria.state|int == 100 %} mdi:battery {% elif states.sensor.sensor_vibracion_timbre_bateria.state|int >= 90 %} mdi:battery-90 {% elif states.sensor.sensor_vibracion_timbre_bateria.state|int >= 80 %} mdi:battery-80 {% elif states.sensor.sensor_vibracion_timbre_bateria.state|int >= 70 %} mdi:battery-70 {% elif states.sensor.sensor_vibracion_timbre_bateria.state|int >= 60 %} mdi:battery-60 {% elif states.sensor.sensor_vibracion_timbre_bateria.state|int >= 50 %} mdi:battery-50 {% elif states.sensor.sensor_vibracion_timbre_bateria.state|int >= 40 %} mdi:battery-40 {% elif states.sensor.sensor_vibracion_timbre_bateria.state|int >= 30 %} mdi:battery-30 {% elif states.sensor.sensor_vibracion_timbre_bateria.state|int >= 20 %} mdi:battery-20 {% elif states.sensor.sensor_vibracion_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

sensor.sensor_vibracion_timbre_bateria: friendly_name: Sensor timbre sensor.sensor_vibracion_timbre_estado: friendly_name: Sensor timbre binary_sensor.sensor_vibracion_timbre_evento: friendly_name: Sensor timbre icon: "mdi:bell-ring"
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_vibracion_timbre_evento to: 'on' - condition: state entity_id: input_boolean.int_ha_completamente_iniciado state: 'on' condition: - condition: state entity_id: input_boolean.int_amplificar_timbre state: 'off' 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_vibracion_timbre_evento to: 'on' condition: - condition: state entity_id: input_boolean.int_amplificar_timbre state: 'on' - after: '07:00:00' before: '23:00: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)

Esta automatización envía el nivel de sensibilidad al detector de vibraciones ,pudiendo ser cualquiera de estos valores ( low, medium, high )

- id: Sensibilidad timbre entrada alias: Sensibilidad timbre entrada # Configuramos el valor de la sensibilidad al iniciar HA trigger: - event: start platform: homeassistant action: service: mqtt.publish #The possible values are: low, medium, high. data_template: topic: "zigbee2mqtt/sensor_vibracion_timbre/set" payload: '{"sensitivity":low}'
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_vibracion_timbre_evento - input_boolean.int_amplificar_timbre - input_boolean.int_cortesia_si_todo_apagado
Lenguaje del código: YAML (yaml)

Deja un comentario