Sensor de movimiento y conexión de registro de alarma y video en Home Assistant en Raspberry pi

Quiero hablar sobre mi poca experiencia trabajando con Home Assistant (en lo sucesivo, HA) en el Raspberry pi y sobre la conexión de la función de registro de video, el sensor de movimiento y, en consecuencia, la función de seguridad del hogar para recibir imágenes por correo en caso de una operación de "seguridad".

Por supuesto, una de las razones es el deseo de comprender a partir de sus comentarios que lo que hice "hizo mal" después de todo, implementar este escenario.

Hay tres formas de configurar la funcionalidad anterior: "sin problemas", "breve" e "independiente". En el primer caso, usted, después de haber descargado la imagen terminada del sitio https://ViaMyBox.com/downloadpagepara su Raspberry pi, puede ver cómo se ve todo en el formulario ya configurado. En el segundo caso, puede descargar el archivo zip del sitio web o del proyecto github, instalar e instalar la imagen del acoplador HA a través de la utilidad (sudo via-setup.sh) para ver cómo está configurado todo. Y finalmente, la tercera forma es configurar "todo a su manera": tome algo útil del sitio o githab del proyecto, o de este tutorial. Enlaces a todo al final del artículo.

Supongamos que ya tiene un Home Assistant (HA) en funcionamiento. En este artículo, consideraremos solo aspectos de la formación de configuraciones yaml y una descripción de la secuencia de reglas y condiciones que conducen a una acción específica, en nuestro caso, la conexión de "seguridad de la casa" y un script que comienza a tomar imágenes dentro de los 5 segundos posteriores a la activación del sensor de movimiento. Y como resultado, Home Assistant envía las fotos tomadas por correo. No soy especialista en yaml o en la creación de configuraciones para Home Assistant, pero, siguiendo los ejemplos de trabajo, obtuve una configuración de trabajo, que quiero compartir.

Todos los archivos a los que haremos referencia los expondré al final del artículo para una revisión más conveniente. No trataré aquí el trabajo de los scripts para grabar video en bash o python en este ejemplo. Solo asistente de hogar. Pero si tienes preguntas, ¡bienvenido!

Al final, todo se ve así para mí (resaltado en rojo que consideraremos en el artículo):





uso Raspberry pi como plataforma. Y mi ruta a los archivos de configuración es / usr / share / hassio / homeassistant /. La ruta a sus archivos de configuración puede ser diferente de mi ruta. En ese momento, tenía Home Assistant 0.101.3. Nos interesarán los archivos de configuración en este directorio: configuration.yaml y automation.yaml.

Después de cada cambio en estos archivos, es importante recordar que será necesario verificar la configuración después de nuestros cambios para ver si hay algún error. Esto se hace en la pestaña Panel del Asistente de inicio -> Configuración -> Controles del servidor -> Comprobar configuración. Y luego, en el mismo lugar en que realizamos Reload Automations y Reload Scripts, si la verificación fue exitosa. Y, en caso de duda, la reinicialización de la administración del servidor en la misma pestaña actualiza con precisión la configuración.

El sensor de movimiento HC-SR501 está conectado al bus GPIO Raspberry pi. Es necesario conectar correctamente los tres cables de contacto al GPIO, y podemos usar nuestro sensor en acción. El sensor tiene tres contactos: potencia gcc (+), cero gnd (-), contacto de control (datos). Después de leer la descripción del GPIO, los conecté a mi frambuesa de la siguiente manera. Conecté hc-sr501 al conector GPIO: pin # 2 - 5.5vvcc; pin # 26 (13a fila) - contacto de datos y pin # 6 - gnd (-) del sensor.

Utilizo una cámara usb o una cámara csi junto con mjpg-streamer como fuente de la foto. Cómo instalar y configurar mjpg-streamer en Raspberry pi, no lo consideraremos aquí. Ejemplos de instalación rápida en Internet mucho. Sin embargo, quiero decir que uso datos de este proyectoLa instalación de este módulo también se describe en detalle allí. O use cualquier método conveniente para tomar fotos y videos. Después de todo, qué script bash para sujetar a HA, en última instancia, depende de usted.

Ahora describiremos nuestro sensor en configuration.yaml, digamos, a través de la línea de comando:

sudo nano /usr/share/hassio/homeassistant/configuration.yaml

aunque usar notepad ++ con winscp puede ser más conveniente ...

Describimos la secuencia de configuraciones para el HC-SR501 de esta manera:

binary_sensor:
  - platform: rpi_gpio
    #name: HC-SR501
    ports:
      7: Sensor HC-SR501
    invert_logic: false

Cabe señalar que aquí lo importante son las configuraciones en las líneas que describen la conexión a los contactos de control (datos) de los sensores: pin # 7

puertos:

7: Sensor HC-SR501

El Home Assistant tiene una herramienta incorporada para activar la función de seguridad del hogar. Lo describiremos en nuestra configuration.yaml, usando la descripción: www.home-assistant.io/integrations/manual

alarm_control_panel:
  - platform: manual
    name: Home Alarm
    pending_time: 60
     delay time 40
     triggered:
    pending_time: 0
    code: 1234

Esta configuración significa que tenemos 60 segundos para salir de la casa (después de este tiempo, la alarma se encenderá) y 40 segundos para apagarla (con la contraseña 1234) al regresar a casa. Por alguna razón, siempre se va más de lo que viene.

Ahora describiremos el mecanismo para encender y apagar las fotos mediante el funcionamiento del sensor de movimiento en nuestra configuration.yaml (puede encontrar más información sobre la plataforma switch - command_line aquí ):

 - platform: command_line
   switches:
      start_stop_motion_rec_timelapse:
        friendly_name: 'Record motion timelapse video'
        command_on: 'curl http://localhost/start_mjpgstrm.php  && curl http://localhost//rec-motion-mjpg.php'
        command_off: 'curl http://localhost/stop_mjpgstrm.php && curl http://localhost/rec-motion-mjpg-stop.php'


Aquí vinculamos el comando enable command_on y command_off off con nuestros scripts que controlan la grabación de la cámara. En este caso, cuando se ejecuta command_on, 2 scripts se ejecutan secuencialmente. Esto está iniciando mjpg-streamer y activando la grabación del sensor de movimiento. El acceso a los scripts de bash pasa por el archivo php del sitio de trabajo en Raspberry pi. Para hacer esto, configuré nginx y acceso web, y cuando accedo a través de un navegador en la forma http: // <dirección IP de su Raspberry pi> /start_mjpgstrm.php, nuestro script php debe ejecutarse. Este script ejecuta mjpg-streamer en esta situación.

No consideramos la configuración de acceso web en este artículo. Definitivamente, esto no es seguridad, pero debido al hecho de que tengo HA en Docker, me enfrenté al hecho de que tengo un entorno de Docker aislado y el "mundo exterior" del sistema operativo que puedo ver al contactar mi sitio a través de php. Probablemente hay un montón de buenas soluciones de Docker o HA Gurus. ¡Escriba, sería interesante saberlo!

Dejaré una lista de estos scripts en el artículo, no nos detendremos en ellos. En este artículo quiero rastrear solo la formación de la secuencia de acciones en Home Assistant.

Todo esto se coloca en el objeto start_stop_motion_rec_timelapse. Será nuestro interruptor visual, con el que controlaremos la grabación de fotos cuando se active el sensor de movimiento.



Podemos visualizar estos objetos creados por nosotros en la pestaña Asistente de inicio -> Overwiew, cambiando la activación del modo de configuración de Configurar la interfaz de usuario en la esquina superior derecha.



Reinicie HA en el navegador en la pestaña "Configuración -> Control del servidor" para recoger nuestra configuration.yaml.

A continuación, seleccione el signo más amarillo en la parte inferior de la ventana del navegador, haga clic en la tarjeta de entidades y adjunte los objetos creados a los mapas.



Para nuestro sensor, seleccione la tarjeta del sensor. Se verá así:



Como puede ver en la imagen, en el segundo campo de la entidad, el interruptor anterior es: switch.start_stop_motion_rec_timelapse.

Nos permite activar y desactivar nuestra grabación en el sensor de movimiento, independientemente de la inclusión de la función de "seguridad en el hogar". Y, en general, ya debería funcionar después de todas las acciones anteriores.

Bueno, y en consecuencia, el mapa del panel de alarma:



hay otro punto interesante. Yo uso Home Assistant como un contenedor acoplable. En este sentido, la ruta a nuestro script será diferente de la ruta real al archivo de script. Después de todo, la estructura de archivos dentro del contenedor está virtualizada y conectada con la estructura de archivos real a través de volúmenes acoplados montados. Se ve así: Ruta dentro del contenedor: / config / scripts / Ruta dentro del sistema operativo: / usr / share / hassio / homeassiatnt / scripts. Así que mira la configuración de tu contenedor, cómo se configuran estos volúmenes en el campo Binds. Si HA tienes allí.

sudo docker inspect homeassistant|less

Cuando se activa el sensor de movimiento, en el momento en que se enciende la alarma: quiero, además del hecho de que estamos comenzando una fotografía rápida (instantáneas de timelapse), recibiría una advertencia por correo y una imagen. Yo paralelo los procesos. En la primera foto, el registro (instantáneas de lapso de tiempo) se produce dentro de unos segundos después de que se activa el sensor. Para hacer esto, ejecuto mjpg-streamer curl localhost / start_mjpgstrm.php , inicio php: surl http: //localhost/rec-motion-mjpg.php . Él, a su vez, ejecuta el script python mov.py. Todos los archivos y enlaces descritos se encuentran al final del artículo como referencia. Y otro script takeSnapshotWebcam.sh toma una instantánea, que envío en un correo electrónico. Describo estos scripts en nuestra configuration.yaml así:

shell_command:
#      
  take_snapshot_webcam: '/config/scripts/takeSnapshotWebcam.sh'
#  mjpg-streamer 
  start_mgpg_streamer: 'curl http://localhost/start_mjpgstrm.php'
# mjpg-streamer
  stop_mgpg_streamer: 'curl http://localhost/stop_mjpgstrm.php'
#      5 
  start_motion_rec: 'curl http://localhost/rec-motion-mjpg.php'
# 
  stop_motion_rec: 'curl http://localhost/rec-motion-mjpg-stop.php'

Allí, en configuration.yaml, describimos nuestro objeto para enviar por correo:

notify:
  - name: ha_sendmail
    platform: smtp
#    gmail
    server: smtp.gmail.com
    port: 587
    timeout: 15
#  
    sender: user@gmail.com
    encryption: starttls
    username: user@gmail.com
    password: passwd
#  (       ,    )
    recipient:
      - user@gmail.com
    sender_name: My Home Assistant

Un punto importante! Para que nuestro HA se conecte y envíe cartas (campo del remitente), debemos habilitar a gmail para que use este cuadro en nuestro servicio de HA. Cómo hacer esto es el enlace aquí: myaccount.google.com/lesssecureapps

Y luego, describimos el mecanismo de automatización en sí cuando la alarma home_alarm está activada en automation.yaml:

#   (alias) “  ,   ”
- alias: 'Trigger alarm while armed away'
#alias ,     “on”
  trigger: 
    - platform: state
      entity_id: binary_sensor.sensor_hc_sr501
      to: 'on'
# ,         “armed away”
  condition:
    - condition: state
      entity_id: alarm_control_panel.home_alarm
      state: armed_away
#     
  action:
# mjpg-streamer ( )
    - service: shell_command.start_mgpg_streamer
# ,   
    - service: shell_command.start_motion_rec
#    “  ”   HA   “ ”
    - service: alarm_control_panel.alarm_trigger
      entity_id: alarm_control_panel.home_alarm

El siguiente grupo de condiciones y acciones es enviar un mensaje de consola al deshabilitar "seguridad" y desactivar nuestros scripts de grabación de movimiento:

- alias: 'Send notification when alarm is Disarmed'
  trigger:
    - platform: state
      entity_id: alarm_control_panel.home_alarm
      to: 'disarmed'
  action:
    - service: shell_command.stop_mgpg_streamer
    - service: shell_command.stop_motion_rec
    - service: persistent_notification.create
      data:
       message: The alarm is Disarmed at {{ states('sensor.date_time') }}"

Y finalmente, el tercer grupo: enviamos una carta con una foto:

- alias: 'Send notification when alarm triggered'
  trigger: 
   - platform: state
     entity_id: alarm_control_panel.home_alarm
     to: 'triggered'
  action:
    - service: persistent_notification.create
      data:
       message: Notification when alarm triggered. Motion sensor HC-SR501 detected.
    - delay:
       seconds: 4
#     
    - service: script.webcam_snapshot
#      configuration.yaml: notify.ha_sendmail
    - service: notify.ha_sendmail
      data:
        title: 'Intruder alert'
        message: '{{now().strftime("%H:%M %Y-%m-%d")}}:Notification when alarm triggered. Motion sensor HC-SR501 detected.'
        data:
           images:
#      script.webcam_snapshot  
              - /config/camera/snapshot.jpg

Recuerde que el diseño de línea es importante en los archivos yaml, y que los caracteres de espacio antes de los comandos juegan un papel importante en la formación de bloques de código, su estructura. Verifique todos los cambios en su yaml a través de la Configuración de Home Assistant (HA) -> Controles del servidor -> Verificar configuración.

Todo parece ser, y su Raspberry pi se vuelve elegante ... ¡si el rayo no se ha pegado!)

Aquí está: automatización de trabajo HA, ¡configúrela con sus propias manos! ¡Asegúrate de escribirme lo que piensas sobre esto!

Y, si aún lee hasta el final, le ofrezco los enlaces prometidos:

https://viamybox.com/downloadpage

https://github.com/viatc/viamybox Los

archivos de configuración descritos aquí:
automation.yaml, configuration.yaml, takeSnapshotWebcam. sh, rec-motion-mjpg.php, mov.py

Source: https://habr.com/ru/post/undefined/


All Articles