Kann ich in Fhem (läuft in docker) einen befehl an docker eingeben um einen anderen docker container zu stoppen und zu starten?
Hintergrund:
frigate läuft für die kameras in 1 Container und denn will ich nur bei Abwesenheit laufen lassen.
{system('docker stop frigate')} ergibt nur -1
gruß Anton
Nicht auf diese Weise, weil das Programm docker im FHEM-Image gar nicht installiert ist.
Der einfachste Weg ist, die Docker Socket (/var/run/docker.sock) an den FHEM-Container weiterzugeben und damit zu interagieren (einfach googeln, wie man das macht, habe das selbst noch nicht implementiert; kenne nur andere Images, die das nutzen (z.B. Watchtower)).
Aber Achtung, das ist ein recht großes Sicherheitsrisiko, weil der FHEM-Container damit quasi den gesamten Host steuern kann. Du solltest auf jeden Fall einen Socket-Proxy dazwischenschalten, ganz ideal wäre vielleicht sogar eine Middleware, die nichts anderes kann als Frigate zu starten und zu stoppen und mit der FHEM z.B. per HTTP interagiert. Dann kannst du Frigate mit einem einfachen HTTP-Request aus FHEM starten/stoppen (idealerweise ist das Docker-Netzwerk dieser Middleware dann auch nur noch mit FHEM verbunden und es handelt sich um ein --internal-Netzwerk).
Wenn dir diese ganzen Sicherheitsthemen aber egal sind, z.B. weil dein FHEM-Server sowieso nicht von außen erreichbar ist o.ä., dann einfach die docker.sock so nutzen (bzw. mit einem Proxy nutzen, der ist schnell aufgesetzt).
Du könntest dir auch einen Systemd Dienst erstellen.
Entweder pollt dieser periodisch Fhem nach dem Stand und startet dann vom Host aus den anderen Container.
Oder Du lässt Fhem eine Datei schreiben.
Ein Systemd Job könnte die Datei überwachen und bei Änderungen den Inhalt auswerten.
Grüße Sidey
Du kannst frigate per http-api und mqtt "fernsteuern". Muss ja nicht komplett gestoppt werden. Zumindest per mqtt kann man wohl laut Doku camera enabled set on oder off schicken, ansonsten kann man record, detect und snapshot auch ein und ausschalten. Das nutze ich bei mir für die Innencameras, die nur detecten und speichern wenn abwesend.
Bei disabled cameras hat frigate ja quasi nix mehr zu tun, dann kann der Container auch durchlaufen.
Gruß
Sany