Guten Abend!
Ich arbeite mich von einem Problem zum nächsten
Es soll eine Möglichkeit in Home Assistant eingebaut werden mit der ich Streams starten und stoppen kann - das zum Hintergrund (Link).
Aktueller Versuch ist eine Automation mit eigenem shell command.
Davor soll zuerst einmal die Aufnahme mit ffmpeg grundsätzlich funktionieren.
Das funktioniert mit einer Tapo Kamera von Home Assistant SSH mit:
docker exec -it homeassistant /bin/bash -c “ffmpeg -y -i rtsp://user:pass@ip:554/stream2 -c:v copy -c:a aac /media/output_stopable.mp4”
Dazu muss man zuvor im SSH Addon den Protection Mode deaktivieren.
Damit eine vorhandene Datei überschrieben werden darf wird die Option -y verwendet.
Weiter:
ein shell_command soll nun in der configuration.yaml erstellt werden.
Das Versuche ich so:
ffmpeg:
start_recording:
command: docker exec -it homeassistant /bin/bash -c "ffmpeg -y -i rtsp://user:pass@ip:554/stream2 -c:v copy -c:a aac /media/output_stopable.mp4"
stop_recording:
command: docker exec -it homeassistant /bin/bash -c "pkill ffmpeg"
- Benötige ich das “ffmpeg:” in der yaml überhaupt?
- grundsätzlich richtig das Vorgehen oder besser nach diesem Schema:
shell_command:
start_recording: ...
stop_recording: ...
So oder so erhalte ich immer:
Fehler beim Ausführen einer Aktion
Action shell_command.start_recording not found
Nun habe ich das ganze System über Erweiterte Optionen neu startet, es scheint zu funktionieren Nach dem zweiten Schema.
Es kommt aber nur keine Fehlermeldung mehr. Aufgenommen wird noch nichts.
Error running command / return code: 127
'Shell Command - Home Assistant
Von SSH aus muss ich es mit dem Befehl “docker” ausführen.
- Muss ich das aber auch so im shell_command eintragen oder bin ich da schon im container?
- soll es in Klammern stehen oder spielt das keine Rolle?
Entwicklerwerkzeug Aktionen funktioniert (Shell Command: start_recording)
Jedoch kommt:
Zeitüberschreitung beim Ausführen des Befehls: … , nach: 60 Sekunden
Die Datei ist dann unbrauchbar!
Stoppe ich davor mit “Shell Command: stop_recording” erhalte ich eine lange Fehlermeldung, aber es funktioniert, returncode 255
Muss ich das aber auch so im shell_command eintragen oder bin ich da schon im container?
Es darf nicht mit dem Befehl “docker” ausgeführt werden da wir offensichtlich schon im Container sind.
soll es in Klammern stehen oder spielt das keine Rolle?
Habe es nun ohne Klammern, aber vermutlich spielt es keine Rolle
Es bleibt nur noch das Problem mit der Zeitüberschreitung nach 60 Sekunden.
Dadurch wird die Datei unbrauchbar.
Über SSH konnte länger aufgenommen werden ohne Fehler.
by HarryP: Zusammenführung Mehrfachpost (bitte “bearbeiten” Funktion nutzen)