HOWTO: HomeAssistant – Kamera/Webcam einbinden und bei Auslösung Stream aufnehmen

Ziel war es, eine Kamera/Webcam (WiFi oder RJ45) in Home Assistant einzubinden, und wenn jemand den Raum betritt, eine Minute lang den Stream aufzunehmen. Hier meine Probleme und Erfahrungen.

Ziel

Ziel war es, eine Kamera in Home Assistant einzubinden, und wenn jemand den Raum betritt, einen Stream eine Minute lang aufzunehmen. So ganz vorinformiert bin ich nicht an die Sache heran gegangen, um so mehr war ich überrascht, wie kompliziert es ist, eine Kamera in Home Assistant zu bekommen, die genau das macht, was ich mir überlegt habe. Wo doch gefühlt jede 2te Installation das schon integriert hat.

Durch lesen und YouTube Video schauen, über Möglichkeiten der Anbindung, habe ich mich dazu entschlossen den LIVE Stream über WebRTC an Home Assistant anzubinden und nicht direkt über den RTSP-Stream. Deswegen musste noch  eine Integration hinzugefügt werden, die diesen Schritt übernimmt.

Die richtige Kamera auswählen

Wenn man zum Beispiel auf Amazon schaut, gibt es Kameras wie Sand am Meer. Leider sind viele Kameras, wenn man etwas aufnehmen will, nur über einen Cloud Dienst nutzbar. Das war für mich schon von vornherein ein Ausschluss Kriterium! Nachdem Home Assistant mit RTSP Streams umgehen kann, kamen nur Kameras in die engere Auswahl, die auch RTSP-Streams hatten, und auf die man auch lokal zugreifen konnte. Nachdem es beim geplanten Aufstellungsort keine Möglichkeit gibt, ein Netzwerkkabel bis dort hin zu verlegen, kamen nur WLAN Kameras in Betracht.

In die engere Auswahl kamen Kameras von Reolink und TP-Link (Tapo). Bei Reolink sind die billigeren Modelle leider nicht dafür geeignet RTSP Streams bereit zu stellen, deswegen wurde es schlussendlich die Kamera von TP-Link und zwar das Modell TAPO C110.

Auspacken, Aufstellen, Einrichten und Ausprobieren

Leider scheint es keine Kameras zu geben, die man ohne App und Account einrichten kann. Das ist auch bei TP-Link TAPO der Fall. Also TP-Link Tapo App auf das Handy geladen  und die Schritte für die Einrichtung befolgt.

Was ich anfänglich nicht gewusst habe ist, das der Account für TP-Link DECO auch für TP-Link TAPO funktioniert. Also musste ich keinen neuen Account anlegen, sondern konnte die Login Daten von der DECO App verwenden.

Die Kamera auspacken und in Betrieb nehmen geht ohne Probleme. Das Stromkabel ist angenehm lange, somit ist der Radius zum Aufstellen sehr groß. Das Einrichten der Kamera und zuweisen des richtigen WLANs ist auch schon eine eingeübte Routine und funktioniert ohne Probleme, da ist eine App schon von Vorteil, und so konnte man schnell das Erste Bild am Handy betrachten.

RTSP Stream aktivieren und testen

Die RTSP Schnittstelle ist am Anfang noch nicht aktiviert, aber das Aktivieren geht auch ohne Probleme.

  • Kamera in der App auswählen
  • Einstellungen (Zahnrad) auswählen
  • Advanced Settings / Erweiterte Einstellungen auswählen
  • Camera Account / Kamera Konto auswählen
  • Benutzername und Passwort vergeben, die Daten sind dann für die LOKALE Anmeldung nötig

Eine Anleitung, mit Screenshots, gibt es zum Beispiel auf tapo.com (FAQ 34)!

Nachdem das geschehen ist, ist der Stream über folgende URLs, aufrufbar

  • rtsp://username:password@IP Address:554/stream1 (1080P)
  • rtsp://username:password@IP Address:554/stream2 (360P)

Zum Testen kann das Programm  VLC verwendet werden. Wenn das Kamerabild dort angezeigt wird, dann ist alles bereit für die Integration in Home Assistant.

Kamera in Home Assistant einbinden

Ich war positiv überrascht, dass es auf HACS eine TAPO Integration gibt.  Wenn jemand noch nicht über HACS bescheid weiß, oder Informationen braucht, wie man HACS in Home Assistant installiert, einfach mal in der Suchmaschine des Vertrauens danach suchen.

Es gibt verschiedene Möglichkeiten wie man den rtsp Stream der Kamera am Besten in Home Assistant einbindet. Mit der TAPO Integration habe ich mich also durch 3 Integrationen gekämpft. Für die Anbindung des Live Streams habe ich folgende 2 RTSP nach WEBRTC Integrationen ausprobiert:

  • RTSPToWeb – WebRTC Integration
  • WebRTC Camera Integration mit go2rtc

TAPO Integration

Noch vor der Installation sollte der Kamera eine fixe IP-Adresse zu geordnet werden. Nachdem das geschehen ist, kann die TAPO Integration installiert und danach eine neue Kamera hinzugefügt werden. Dazu werden folgende Daten benötigt:

  • IP-Adresse der Kamera
  • lokaler Benutzername der Kamera
  • lokales Passwort der Kamera
  • Cloud Passwort (= Passwort vom TAPO Account)
  • RTSP Transport Mechanismus = TCP

Wenn alles gut gegangen ist, gibt es ein neues Gerät und (bei mir waren es) 28 neue Entitäten. Es sei hier auch erwähnt, dass es mit der Integration den HD und den SD Stream der Kamera als Entität gibt.

Hinweis zum Binary Sensor Motion_Detection oder Cell_Motion_Detection.

Nach einem Neustart der Kamera hat der Sensor den Zustand „unavailable“, erst nachdem eine Bewegung erkannt wurde, wechselt der Staus zu „on“ und danach zu „off“.

RTSPToWeb – WebRTC Integration

Die Verarbeitung bei Home Assistant von RTSP Streams ist mit unter etwas langsam und ruckelig. Da hilft das AddOn RTSPtoWeb-WebRTC. Um das zu installieren, müssen folgende Schritte erfolgen:

  • Add-on Repository hinzufügen:
    https://github.com/allenporter/stream-addons
  • Add-on RTSPtoWeb-WebRTC installieren und starten
  • Benutzeroberfläche öffnen
  • Kamera hinzufügen über „Add stream“

Einbindung in Home Assistant

Hinzufügen der Kamera als „Generische Kamera“ über die Adresse rtsp://[IP_ADRESSE_HOMEASSISTANT]]:5541/[[Stream_Name_In_RTSPtoWEB]]/0

WICHTIG: Vorladen bei „Generischer Kamera“ aktivieren, damit bei der Automation auch die eingestellten 10 Sekunden vor der Auslösung (lookback Parameter) aufgezeichnet werden.

Vorteil

  • Kamera leicht über die Oberfläche vom Add-On RTSPtoWeb-WebRTC hinzu zu fügen

Nachteil

  • ich konnte keinen Live Stream über „picture-entity“ bekommen, bei Einstellung LIVE
  • man kann aber ein aktuelles Bild alle 10 Sekunden anzeigen lassen, bei Einstellung AUTO

WebRTC Camera Integration mit go2rtc

Mit der „WebRTC Camera“ Integration wird der Server go2rtc installiert und eine Custom Component „custom:webrtc-camera“ zur Verfügung gestellt. Um die Integration hinzuzufügen müssen folgende Schritte erfolgen:

  • HACS muss installiert sein!
  • Integration
  • „Durchsuchen und herunterladen von Repositories“ auswählen
  • WebRTC Camera installieren
  • Home Assistant neu starten
  • Geräte & Dienste
  • „Integration Hinzufügen“ auswählen
  • „WebRTC Camera“ auswählen
  • URL leer lassen, wenn es nicht schon eine Installation von go2rtc gibt
  • Benutzername & Passwort für WebUI und RTSP Stream vergeben (sehr empfehlenswert!)

Stream hinzufügen

Das ist leider nicht ganz so komfortabel wie mit „RTSPToWeb – WebRTC“. Dazu muss im Verzeichnis config die Datei go2rtc.yaml bearbeitet werden. Wenn man sich aber schon mit Home Assistant beschäftigt hat, sind YAML Dateien nichts neues und deswegen auch keine wirkliche Hürde.

api:
  password: [[PASSWORD_GO2RTC]]
  username: [[USERNAME_GO2RTC]]
rtsp:
  password: [[PASSWORD_GO2RTC]]
  username: [[USERNAME_GO2RTC]]
streams:
  [[STREAM_NAME_GO2RTC]]: rtsp://username:password@[[IPADRESSE_KAMERA]]:554/stream1

Einbindung in Home Assistant

Hinzufügen der Kamera als „Generische Kamera“ über die Adresse „rtsp://[IP_ADRESSE_HOMEASSISTANT]]:8551/[[STREAM_NAME_GO2RTC]]?mp4“. Standbild kann über den Link „http://[[IP_ADRESSE_HOMEASSISTANT]:1984/api/frame.jpeg?src=[[STREAM_NAME_GO2RTC]]“ hinzugefügt werden.

WICHTIG: Vorladen bei „Generischer Kamera“ aktivieren, damit bei der Automation auch die eingestellten 10 Sekunden vor der Auslösung (lookback Parameter) aufgezeichnet werden.

Benutzername ([[USERNAME_GO2RTC]]) und Passwort  ([[PASSWORD_GO2RTC]]) aus der go2rtc.yaml, und als AUthentifizierung „Basic“. RTSP-Transportprotokoll habe ich nicht ausgefüllt.

Wenn man den Live-Stream in Home Assistant direkt anzeigen lassen will, dann geht das über das „custom:webrtc-camera“ Element:

type: custom:webrtc-camera
url: [[STRAM_NAME_GO2RTC]]

Vorteil

  • Anzeige des Live Stream hat sofort funktioniert

Nachteil

  • Nicht ganz so komfortabel wie die „RTSPToWeb – WebRTC Integration“ beim Hinzufügen von einem neuen Stream .
  • Nicht ganz so komfortabel beim Hinzufügen zum Dashboard

Automation in Home Assistant

Neztwerkspeicher hinzufügen

Meine Home Assistant Installation leidet unter notorischen Platzmangel. Deshalb war es klar, dass ich keine Streams dort speichern werde. Seit der Version 2023.06 kann man ohne Probleme Netzwerkressourcen aus dem lokalen Netzwerk hinzufügen.

Dazu unter „Einstellungen“ > „Speicher“ > „Netzwerkspeicher hinzufügen“ auswählen.

Folgende Daten werden benötigt:

  • Name = Name vom Share also zb. NameVomShare
  • Verwendung = Freigeben
  • Server = IP-Adresse oder Servername
  • Protokoll = Samba/Windows oder NFS auswählen
  • Benutzername und Passwort von der Freigabe
  • Share-Name von der Freigabe

Wenn alles funktioniert hat, dann ist unter /share/NameVomShare die Freigabe aus Home Assistant aufrufbar.

WICHTIG: Damit Home Assitant auch auf den Netzwerkspeicher schreiben darf, ist noch ein Eintrag in der Config\configuration.yaml nötig!

homeassistant:
  # Whitelist Folders
  whitelist_external_dirs:
    - /share/NameVomShare

Wenn dieser Schritt vergessen wird, dann bricht die Automation mit dem Fehler „Can’t write /share/NameVomShare/20230927-084409.mp4, no access to path!“ ab.

Einschränkung maximal 2 Streams gleichzeitig

Die Kamera kann nur maximal 2 gleichzeitige Streams bereitstellen. Deswegen sollte auch im Dashboard, wenn möglich, die WebRTC Entität verwendet werden. Also bei unserem Beispiel camera.XXX_XXX_XXX_XXX und nicht die Entität direkt von der TAPO Integration. So ist es rein theoretisch noch möglich, mit der App auf einen Stream und mit Home Assistant als zweiten Stream zu zu greifen.

Automatisierung hinzufügen – Version 1

Wenn alles soweit geklappt hat, und das Kamerabild vielleicht schon im Dashboard angezeigt wird, kann auch schon mit der Automatisierung begonnen werden.

alias: KE_AUTO_WebcamRecord
description: ""
trigger:
  - platform: state
    entity_id:
      - binary_sensor.tapo_cell_motion_detection
    from: "off"
    to: "on"
  - platform: state
    entity_id:
      - binary_sensor.tapo_cell_motion_detection
    from: unavailable
    to: "on"
condition: []
action:
  - service: camera.record
    data:
      duration: 70
      lookback: 10
      filename: /share/NameVomShare/{{now().strftime('%Y%m%d-%H%M%S')}}.mp4
    target:
      entity_id: camera.XXX_XXX_XXX_XXX
mode: single

Eine kurze Erklärung dazu:

Die Kamera TAPO C110 hat eine integrierte Bewegungserkennung. Durch die Integration TAPO wurde u.a. der Bewegungssensor als  BinarySensor zur Verfügung gestellt. Deshalb verwende ich den Wechsel von „OFF“ nach „ON“ bzw „UNAVAILABLE“ nach „ON“ von tapo_cell_motion_detection um mit der Aufnahme zu starten.

Leider wird manchmal nach einem Neustart auch „ON“ angezeigt, solange bis eine Bewegung erkannt wurde und auf „OFF“ gewechselt wird. Für das Auslösen der Speicherung ist das mehr als suboptimal. Ob daran jetzt die TAPO Kamera oder die TAPO Integration von Home Assistant schuld ist, habe ich bis jetzt noch nicht heraus gefunden.

Er zeigt „ON“, wenn die Kamera eine Bewegung erkannt hat. Die Aufnahme erfolgt 60 Sekunden lang und wird unter /share/NameVomShare/ mit einem Zeitstempel gespeichert.

Automatisation hinzufügen – Version 2

Durch die Erfahrungen, dass nach einem Neustart immer wieder der Sensor „erkannt“ anzeigt, bis wirklich eine Bewegung erkannt wurde, und dann auf „normal“ springt, habe ich die Automatisation wie folgt angepasst:

alias: KE_AUTO_WebcamRecord
description: ""
trigger:
  - platform: state
    entity_id:
      - binary_sensor.tapo_cell_motion_detection
condition:
  - condition: or
    conditions:
      - condition: state
        entity_id: binary_sensor.tapo_cell_motion_detection
        state: "on"
      - condition: and
        conditions:
          - condition: state
            entity_id: binary_sensor.tapo_cell_motion_detection
            state: "off"
          - condition: template
            value_template: >-
              "{{states.binary_sensor.tapo_cell_motion_detection.last_changed > now() - timedelta(minutes=10) }}"
action:
  - service: camera.record
    data:
      duration: 75
      lookback: 20
      filename: /share/NameVomShare/{{now().strftime('%Y%m%d-%H%M%S')}}.mp4
    target:
      entity_id: camera.XXX_XXX_XXX_XXX
mode: single

Eine kurze Erklärung dazu:

Die Automatisation wird bei jedem Wechsel des Status ausgeführt. Wenn der neue Status „Erkannt“ ist, dann wird mit der Aufzeichnung begonnen. Ist der neue Status „Normal“, und die letzte Änderung liegt 10 Minuten zurück, dann gehe ich davon aus, dass die Kamera einen Neustart gemacht hat und der Sesnor den Status „Erkannt“ gehabt hat, bis zur wirklichen Erkennung. Somit wird in diesem Fall auch aufgezeichnet.

Beispiel:

  1. Nachdem Neustart vor 10:00 zeigt der Sensor „Erkannt“ für mehr als 7 Stunden an
  2. Um 17:24 wurde eine Bewegung erkannt, der Sensor zeigt danach „Normal“ an
  3. Um 19:00 wurde wieder eine Bewegung erkannt, der Sensor wechselt von „Normal“ auf „Erkannt“ und zurück auf „Normal“

Mögliche Anpassungen

Da ich noch nicht sicher bin, wie gut die Bewegungserkennung der Kamera wirklich ist, und wie gut ich das mit den verschiedenen Wechsel der Status hinbekomme, kann es sein, dass ich Zukunft als Auslöser einen Tür/Fenster Sensor von Aqara dafür verwenden werde.

[Update 2023-10-13]

Leider ist die Bewegungserkennung nicht sehr zuverlässig, ich habe derzeit überhaupt keine Möglichkeit die Erkennung zu aktivieren bzw. ist der Status immer „UNAVAILABLE“. Deswegen ist jetzt auch ein Aqara Türkontakt als Auslöser dazu gekommen.

Fazit

Es war komplizierter als Gedacht, die Kamera in Home Assistant zu bekommen.

Links

Quellen

AMAZON LINKS

Alle Angaben ohne Gewähr!

In diesem Artikel sind Partnerlinks enthalten.
Durch einen Klick darauf ge­lan­gt man direkt zum Anbieter. 

 

 

Einen Kommentar hinterlassen

Deine E-Mail-Adresse wird nicht veröffentlicht.


*


97 − = 96