executeCommandLine für Curl
Verfasst: 28. Mär 2024 23:46
Hallo Forum,
ich stecke hier seit Tagen fest.
Ich habe einige Kameras von Hikvision, die eine API unterstützen.
Der OpenHab 3.4.4 läuft in einem Docker und steuert Steckdosen und AudioVideoSystem.
Er soll nun dafür sorgen, das die Kameras nur aufnehmen, wenn es eben dunkel wird, oder keiner im Haus ist, oder oder oder.
Die Typische Regelsteuerung eben. Dafür musste ich aber erstmal herausfinden, wie die API "tickt".
Mit CURL habe ich es jetzt immerhin schon hinbekommen, das die Camera die Linenüberwachung ein- und ausschaltet.
Das ist so gelöst:
Im Ergebnis schaltet die Kamera die LineCrossingDetection auf ON oder eben mit false wieder auf OFF.
Schonmal gut
Nun wollte ich dieses Stückchen in ein Script hängen, welches ich dann über meine Regeln und Items (Anwesenheit, Astro etc) steuern kann.
Die Idee war, die CURL Lösung in einen httpPutRequest umzubuchen. Das ist krachend gescheitert. Da bin ich einfach zu blöd für.
Die neue Idee ist, den CURL Befehl einfach direkt in ein Skript zu legen.
Gesagt, getan:
Immerhin, nach einigem lesen und versuchen, gibts keine Fehler mehr , außer :
Der genannte Ordner und das Script haben User und Group 9001 (das ist der OPENHAB User). Die Berechtigungen sind mit 0777 gesetzt.
Der User Openhab kann das Script direkt (als ohne SH vorn) ausführen.
Der Root vom HOST kann das auch.
Das Skript ist in die Whitelist eingetragen.
Trotzdem lässt es sich nicht ausführen.
Ich habe das auch über die PaperUI mit dem Exec Binding probiert, aber das Ergebnis ist das gleiche.
So. Jetzt bin ich am Ende.
Wo ist der Fehler ?
Kann mich jemand Step-by-Step führen ?
Ich danke euch !
ich stecke hier seit Tagen fest.
Ich habe einige Kameras von Hikvision, die eine API unterstützen.
Der OpenHab 3.4.4 läuft in einem Docker und steuert Steckdosen und AudioVideoSystem.
Er soll nun dafür sorgen, das die Kameras nur aufnehmen, wenn es eben dunkel wird, oder keiner im Haus ist, oder oder oder.
Die Typische Regelsteuerung eben. Dafür musste ich aber erstmal herausfinden, wie die API "tickt".
Mit CURL habe ich es jetzt immerhin schon hinbekommen, das die Camera die Linenüberwachung ein- und ausschaltet.
Das ist so gelöst:
Code: Alles auswählen
curl --digest -X PUT "http://<Name>:<Passw>@<IP>/ISAPI/Smart/linedetection" -d "<LineDetectionList xmlns=\"http://www.hikvision.com/ver20/XMLSchema\" version=\"2.0\"><LineDetection><id>1</id><enabled>true</enabled></LineDetection></LineDetectionList>"
Schonmal gut
Nun wollte ich dieses Stückchen in ein Script hängen, welches ich dann über meine Regeln und Items (Anwesenheit, Astro etc) steuern kann.
Die Idee war, die CURL Lösung in einen httpPutRequest umzubuchen. Das ist krachend gescheitert. Da bin ich einfach zu blöd für.
Die neue Idee ist, den CURL Befehl einfach direkt in ein Skript zu legen.
Gesagt, getan:
Code: Alles auswählen
#!/bin/bash
var Exec = Java.type("org.openhab.core.model.script.actions.Exec");
Exec.executeCommandLine(Duration.ofSeconds(5),"/etc/openhab/scripts/lineDetectOn.sh")
Code: Alles auswählen
Failed to execute commandLine '[/etc/openhab/scripts/lineDetectOn.sh]'
Der User Openhab kann das Script direkt (als ohne SH vorn) ausführen.
Der Root vom HOST kann das auch.
Das Skript ist in die Whitelist eingetragen.
Trotzdem lässt es sich nicht ausführen.
Ich habe das auch über die PaperUI mit dem Exec Binding probiert, aber das Ergebnis ist das gleiche.
So. Jetzt bin ich am Ende.
Wo ist der Fehler ?
Kann mich jemand Step-by-Step führen ?
Ich danke euch !