Openhab 3 "executeCommandLine"

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

Antworten
DaWe
Beiträge: 3
Registriert: 2. Mär 2021 10:21
Answers: 0

Openhab 3 "executeCommandLine"

Beitrag von DaWe »

Hallo liebe Openhab Freunde,

nach dem Update auf Openhab 3 habe ich noch einen offenen Punk den ich bis heute nicht lösen konnte. In Openhab 2 hatte ich eine Rule mit folgenden Inhalt:

val urlimage = ZM_Haupteingang_ImageUrl.state
executeCommandLine("curl -L "+ urlimage +" -o /etc/openhab2/html/Eingang.jpg", 5000)

Nun hat sich die Sytax in Openhab ja geändert. Leide kommen ich nicht auf die richtige. :oops:
Folgendes funktioniert:

executeCommandLine("curl", "-L","PFADANGABE in Form von http://192. xxxxxxxx ","-o","/etc/openhab/html/Eingang.jpg").

Da der Pfad sich allerdings alle paar Stunden ändert, ist dies nicht praktikabel. Nach meinen Verständnis sollte:

executeCommandLine("curl", "-L", urlimage,"-o","/etc/openhab/html/Eingang.jpg")

die Rrichtige Sytax sein. Leider funktioniert die und ander nicht und es kommt fast immer die Fehlermeldung: "error=2, no such file in directory".

Kann mir hier jemand debn richtige weg weisen? :?:

Gruß
DW

Benutzeravatar
udo1toni
Beiträge: 15269
Registriert: 11. Apr 2018 18:05
Answers: 245
Wohnort: Darmstadt

Re: Openhab 3 "executeCommandLine"

Beitrag von udo1toni »

Kannst Du verifizieren, dass der Pfad im Item tatsächlich korrekt ist und z.B. keine verbotenen Zeichen enthält?
openHAB4.3.6 stable in einem Debian-Container (bookworm) (Proxmox 8.4.1, LXC), mit openHABian eingerichtet

DaWe
Beiträge: 3
Registriert: 2. Mär 2021 10:21
Answers: 0

Re: Openhab 3 "executeCommandLine"

Beitrag von DaWe »

Hallo

ich habe gerade einen Test mit folgenden Werten gemacht.

val image = ZM_Haupteingang_ImageUrl.state
executeCommandLine("curl", "-L", "image","-o","/etc/openhab/html/Eingang.jpg")

funktioniert nicht

executeCommandLine("curl", "-L","http://192.168.1.27/zm/cgi-bin/zms?mode ... ingang.jpg")

funktioniert

die Adresse ist der State des Items ZM_Haupteingang_ImageUrl.

Ich habe auch schon alle erdenklichen Varianten versucht. Alle leider ohne Erfolg. Setze ich die Adresse direkt ein funktioniert es immer. Aber wie schon beschrieben änderte sich diese alle 60 min.


DW

Benutzeravatar
peter-pan
Beiträge: 2773
Registriert: 28. Nov 2018 12:03
Answers: 30
Wohnort: Schwäbisch Gmünd

Re: Openhab 3 "executeCommandLine"

Beitrag von peter-pan »

...könnte es sein, dass deine Konstante/Variable "image" in deinem Kommando (executeCommandLine) nicht aufgelöst wird, da es als einfacher String (wegen der Hochkommas) behandelt wird und nicht als Alias für deine Adresse ??!!
Kann's leider nicht selber testen.
Pi5/8GB(PiOS Lite 64-bit(bookworm)/SSD 120GB - OH4.3.5 openhabian

Benutzeravatar
udo1toni
Beiträge: 15269
Registriert: 11. Apr 2018 18:05
Answers: 245
Wohnort: Darmstadt

Re: Openhab 3 "executeCommandLine"

Beitrag von udo1toni »

Ich nörgele ja immer... Bitte markiere Code immer als Code, das macht die Sache wesentlich besser lesbar.

Code: Alles auswählen

val image = ZM_Haupteingang_ImageUrl.state
executeCommandLine("curl", "-L", "image","-o","/etc/openhab/html/Eingang.jpg")
kann nicht funktionieren. image wird nicht als Variable, sondern als String übergeben.
Meine Frage bezog sich auf den Inhalt der Variablen.

Sinnvoll wäre es z.B., den Inhalt mal spaßeshalber zu loggen:

Code: Alles auswählen

val String strImage = ZM_Haupteingang_ImageUrl.state.toString
logInfo("getImage","strImage = {}",strImage)
executeCommandLine("curl", "-L", strImage,"-o","/etc/openhab/html/Eingang.jpg")
Es käme wirklich auf jedes einzelne Zeichen der Ausgabe an.
Das Logging landet in /var/log/openhab/openhab.log
Die anderen Änderungen am Code dienen lediglich der Klarheit.
openHAB4.3.6 stable in einem Debian-Container (bookworm) (Proxmox 8.4.1, LXC), mit openHABian eingerichtet

DaWe
Beiträge: 3
Registriert: 2. Mär 2021 10:21
Answers: 0

Re: Openhab 3 "executeCommandLine"

Beitrag von DaWe »

Hallo,

meckern ist erlaubt, vor allem wenn man die Antwort kennt :D . So funktioniert es.

Viel Dank.

Antworten