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
Le daremos un friendly name en el fichero de config de zigbee2mqtt.
'0x00158d0003d4a2e2':
friendly_name: sensor_proximidad_timbre
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
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"
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 %}'
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
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" }}
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
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
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
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.