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
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
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"
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 %}'
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"
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" }}
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
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
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}'
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