Bewegungssensor und Alarm- und Videoregistrierungsverbindung im Home Assistant auf Raspberry pi

Ich möchte über meine kleinen Erfahrungen bei der Arbeit mit Home Assistant (im Folgenden als HA bezeichnet) auf dem Raspberry Pi sprechen und über das Anschließen der Videoregistrierungsfunktion, des Bewegungssensors und dementsprechend der Home Security-Funktion, um im Falle eines Sicherheitsvorgangs Bilder per E-Mail zu empfangen.

Einer der Gründe ist natürlich der Wunsch, aus Ihrem Feedback zu verstehen, dass das, was ich getan habe, bei der Implementierung dieses Szenarios „falsch gemacht“ hat.

Es gibt drei Möglichkeiten, die oben genannten Funktionen zu konfigurieren: "ohne Probleme", "kurz" und "unabhängig". Im ersten Fall haben Sie das fertige Bild von der Website https://ViaMyBox.com/downloadpage heruntergeladenFür Ihren Raspberry Pi können Sie sehen, wie alles in der bereits konfigurierten Form aussieht. Im zweiten Fall können Sie die Zip-Datei von der Website oder vom Github-Projekt herunterladen, das HA-Docker-Image über das Dienstprogramm (sudo via-setup.sh) installieren und installieren, um zu sehen, wie alles konfiguriert ist. Und schließlich besteht der dritte Weg darin, „alles auf Ihre eigene Weise“ einzurichten: Nehmen Sie etwas Nützliches von der Site oder dem Githab des Projekts oder von diesem Tutorial. Links zu allem am Ende des Artikels.

Angenommen, Sie haben bereits einen funktionierenden Home Assistant (HA). In diesem Artikel werden nur Aspekte der Bildung von Yaml-Konfigurationen und eine Beschreibung der Abfolge von Regeln und Bedingungen betrachtet, die zu einer bestimmten Aktion führen, in unserem Fall die Verbindung von „Haussicherheit“ und einem Skript, das innerhalb von 5 Sekunden nach dem Auslösen des Bewegungssensors mit dem Aufnehmen von Bildern beginnt. Infolgedessen sendet Home Assistant die aufgenommenen Bilder per Post. Ich bin kein Spezialist für Yaml oder das Erstellen von Konfigurationen für Home Assistant, aber anhand der Arbeitsbeispiele habe ich eine Arbeitskonfiguration erhalten, die ich freigeben möchte.

Alle Dateien, auf die wir verweisen werden, werde ich am Ende des Artikels für eine bequemere Überprüfung auslegen. Ich werde mich hier nicht mit der Arbeit von Skripten für die Aufnahme von Videos in Bash oder Python in diesem Beispiel befassen. Nur Heimassistent. Aber wenn Sie Fragen haben - Willkommen!

Am Ende sieht für mich alles so aus (rot hervorgehoben, was wir im Artikel betrachten werden):





Ich benutze Raspberry Pi als Plattform. Und mein Pfad zu den Konfigurationsdateien ist / usr / share / hassio / homeassistant /. Der Pfad zu Ihren Konfigurationsdateien kann sich von meinem Pfad unterscheiden. Zu dieser Zeit hatte ich Home Assistant 0.101.3. Wir werden an den Konfigurationsdateien in diesem Verzeichnis interessiert sein: configuration.yaml und automation.yaml.

Nach jeder Änderung an diesen Dateien ist zu beachten, dass die Konfiguration nach unseren Änderungen auf etwaige Fehler überprüft werden muss. Dies erfolgt auf der Registerkarte Home Assistant-Dashboard -> Konfiguration -> Serversteuerelemente -> Konfiguration überprüfen. Und dann führen wir an derselben Stelle Reload Automations und Reload Scripts durch, wenn die Überprüfung erfolgreich war. Und im Zweifelsfall aktualisiert ein Neustart der Serververwaltung auf derselben Registerkarte die Konfiguration genau.

Der Bewegungssensor HC-SR501 ist an den Raspberry pi GPIO-Bus angeschlossen. Es ist notwendig, die drei Kontaktdrähte korrekt mit dem GPIO zu verbinden, und wir können unseren Sensor in Aktion verwenden. Der Sensor hat drei Kontakte: Leistung gcc (+), Null gnd (-), Steuerkontakt (Daten). Nachdem ich die Beschreibung des GPIO gelesen hatte, verband ich sie wie folgt mit meiner Himbeere. Ich habe hc-sr501 an den GPIO-Anschluss angeschlossen: Pin # 2 - 5.5vvcc; Pin # 26 (13. Reihe) - Datenkontakt und Pin # 6 - gnd (-) des Sensors.

Ich benutze entweder eine USB-Kamera oder eine CSI-Kamera in Verbindung mit einem MJPG-Streamer als Quelle für das Foto. Wie man mjpg-streamer auf Raspberry pi installiert und konfiguriert, wird hier nicht berücksichtigt. Beispiele für eine schnelle Installation im Internet. Ich möchte jedoch sagen, dass ich Daten aus diesem Projekt verwendeDort wird auch die Installation dieses Moduls ausführlich beschrieben. Oder verwenden Sie eine für Sie geeignete Methode, um Fotos und Videos aufzunehmen. Schließlich liegt es an Ihnen, welches Bash-Skript letztendlich an HA befestigt werden soll.

Wir werden unseren Sensor nun in configuration.yaml beschreiben, beispielsweise über die Befehlszeile:

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

Obwohl die Verwendung von Notepad ++ mit Winscp möglicherweise bequemer ist ...

Wir beschreiben die Reihenfolge der Einstellungen für den HC-SR501 folgendermaßen:

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

Hierbei ist zu beachten, dass hier die Einstellungen in den Zeilen wichtig sind, die die Verbindung zu den Steuer- (Daten-) Kontakten der Sensoren beschreiben: Pin # 7-

Anschlüsse:

7: Sensor HC-SR501

Der Home Assistant verfügt über ein integriertes Tool zum Aktivieren der Home Security-Funktion. Wir werden es in unserer configuration.yaml anhand der folgenden Beschreibung beschreiben: 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

Diese Einstellung bedeutet, dass wir 60 Sekunden Zeit haben, um das Haus zu verlassen (nach dieser Zeit wird der Alarm eingeschaltet) und 40 Sekunden, um es auszuschalten (mit dem Passwort 1234), wenn wir nach Hause zurückkehren. Aus irgendeinem Grund gehen Sie immer länger als Sie kommen.)

Nun beschreiben wir den Mechanismus zum Ein- und Ausschalten von Fotos durch den Betrieb des Bewegungssensors in unserer Konfiguration.yaml (mehr über die switch - command_line-Plattform finden Sie hier ):

 - 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'


Hier haben wir die Befehle enable enable command_on und command_off off mit unseren Skripten verknüpft, die die Kameraaufzeichnung steuern. In diesem Fall werden bei der Ausführung von command_on 2 Skripte nacheinander ausgeführt. Dadurch wird der mjpg-Streamer gestartet und die Aufzeichnung des Bewegungssensors ausgelöst. Der Zugriff auf Bash-Skripte erfolgt über die PHP-Datei der Arbeitsstelle auf Raspberry pi. Zu diesem Zweck habe ich den Nginx- und Webzugriff konfiguriert. Beim Zugriff über den Browser in der Form http: // <IP-Adresse Ihres Raspberry Pi> /start_mjpgstrm.php sollte unser PHP-Skript ausgeführt werden. Dieses Skript führt in dieser Situation mjpg-streamer aus.

In diesem Artikel wird die Webzugriffskonfiguration nicht berücksichtigt. Dies ist definitiv keine Sicherheit, aber aufgrund der Tatsache, dass ich HA auf Docker habe, wurde ich mit der Tatsache konfrontiert, dass ich eine isolierte Docker-Umgebung und die „Außenwelt“ des Betriebssystems habe, die ich durch Kontaktaufnahme mit meiner Site über PHP sehen kann. Es gibt wahrscheinlich eine Reihe guter Lösungen von Docker- oder HA-Gurus. Schreiben Sie, es wäre interessant zu wissen!

Ich werde eine Liste dieser Skripte unter dem Artikel hinterlassen, wir werden nicht darauf eingehen. In diesem Artikel möchte ich nur die Bildung der Abfolge von Aktionen im Home Assistant verfolgen.

All dies wird im Objekt start_stop_motion_rec_timelapse platziert. Dies ist unser visueller Schalter, mit dem wir die Aufzeichnung von Fotos steuern, wenn der Bewegungssensor ausgelöst wird.



Wir können diese von uns erstellten Objekte auf der Registerkarte Home Assistant -> Overview anzeigen und die Aktivierung des Konfigurationsmodus UI konfigurieren in der oberen rechten Ecke umschalten.



Starten Sie HA im Browser auf der Registerkarte „Configuration -> Server Control“ neu, um unsere configuration.yaml aufzurufen.

Wählen Sie als Nächstes das gelbe Plus am unteren Rand des Browserfensters aus, klicken Sie auf die Entitätskarte und hängen Sie unsere erstellten Objekte an die Karten an.



Wählen Sie für unseren Sensor die Sensorkarte aus. Es sieht folgendermaßen aus:



Wie Sie auf dem Bild sehen können, lautet der obige Schalter im zweiten Feld der Entität: switch.start_stop_motion_rec_timelapse.

Damit können wir unsere Aufzeichnung am Bewegungssensor ein- und ausschalten, unabhängig von der Funktion „Sicherheit zu Hause“. Und im Allgemeinen sollte es nach all den oben genannten Aktionen bereits funktionieren.

Nun, und dementsprechend die Alarmtafel:



Es gibt noch einen weiteren interessanten Punkt. Ich benutze Home Assistant als Docker-Container. In dieser Hinsicht unterscheidet sich der Pfad zu unserem Skript vom tatsächlichen Pfad zur Skriptdatei. Schließlich wird die Dateistruktur im Container virtualisiert und über bereitgestellte Docker-Volumes mit der realen Dateistruktur verbunden. Es sieht folgendermaßen aus: Pfad im Container: / config / scripts / Pfad im Betriebssystem: / usr / share / hassio / homeassiatnt / scripts. Sehen Sie sich also Ihre Containereinstellungen an, wie diese Volumes im Feld Binds konfiguriert sind. Wenn HA hast du da.

sudo docker inspect homeassistant|less

Wenn der Bewegungssensor ausgelöst wird, in dem Moment, in dem der Alarm eingeschaltet wird: Ich möchte zusätzlich zu der Tatsache, dass wir mit dem schnellen Fotografieren beginnen (Zeitraffer-Schnappschüsse), eine Warnung per E-Mail und einen Schnappschuss erhalten. Ich habe die Prozesse parallelisiert. Auf dem ersten Foto erfolgt die Protokollierung (Zeitraffer-Schnappschüsse) innerhalb weniger Sekunden nach dem Auslösen des Sensors. Dazu führe ich mjpg-streamer curl localhost / start_mjpgstrm.php aus und starte php: surl http: //localhost/rec-motion-mjpg.php . Er führt seinerseits das Python-Skript mov.py aus. Alle beschriebenen Dateien und Links befinden sich am Ende des Artikels als Referenz. Und ein anderes Skript von takeSnapshotWebcam.sh erstellt einen Schnappschuss, den ich per E-Mail sende. Ich beschreibe diese Skripte in unserer configuration.yaml folgendermaßen:

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'

Dort beschreiben wir in configuration.yaml unser Mailing-Objekt:

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

Ein wichtiger Punkt! Damit unser HA eine Verbindung herstellen und Briefe senden kann (Absenderfeld), müssen wir Google Mail aktivieren, um dieses Feld für unseren HA-Dienst zu verwenden. Wie das geht, ist der Link hier: myaccount.google.com/lesssecureapps

Und dann beschreiben wir den Automatisierungsmechanismus selbst, wenn der Alarm home_alarm in automation.yaml aktiviert ist:

#   (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

Die folgenden Bedingungen und Aktionen dienen dazu, beim Deaktivieren von "Sicherheit" eine Konsolennachricht zu senden und unsere Bewegungsaufzeichnungsskripte zu deaktivieren:

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

Und schließlich der dritte Haufen - wir senden einen Brief mit einem 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

Denken Sie daran, dass das Zeilenlayout in Yaml-Dateien wichtig ist und Leerzeichen vor Befehlen eine wichtige Rolle bei der Bildung von Codeblöcken und ihrer Struktur spielen. Überprüfen Sie alle Änderungen an Ihrem Yaml über die HA-Konfiguration (Home Assistant) -> Serversteuerelemente -> Konfiguration überprüfen.

Alles scheint zu sein, und Ihr Himbeer-Pi wird elegant ... wenn der Blitz nicht hängen geblieben ist!)

Hier ist es - eine funktionierende HA-Automatisierung, maßgeschneidert! Schreiben Sie mir unbedingt, was Sie darüber denken!

Und wenn Sie noch bis zum Ende lesen, biete ich die versprochenen Links an:

https://viamybox.com/downloadpage

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

hier beschriebenen Konfigurationsdateien:
automation.yaml, configuration.yaml, takeSnapshotWebcam. sh, rec-motion-mjpg.php, mov.py.

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


All Articles