Sistema de aviso de accesos al hogar con Home Assistant

A partir de la instalación del servidor de Home Assistant en una Raspberry Pi con ArchLinux, vamos a continuar añadiendo servicios para esta plataforma.

En esta ocasión vamos a hacer uso de varias integraciones, incluyendo algunas con las que trabajamos en artículos anteriores, para proponer una solución que permita el envío vía Telegram de las imágenes captadas por una cámara situada en la entrada del hogar al ser abierto el portón.

Para ello, se hará uso de una tarjeta basada en ESP32 que incluye un sensor PIR para detección de movimientos y una cámara tipo ojo de pez que servirá para tomar las fotografías. Por otro lado, la detección de la apertura del portón se realizará mediante un sensor de puertas tipo Hall. Las imágenes se enviarán vía Telegram.

Elementos necesarios

Vamos a utilizar los siguientes elementos:

  • Tarjeta basada en ESP32 LILYGO TTGO T-Camera Plus
  • Sensor de puertas Aqara MCCGQ11LM

Instalaciones y configuraciones

Tarjeta ESP32

Software

Vamos a programar la TTGO T-Camera Plus con ESPHome a partir del siguiente archivo YAML:

esphome:
  name: esp32cam
  platform: ESP32
  board: esp-wrover-kit

wifi:
  ssid: "ssid_red"
  password: "passwd_red"

# Enable logging
logger:

# Enable Home Assistant API
api:

ota:

esp32_camera:
  name: cam_entrada
  external_clock:
    pin: GPIO32
    frequency: 20MHz
  i2c_pins:
    sda: GPIO13
    scl: GPIO12
  data_pins: [GPIO5, GPIO14, GPIO4, GPIO15, GPIO18, GPIO23, GPIO36, GPIO39]
  vsync_pin: GPIO27
  href_pin: GPIO25
  pixel_clock_pin: GPIO19
  resolution: VGA
  jpeg_quality: 10
  vertical_flip: true
  horizontal_mirror: true


binary_sensor:
  - platform: gpio
    id: cam_entrada_pir
    name: "cam_entrada_pir"
    pin:
      number: 33

i2c:
  sda: 21
  scl: 22
  scan: True

Para subir el código basta con conectar por USB la tarjeta al PC y escribir desde la línea de comandos:

$ esphome tcamera.yaml run

Integración en Home Assistant

La integración en Home Assistant se realiza mediante los menús «Ajustes» -> «Dispositivos y Servicios» -> [+ AÑADIR INTEGRACIÓN]. En esta última seleccionamos «ESPHome». Aquí introducimos la dirección IP del ESP32, que podemos consultar, por ejemplo, con nmap (corresponderá a un dispositivo Espressif).

Nmap scan report for 192.168.1.168
Host is up (0.018s latency).
MAC Address: 44:44:44:44:44:44 (Espressif)

Una vez introducido, pulsamos [ENVIAR] y nos pedirá que indiquemos el área del hogar donde estará instalado, normalmente la entrada.

Soporte

Por último, necesitaremos un soporte para la TTGO T-Camera Plus. Este lo imprimiremos en nuestra impresora 3D a partir de las piezas disponibles en Thingiverse. Necesitaremos 3 archivos STL: para el soporte de pared, para la caja y para la tapadera. Para esta última seleccionaremos la versión «espcam_front_fish.stl».

Imprimiremos el conjunto en PLA a una resolución de 0,2 mm y un relleno del 20% en cúbico.

Sensor de puertas

El sensor de puertas, al ser Zigbee, podemos integrarlo directamente con ZHA en Home Assistant.

Nótese que el dispositivo en cuestión queda identificado con «lumi.sensor_magnet.aq2».

Telegram

Necesitaremos tener nuestro Home Assistant configurado para poder enviar mensajes por Telegram.

Automatización en Home Assistant

Esta automatización tomará una secuencia de 3 imágenes capturadas por la cámara, una vez detectada la apertura del portón y algún movimiento, y la enviará por Telegram.

- id: '1683558847977'
  alias: Entrada a casa
  description: Captura imagen de quien entra en casa
  trigger:
  - type: opened
    platform: device
    device_id: yyyy
    entity_id: binary_sensor.lumi_lumi_sensor_magnet_aq2_opening
    domain: binary_sensor
  condition: []
  action:
  - repeat:
      while:
      - condition: or
        conditions:
        - type: is_on
          condition: device
          device_id: xxxx
          entity_id: binary_sensor.espcam01_pir
          domain: binary_sensor
        - type: is_open
          condition: device
          device_id: yyyy
          entity_id: binary_sensor.lumi_lumi_sensor_magnet_aq2_opening
          domain: binary_sensor
      sequence:
      - service: telegram_bot.send_photo
        data:
          authentication: digest
          file: /config/capturas/entrada.jpg
          capton: Entrada/salida a las {{ now().strftime("%H:%M:%S del %d/%m/%Y")
            }}
      - repeat:
          count: '3'
          sequence:
          - service: camera.snapshot
            data:
              filename: /config/capturas/entrada.jpg
            target:
              area_id: entrada
          - delay:
            hours: 0
            minutes: 0
            seconds: 0
            milliseconds: 500
          - service: telegram_bot.send_photo
            data:
              authentication: digest
              file: /config/capturas/entrada.jpg
              caption: Entrada/salida a las {{ now().strftime("%H:%M:%S del %d/%m/%Y")
                }}            
  mode: single

Así, cuando se abra el portón, recibiremos las imágenes en nuestro Telegram.

Deja un comentario