Camera soll bei Bewegung aufnehmen - und wenn 10 Sekunden keine Bewegung dann stoppen

Gute Morgen Zusammen!

Ich habe eine Kamera die bei Bewegung aufnimmt.
Jedoch nur mit einer festen Zeitspanne.
Das soll geändert werden, damit die Kamera solange aufnimmt, bis 10 Sekunden lang keine Bewegung mehr erkannt wird.

Aktuell sieht der Versuch so aus:

alias: Aufnahme
description: >-
  Nehme auf, wenn Bewegung erkannt wird und stoppe 10 Sekunden nach der letzten
  Bewegung.
triggers:
  - entity_id: binary_sensor.cam_cell_motion_detection
    to: "on"
    trigger: state
  - entity_id: binary_sensor.cam_cell_motion_detection
    to: "off"
    for:
      seconds: 10
    trigger: state
conditions: []
actions:
  - choose:
      - conditions:
          - condition: state
            entity_id: binary_sensor.cam_cell_motion_detection
            state: "on"
        sequence:
          - data:
              lookback: 5
              filename: >-
                /media/{{ now().strftime('%Y-%m-%d_%H:%M:%S')
                }}_recording.mp4
            target:
              device_id: __
            action: camera.record
      - conditions:
          - condition: state
            entity_id: binary_sensor.cam_cell_motion_detection
            state: "off"
        sequence:
          - target:
              device_id: __
            action: camera.stop_recording
mode: single

Hier erhalte ich die Meldung:

unbekannte Aktion: camera.stop_recording
camera.stop` geht auch nicht

Wie kann ich den das umsetzen?

Finde dazu viele Suchanfragen aber die Suchen auch alle nach einer Lösung für dieses Problem. Teilweise seit 2018.

Hilfreiche Hinweise:

  • wenn man keine Länge setzt wird default Länge 30 Sekunden genommen
  • Recorder - Home Assistant
  • evtl. soll das mit dem Timer gehen

Hier ist auch ein Feature Request dazu: Camera Service To Stop Recording - Feature Requests - Home Assistant Community

Kennt jemand die technischen Hintergründe, warum das nicht (einfach) integriert wird?

Danke

Klar kommt diese Meldung da es eine camera.stop_recording action, oder etwas in der Art, bei der HA Camera Integration gar nicht gibt. :slightly_smiling_face:

Was hat die HA Recorder Integration für die HA Datenbank damit zu tun? :thinking:

Vermutlich weil eine Detection ein Automatismus bei der Kamera selber ist den man üblichweise nicht stoppen, sondern max. nur ein- oder ausschalten kann.

Ich kenne keine Kamera bei der man einen Zeitraum (vor)einstellen kann, der vergehen muss, bis ein Sensor (hier Motion Detection) ggf. erneut auslösen darf/kann. Denn das wäre ja das was Du scheinbar möchtest. Immer wenn eine Bewegung von der Kamera erkannt wurde wird eine Aufnahme für einen voreingestellten Zeitraum X (+ ggf. Nachlaufzeit) gestartet. Ist der voreingestellte Aufnahme-Zeitraum vorbei und es wird weiterhin eine Bewegung detektiert erfolgt wieder eine neue Aufnahme für den voreingestellten Zeitraum X. Usw. D.h. Du kannst einer Kamera “sagen” was sie machen soll wenn die Motion Detection Funktion ausgelöst wird, aber Du kannst der Motion Detection Funktion einer Kamera nicht “sagen” was sie tun soll wenn nichts passiert, sprich keine Bewegung erkannt wird. :slightly_smiling_face:
Anm.: Das soll nicht heißen das es so etwas ggf. gar nicht gibt, aber ich kenne halt keine Kamera bei der das möglich ist.

Mit den Boardmitteln von HA gar nicht, eben weil es darüber nicht möglich ist eine Kamera-Aufnahme zu stoppen. Ob das bei irgendwelchen anderen HA Kamera-Integrationen (Frigate, Zoneminder, MotionEye, …) ggf. möglich ist weiß ich nicht.

Ob es dann Sinn macht durch das deaktivieren und aktivieren der Kamera Detection (in Deinem Fall Cell Motion Detection) ggf. etwas in der Art irgendwie zu erreichen musst Du selber beurteilen. Ein gezieltes stoppen einer Aufnahme ist damit aber auch nicht möglich, sondern halt nur das ausschalten einer Detection für einen Zeitraum X. Auch kannst Du damit den Detection-Automatismus bei der Kamera nicht beeinflussen, sondern nur aus- oder wieder einschalten.

VG JIm

Hallo Jim
warum die Meldung kommt ist mir klar. Was ich nicht verstehe ist ja, wenn ich einen Stream aufnehme kann ich das doch auch beenden. So kenne ich das von jedem Video-Rekorder ob als Hardware oder Software. Warum ist das nicht in HA möglich?
Den Link habe ich beim Suchen gefunden, ich wollte zeigen wo ich schon geschaut.

Vermutlich weil eine Detection ein Automatismus bei der Kamera selber ist den man üblichweise nicht stoppen

Es soll ja die auch Aufnahme des Streams gestoppt werden. Nicht der Sensor. Ob das nun durch einen Sensor oder etwas anderes getriggert wird ist da vorerst egal.

Ich kenne keine Kamera bei der man einen Zeitraum (vor)einstellen kann, der vergehen muss, bis ein Sensor (hier Motion Detection) ggf. erneut auslösen darf/kann.

Das möchte ich ja auch gar nicht.

Die Grundlegende Funktion, mit dem Auslösen einer Aktion nach 10 Sekunden keine Bewegung mehr funktioniert ja bereits.

Es geht darum ob es möglich ist eine laufend Aufnahme zu stoppen.

Einen schönen Sonntag

Update: Ich möchte z.B. auch gerne zwei Knöpfe neben dem Live Stream, einen mit “Start Recording” und einen mit “Stop Recording”. Damit ist es evtl. besser zu verstehen was das Ziel sein soll. Auch dazu finde ich nur ungelöste Themen. Daher auch die Frage nach den technischen Hintergründen. Evtl. kann ich das selbst einbauen. Mit der zoneminder Integration soll das evtl. funktionieren aber nun wollte ich nicht gleich mit Kanonen auf Spatzen schießen.

Die Integration ist über ONVIF und “TP-Link Smart Home”. Über den mainStream kann man z.B. einen Schnappschuss herunterladen aber kein Video aufnehmen.

Weil - wie schon gesagt - damit ein Automatismus bei der Kamera genutzt wird und keine direkte Aufnahme die Du mit Start oder Stop starten oder stoppen kannst. Das ist schicht und einfach etwas anderes und das ist so dann nicht vorgesehen. Wenn mein Dahua NVR hier z.B. per Detection Funktion einen Automatismus startet, der besagt das für den Zeitraum X eine Aufnahme erfolgen soll, dann kann ich den und somit diese Aufnahme, auch nicht irgendwo stoppen. Oder halt Dein Beispiel mit dem “Video-Recorder”: Wenn Du bei dem eine Aufnahme programmiert hast die dann gestartet wurde, dann reicht üblicherweise auch nicht nur das drücken eines Stop-Knopfes um diese automatisch gestartete Aufnahme zu stoppen, sondern da kommt garantiert noch eine zusätzliche Rückfrage ob Du die automatisch gestartete Aufnahme denn wirklich stoppen willst.

Was Dein Ziel ist ist schon klar, :slightly_smiling_face: nur geht das bei HA mit den Boardmitteln halt nicht, eben weil es keine stop action bei Kamera Aufnahmen gibt. Ob es dafür irgendeinen bestimmten Grund gibt und ob Du das nun nachvollziehen kannst oder nicht, spielt nicht wirklich eine Rolle. Ohne stop action kein stoppen. :slightly_smiling_face:

Edit:

Ja die Snapshot-Möglichkeit, sprich der Button dafür bei der Anzeige des Live-Streams, ist vor ~ 2 - 3 HA Core Versionen hinzugefügt worden. Das konnte und kann man aber auch zu Fuß mit einer entsprechenden Karte und Buttons selber basteln, incl. der Möglichkeit dann nicht nur einen Snapshot sondern auch eine Stream-Aufnahme zu starten. Aber auch für diese Stream-Aufnahme gilt dann: Aufnahmezeit muss vorgegeben werden und ein stoppen ist dann nicht möglich. :laughing:

VG JIm

1 „Gefällt mir“

Danke für den Hinweis. Wobei ich das nicht verstehe. Das Aufnehmen des Streams passiert also direkt auf der Kamera und die Datei wird anschließend zu Home Assistant kopiert? Aber warum habe ich dann bei einer schlechten Verbindung eine schlechte Aufnahme.
Gibt es keine Möglichkeit einfach den Stream der in HA ankommt aufzunehmen? Dann sollte es ja für HA kein Problem sein diesen zu stoppen.

Nein der Stream wird nicht direkt auf der Kamera aufgenommen sondern schon unter HA, aber der Auslöser - in Deinem Fall die Motion Detection Funktion - ist eine Funktion von und bei der Kamera und diese Funktion kannst Du über HA nicht irgendwie beeinflussen. Außer das Du sie ein- oder ausschalten kannst. D.h. HA nutzt den Stream und in dem Fall auch die Motion Detection Funktion der Kamera, um dadurch und damit eine Aufnahme zu erstellen.

Was bei den HA Boardmitteln halt fehlt ist die Funktion eine gestartete Kamera Aufnahme auch wieder zu stoppen. Ja so etwas wäre grundsätzlich natürlich auch möglich, wie man es z.B. hier bei VLC sehen kann,
VLC
aber bisher haben die Machen von HA so eine Stop-Funktion für eine Kamera Aufnahme halt (noch) nicht implementiert. Wobei diese Stop-Funktion dann aber auch wieder nichts mit der Motion Detection Funktion einer Kamera zu tun hat, eben weil deren Automatismus auf der Kamera ausgeführt wird.

Nur zur Klarstellung: Es wird sicherlich auch irgendeine Video Management oder NVR Software geben bei der das was Du möchtest auch machbar ist, aber bei und mit HA Boardmitteln halt (bisher) nicht.

VG Jim

So, dann mal hier weiter :slight_smile: Also das mit dem Motion Detection möchte ich erst einmal komplett raus lassen. Das ist dann evtl. der zweite Schritt.
Ich sehe, wenn ich unter Actions aufnehme wenn eine Aufnahme schon läuft beschwert sich das “helpers/script.py:2039” wo finde ich das denn? Evtl. finde ich da mehr Informationen. 2. wo wird Kamera: Aufzeichnen intern definiert?

Notizen:

  • Die Datei wird nicht gefunden da es zwei SSH Verbindungen gibt

Der Schwere Weg um die Datei einzusehen:

  • 22 verbindet zu dem add-on running SSH container
  • 22222 verbindet zum HOST OS (aber connection refused)
  • infos unter home-assistant debugging enabling-ssh-access-to-the-host
  • man benötigt einen USB Stick um das richtige SSH zu aktivieren (schon wieder so was unnötig Kompliziertes)

Entwickler SSH aktivieren

  1. USB Stick mit Partition “CONFIG” erstellen (FAT, ext4, or NTFS)
  2. Datei authorized_keys dort erstellen und ssh-key rein. “LF” nicht Windows “CR LF”.
  3. einstecken, reboot, verbinden mit Port 22222 = geht nicht
  4. verbinden mit Port 22, dann ha os import = nun geht es

Dort kann man in den Docker Container und findet die Datei unter:
/usr/src/homeassistant/homeassistant/components/config/script.py

Der einfache Weg um die Datei einzusehen:
GitHub:
`homeassistant/helpers/script.py

Das ist also nur ein Helfer für das Logging :slight_smile:

Die Action wird evtl. hier definiert, GitHub: `core/homeassistant/helpers/script.py at 2025.2.5 · home-assistant/core · GitHub
Dort sieht man auch maximale Aufnahmelänge = 3600s

Das ist mir aber doch zu viel zur Zeit.
Ich suche erst einmal eine andere Lösung…

Aktueller Stand ist schon mal gut, jedoch wird die Datei unbrauchbar wenn nach 60 Sekunden wegen Zeitüberschreitung abgebrochen wird. Habe dieses Problem hier separat (und gelöst):

Moin,

nur noch ein paar Anmerkungen/Infos von mir. :slightly_smiling_face:

  1. Wie man hier ja rauslesen konnte/kann ist für mich das Thema ob und wie man einen Kamera Aufnahme unter HA wieder stoppen kann nicht wirklich relevant. Das liegt u.a. daran das ich dafür, gerade wenn es um eine Aufnahme geht die per Detection ausgelöst wurde, keinen wirklichen Sinn sehe. Hinzu kommt das ich das Thema Kamera Aufnahmen nicht mit oder über HA manage, sondern über meinen Dahua NVR. D.h. HA ist für mich nur eine weitere und zusätzliche Möglichkeit um Kamera Aufnahmen zu erstellen, z.B. wenn jemand bei meiner Video-Türklingel klingelt.

  2. Bei dem Thema Kameras unter HA spielen viele Komponenten unter HA eine Rolle und was davon dann wie genutzt wird oder wurde hat sich in den letzten Jahren immer mal wieder (etwas) verändert. Los ging das Ganze wohl irgendwann in 2019 mit u.a. MJPEG, Camera und Stream. Hinzu kamen dann noch FFmpeg, HLS, WebRTC usw. Seit 11/2024 wurde dann einiges durch go2RTC und somit WebRTC ersetzt und HLS greift nur noch als Fallback.

  3. Wie und worüber die Kamera Aufnahmen aktuell bei HA erfolgen und was dafür (alles) genutzt wird, weiß ich auch nicht, aber ich vermute es wird dafür (weiterhin) die Camera und Stream Integration von HA genutzt, d.h. über die Stream Integration wird der RTSP-Stream einer Kamera “abgegriffen” und davon dann die Kamera Aufnahme erstellt. Wenn das der Fall sein sollte solltest Du Dir die Stream Integration und deren Quellcode näher anschauen. Beginnend damit:

  1. Ob Du per FFmpeg ggf. ans Ziel kommst, was Du ja wohl gerade versuchst, ist zwar grundsätzlich denkbar, aber ob Du dann eine/Deine FFmpeg-Lösung auch sinnvoll unter HA einsetzen und damit z.B. bei Automatisierungen auch irgendetwas kombinieren/nutzen kannst, ist m.M.n. eher fraglich. Aber einen Versuch ist es ja vielleicht Wert. :slightly_smiling_face:

Wie schon unter 1. erwähnt ist das stoppen für mich kein wirkliches Thema, sodass ich Dir dazu auch nichts weiter sagen/schreiben kann. Auch weiß ich nicht warum genau so etwas bisher bei HA nicht umgesetzt wurde. Das es dazu bereits seit 2019 immer mal wieder Features Request gegeben hat hast Du ja selber schon festgestellt. Da die HA Entwickler - aus was für Gründen auch immer - das ganze Thema Kameras unter HA aber jetzt quasi an go2rtc und somit AlexxIT “ausgelagert” haben, glaube ich nicht das sich da von Seiten HA Entwickler noch etwas tun wird, sprich wenn dieses stoppen Thema nicht irgendwann einmal von Seiten go2rtc kommen wird, wird es bei HA wohl nie mehr kommen. Aber das ist natürlich nur eine reine Spekulation von mir und quasi der “Glaskugelmodus”. :laughing:

VG Jim

1 „Gefällt mir“