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:
- Nachdem Neustart vor 10:00 zeigt der Sensor „Erkannt“ für mehr als 7 Stunden an
- Um 17:24 wurde eine Bewegung erkannt, der Sensor zeigt danach „Normal“ an
- 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
- WIFI Kamera TAPO C110 auf Amazon
- TAPO FAQ 34 für aktivieren von RTSP Stream
- HACS TAPO Integration
- HACS WebRTC Camera Integration
Quellen
- Boost your Security Camera Video in Home Assistant using WebRTC:
https://www.youtube.com/watch?v=8tqLitJJNkk - Real Time Camera Viewing using RTSPtoWeb and Glance Cards in Home Assistant:
https://www.youtube.com/watch?v=6hJXenSZJ5M - WebRTC Camera:
https://github.com/AlexxIT/WebRTC - RTSPtoWebRTC (Home Assistant):
https://www.home-assistant.io/integrations/rtsp_to_webrtc/ - TAPO Kamera Integration:
https://photoscrubs.com/2023/06/05/tapo-liebt-home-assistant/
AMAZON LINKS
- TP-Link Tapo C110 WLAN IP Kamera Überwachungskamera (3MP-Auflösung, 2-Wege-Audio, Bewegungserkennung, Ton- und Lichtalarm, Nachtsicht zu 9m, bis zu 256 GB lokaler Speicher auf SD Karte) Weiß
- TP-Link TL-WA801N WLAN Access Point 300Mbit/s on 2.4GHz (Client, Bridget, Universal/WDFS Repeater),1X10/100 Mbps Ethernet, WPS, zwei fixierte Antennen) weiß
Alle Angaben ohne Gewähr!
In diesem Artikel sind Partnerlinks enthalten.
Durch einen Klick darauf gelangt man direkt zum Anbieter.