Domotizando telefonillo (Parte 2. Software)

En esta segunda parte aprenderemos como utilizar ESPHome para integrar la placa que diseñamos en la primera parte en nuestro Home Assistant y que nos notifique la pulsación del botón del telefonillo a través de Google Home, de Telegram y en nuestro caso, aunque en siguientes entradas aprenderemos como realizar la integración del Gateway de Xiamo, lo utilizaremos para generar un sonido de llamada.

En el básico Integración y uso de ESPHome en Home Assistant, aprendimos como integrar una placa ESP32 en nuestro Home Assistant para realizar el control de temperatura. posteriormente vimos como detectar una pulsación en un botón en nuestro básico Integración de un pulsador en Home Assistant con ESPHome. Con estos básicos ya podemos hacernos una idea de que nuestro objetivo es crear un código para grabar en nuestra placa ESP32 que permita detectar el cierre del relé, ya que como explicamos en la primera parte de este artículo, cuando alguien pulse el botón de nuestro piso en el telefonillo, tal y como lo hemos conectado se cerrará uno de los relés de nuestra placa.

Configurando nuestro telefonillo en Home Assistant

Detectando la activación del relé de llamada

Como nuestro objetivo es detectar la activación en el GPIO 22, tras crear el dispositivo en ESPHome tal y como vimos en nuestro básico, el siguiente paso será crear un sensor binario que detecte el estado HIGH en este pin. Para ello utilizaremos el siguiente código:

Con este código y siguiendo todos los pasos que vimos en el básico de ESPHome, tendríamos una entidad denominada ‘Llamada telefonillo’ que se activará cuando alguien pulse el botón de llamada.

binary_sensor:
  - platform: gpio
    pin: 22
    name: "Llamada telefonillo"
    device_class: door

De esta forma ya hemos conseguido detectar la pulsación del botón del telefonillo y con ello poder realizar en nuestro Home Assistant automatizaciones que desencadenen las acciones que posteriormente utilizaremos para la notificación.

Apertura de la puerta

Como recordaras, en la primera parte de este artículo, utilizamos un segundo relé conectado a nuestro ESP32 con el objetivo de conectarlo al cable de apertura de puerta y poder accionarla desde nuestro Home Assistant. En este paso vamos a crear a través de ESPHome la interacción con este relé para poder controlarlo remotamente.

Para poder realizar esta acción, configuraremos un dispositivo de tipo Switch que estará conectado al GPIO 21 tal y como hicimos en nuestra placa y así poder activar el relé. El código para nuestro dispositivo en ESPHome es el siguiente:

switch:
  - platform: gpio
    pin: 21
    name: "Apertura de portal"

Al igual que sucedía con el punto anterior, tras integrar este nuevo dispositivo de ESPHome en nuestro Home Assistant, tendremos una entidad denominada ‘Apertura de portal’ que estará disponible para su activación remota.

Con estos sencillos pasos habríamos integrado la placa que desarrollamos en el post anterior en nuestro Home Assistant.

Una vez que grabemos el programa en el dispositivo siguiendo las instrucciones de nuestro básico, tendremos activo nuestro dispositivo siempre que se encuentre conectado a la corriente y dentro de nuestra red WIFI.


Notificando la llamada en el portal (Automatizaciones)

A continuación realizaremos una automatización que detecte la llamada en el portal a través del desencadenante que veremos a continuación e iremos escalando nuestra automatización para que notifique esa llamada en diferentes dispositivos.

Si has seguido los mismos pasos y el nombre del sensor binario que has creado es el mismo que el de este artículo, el desencadenante de la pulsación del botón de llamada del telefonillo será el siguiente, en caso contrario deberas indicar el nombre que le hayas asignado al sensor binario que creamos en el primer paso en nuestro ESPHome.

De esta forma, la automatización se iniciará cada vez que alguien pulse el botón del telefonillo ya que esta pulsación activará el relé y enviará la señal a nuestro Home Assistant a través de ESPHome.

Enviando mensaje a Telegram

Como ya vimos en un artículo previo en nuestra web, integrar Telegram en nuestro Home Assistant es realmente sencillo, en definitiva lo que hicimos en nuestro artículo ‘Notificaciones vía Telegram en nuestro Home Assistant‘ fue crear un servicio de notificaciones que envía mensajes a través de las automatizaciones.

Haciendo uso de la integración de Telegram que creamos en su momento, vamos a conseguir que cuando alguien pulse el botón del telefonillo, nuestro Home Assistant envíe un mensaje a nuestro Telegram.

En la automatización que estamos creando con el desencadenante que vimos en el paso anterior, vamos a incluir el envío de la notificación, en nuestro caso lo haremos suponiendo que ya tenemos creado nuestro notificador de Telegram, si no es así, acuden al artículo en el que explicamos como hacerlo.

El código de los datos del servicio por si prefieres copiar y pegar es el siguiente:

data:
message: Han llamado al telefonillo ESPHome
title: '*Telefonillo*'

Una vez realizados estos pasos, podemos guardar nuestra automatización para comprobar que funciona correctamente aunque más adelante la retomaremos para continuar con las siguientes notificaciones que realizará nuestro telefonillo domótico.

Cómo puedes ver en la siguiente imagen, nuestra automatización funciona correctamente.


Enviando mensaje de voz a través de Google Home

La integración de nuestros dispositivos Google Home en Home Assistant se realiza automáticamente cuando realizamos la búsqueda de dispositivos, de esta forma todos los Google Home que estén en nuestra red WIFI serán detectados como Media Player en nuestro Home Assistant. Esto permite su uso de diferentes formas en nuestro sistema domótico y una de las más sencillas y útiles es la de realizar notificaciones a través de estos altavoces.

Si retomamos la automatización en la que estamos trabajando, ya que al ser el mismo desencadenante vamos a integrar todas las notificaciones en la misma automatización, podemos preparar la parte de la notificación a través de nuestros Google Home.

Con los Google Home integrados en nuestro sistema, tendremos disponible el servicio tts.google_translate_say, anteriormente existían otros servicios pero era necesario configurar correctamente el idioma de nuestro dispositivo, desde que el servicio paso a depender de la plataforma Translate de Google, es tan sencillo como indicar el idioma de la automatización y el texto que debe leer google.

Con este sencillo código en el que indicamos el nombre del dispositivo que utilizaremos para reproducir el audio, el idioma y el texto del mensaje, cada vez que se ejecute la automatización recibiremos la notificación en nuestro Google Home.

A continuación los datos del servicio en formato texto por si prefieres copiar y pegar:

entity_id: media_player.despacho
language: es
message: Han llamado al telefonillo

De esta forma, cuando se pulse el botón del telefonillo, recibiremos Google Home nos lo avisará.


Emitiendo un sonido a través de nuestro Gateway Xiaomi

En función de la versión de nuestro Gateway de Xiaomi, la integración puede ser más o menos complicada, en este artículo no vamos a profundizar en el procedimiento de integración ya que dedicaremos más adelante un artículo completo sobre este tema pero en el caso de que ya lo tengas integrado en tu Home Assistant, vamos a añadir otra acción a la automatización con la que estamos trabajando que será la siguiente:

Al tener integrado un Xiaomi Gateway, podemos utilizar el servicio xiaomi_aqara.play_ringtone, que nos permite emitir un tono de llamada a través de nuestro Gateway.

Como se observa es necesario disponer de la dirección MAC de nuestro Gateway, también indicamos el tono que queremos utilizar de los disponibles, en nuestro caso el 12 y por último indicamos el volumen del sonido.

Los sonidos disponibles son los siguientes según la documentación de Home Assistant:

  • Alarms
    • 0 – Police car 1
    • 1 – Police car 2
    • 2 – Accident
    • 3 – Countdown
    • 4 – Ghost
    • 5 – Sniper rifle
    • 6 – Battle
    • 7 – Air raid
    • 8 – Bark
  • Doorbells
    • 10 – Doorbell
    • 11 – Knock at a door
    • 12 – Amuse
    • 13 – Alarm clock
  • Alarm clock
    • 20 – MiMix
    • 21 – Enthusiastic
    • 22 – GuitarClassic
    • 23 – IceWorldPiano
    • 24 – LeisureTime
    • 25 – ChildHood
    • 26 – MorningStreamLiet
    • 27 – MusicBox
    • 28 – Orange
    • 29 – Thinker

De esta forma, en el momento en el que alguien llame a nuestro telefonillo recibiremos una notificación a través de Telegram, Google Home y si lo tenemos integrado, generará un sonido en nuestro Gateway de Xiaomi.

Apertura remota de la puerta del portal

Para la apertura de la puerta del portal hacer uso del interruptor (Switch) que hemos integrado en HomeAssistant desde ESPHome no es lo más practico ya que al comportarse como un interruptor es necesario activarlo y desactivarlo por lo que debemos buscar una formula que lo permita o bien actuar como un pulsador o bien desconectarse pasado un tiempo mínimo.

En nuestro caso, hemos decidido que para la apertura de la puerta del portal generaremos un script que active la apertura en la siguiente secuencia, 1 segundo abriendo, 1 segundo inactivo, 2 segundos abriendo, desactivado.

Para construir este script hemos utilizado la interface gráfica y dentro de la opción Configuración/Scripts hemos creado uno nuevo llamado Abrir_Portal con la siguiente configuración:

En definitiva la secuencia se resume en lo siguiente:

Llamamos al servicio switch.turn.on sobre la entidad switch.apertura_de_portal, tal y como la habíamos denominado en ESPHome, generamos un retardo de un segundo y llamamos al servicio switch.turn.off sobre la misma entidad. Nuevamente generamos un retardo de 1 segundo y volvemos a llamar al servicio switch.turn.on sobre la misma entidad. Nuevo retardo, esta vez de dos segundos que será el tiempo que permanezca activo y finalmente llamamos al servicio switch.turn.off para desactivar nuevamente esta entidad.

De esta forma, cada vez que ejecutemos este script se realizará la secuencia completa.

Para facilitar la lectura y comprensión, el código de nuestro script es el siguiente:

'1589045189789':
  alias: Abrir_portal
  sequence:
  - data: {}
    entity_id: switch.apertura_de_portal
    service: switch.turn_on
  - delay: 00:00:01
  - entity_id: switch.apertura_de_portal
    service: switch.turn_off
  - delay: 00:00:01
  - entity_id: switch.apertura_de_portal
    service: switch.turn_on
  - delay: 00:00:02
  - entity_id: switch.apertura_de_portal
    service: switch.turn_off

De esta forma podemos abrir la puerta del portal desde nuestro Home Assistant.

Esta instalación no invalida en ningún caso el funcionamiento físico del telefonillo por lo que el botón de apertura sigue funcionando con normalidad.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *