Probleme mit CURL Befehl

Allgemeines zur HomeMatic Haussteuerung

Moderator: Co-Administratoren

Accuracy
Beiträge: 746
Registriert: 22.05.2013, 16:37
Hat sich bedankt: 1 Mal

Probleme mit CURL Befehl

Beitrag von Accuracy » 21.01.2018, 09:18

Hi Leute,

ich bekomme im Sktipteditor immer eine Fehlermeldung bei folgendem CURL Befehl in meinem Skript:

Code: Alles auswählen

dom.GetObject('CUxD.CUX2801001:1.CMD_EXEC').State('LD_LIBRARY_PATH=/usr/local/addons/cuxd /usr/local/addons/cuxd/curl -H "Content-Type: application/json" -X PUT -d '{"on":false}' http://192.168.1.45/api/meineAPI/sensors/25B2A128B-2B22-48DD-5FA9-91A3F02D/config');
Es scheint an den Gänsefüßchen zu liegen.

Der Fehler ist wie folgt:

Code: Alles auswählen

Error 1 at row 1 col 312 near ^"on":false}' http://192.168.1.45/api/meineAPI/sensors/...
Parse following code failed:
dom.GetObject('CUxD.CUX2801001:1.CMD_EXEC').State('LD_LIBRARY_PATH=/usr/local/addons/cuxd /usr/local/addons/cuxd/curl -H "Content-Type: application/json" -X PUT -d '{"on":false}' http://192.168.1.45/api/
Wenn ich die ' Gänsefüßchen rausnehme, dann ist der Fehler weg aber das Skript wird nicht richtig ausgeführt.

Muss man für CURL ggf. noch was installieren?

vielen Dank schon einmal für Eure Hilfe
Zuletzt geändert von alchy am 21.01.2018, 18:48, insgesamt 1-mal geändert.
Grund: Code in Codetags posten

Benutzeravatar
anli
Beiträge: 4326
Registriert: 10.06.2009, 14:01
Wohnort: 20 Min. nördlich von Hannover und bei Bremen
Hat sich bedankt: 1 Mal
Danksagung erhalten: 23 Mal
Kontaktdaten:

Re: Probleme mit CURL Befehl

Beitrag von anli » 21.01.2018, 13:38

Es liegt daran, dass das Gänsefüßchen den entsprechenden String zu früh „zu macht“. Probiere mal, die einfachen Gänsefüßchen zu escapen, also an den betreffenden Stellen \‘ zu schreiben.
Herzliche Grüße, anli

Alle Angaben ohne Gewähr und Haftung meinerseits. Verwendung der von mir zur Verfügung gestellten Downloads auf eigene Gefahr. Ich bitte um Verständnis, dass ich aus zeitlichen Gründen keine unaufgeforderte Hilfestellung per PN/Mail geben kann. Bitte allgemeine Fragen ins Forum stellen, hier können viele fähige User viel schneller helfen.

Homematic-Manager v2: einfaches Tool zum Erstellen von Direktverknüpfungen und Bearbeiten von Gerätenamen, -parametern etc. für Homematic und HomematicIP (Alternative diesbzgl. zur WebUI)

Einsteiger-Hilfeerweiterter Skript-Parser

Accuracy
Beiträge: 746
Registriert: 22.05.2013, 16:37
Hat sich bedankt: 1 Mal

Re: Probleme mit CURL Befehl

Beitrag von Accuracy » 21.01.2018, 14:01

Du meinst so?

Code: Alles auswählen

dom.GetObject('CUxD.CUX2801001:1.CMD_EXEC').State('LD_LIBRARY_PATH=/usr/local/addons/cuxd /usr/local/addons/cuxd/curl -H "Content-Type: application/json" -X PUT -d \‘{"on":false}\‘ http://192.168.1.45/api/...
was dann zu folgendem geparsed wird:

Code: Alles auswählen

dom.GetObject('CUxD.CUX2801001:1.CMD_EXEC').State('LD_LIBRARY_PATH=/usr/local/addons/cuxd /usr/local/addons/cuxd/curl -H "Content-Type: application/json" -X PUT -d \%u2018{"on":false}\%u2018 http://192.168.1.45/api/ ...
Dann ist zwar die Fehlermeldung weg aber das Script scheint nicht zu funktionieren bzw. wird nicht richtig ausgeführt. Irgendwas scheint immer noch nicht zu passen ...
(Ich hatte die einzelne Befehlt in der HUE developer Debugumgebung getestet. Da klappt's ....)
Zuletzt geändert von alchy am 21.01.2018, 18:49, insgesamt 1-mal geändert.
Grund: Code in Codetags posten

Benutzeravatar
anli
Beiträge: 4326
Registriert: 10.06.2009, 14:01
Wohnort: 20 Min. nördlich von Hannover und bei Bremen
Hat sich bedankt: 1 Mal
Danksagung erhalten: 23 Mal
Kontaktdaten:

Re: Probleme mit CURL Befehl

Beitrag von anli » 21.01.2018, 16:48

Schau mal, habe ich eben mit google state anführungszeichen homematic gefunden: viewtopic.php?f=19&t=12512
Herzliche Grüße, anli

Alle Angaben ohne Gewähr und Haftung meinerseits. Verwendung der von mir zur Verfügung gestellten Downloads auf eigene Gefahr. Ich bitte um Verständnis, dass ich aus zeitlichen Gründen keine unaufgeforderte Hilfestellung per PN/Mail geben kann. Bitte allgemeine Fragen ins Forum stellen, hier können viele fähige User viel schneller helfen.

Homematic-Manager v2: einfaches Tool zum Erstellen von Direktverknüpfungen und Bearbeiten von Gerätenamen, -parametern etc. für Homematic und HomematicIP (Alternative diesbzgl. zur WebUI)

Einsteiger-Hilfeerweiterter Skript-Parser

Accuracy
Beiträge: 746
Registriert: 22.05.2013, 16:37
Hat sich bedankt: 1 Mal

Re: Probleme mit CURL Befehl

Beitrag von Accuracy » 23.01.2018, 06:59

Habe den Thread durchgeschaut. Die haben genau das gleich Problem wie ich und empfehlen:

Hatte das Problem bei einer anderen Applikation. CUXD oder verträgt keine Sonderzeichen wie "\n" im String.

Mein Workaround damals:
Mit CUXD ein Shell Script aufrufen (ev. mit Parametern), welches dann den curl-Befehl korrekt aufruft
.

jetzt stellt sich mir die Frage wie mache ich das mit dem Shell Skript Aufruf?

Benutzeravatar
jmaus
Beiträge: 9844
Registriert: 17.02.2015, 14:45
System: Alternative CCU (auf Basis OCCU)
Wohnort: Dresden
Hat sich bedankt: 462 Mal
Danksagung erhalten: 1863 Mal
Kontaktdaten:

Re: Probleme mit CURL Befehl

Beitrag von jmaus » 23.01.2018, 08:10

Accuracy hat geschrieben: jetzt stellt sich mir die Frage wie mache ich das mit dem Shell Skript Aufruf?
Ohne das ich es probiert habe sollte folgender system.Exec() Aufruf prinzipiell funktionieren:

Code: Alles auswählen

string stdout;
string stderr;
system.Exec("LIBRARY_PATH=/usr/local/addons/cuxd /usr/local/addons/cuxd/curl -H \"Content-Type: application/json\" -X PUT -d '{\"on\":false}' http://192.168.1.45/api/meineAPI/sensors/25B2A128B-2B22-48DD-5FA9-91A3F02D/config", &stdout, &stderr);
Und wenn du eine RaspberryMatic verwendest kann es sogar so aussehen:

Code: Alles auswählen

string stdout;
string stderr;
system.Exec("curl -H \"Content-Type: application/json\" -X PUT -d '{\"on\":false}' http://192.168.1.45/api/meineAPI/sensors/25B2A128B-2B22-48DD-5FA9-91A3F02D/config", &stdout, &stderr);
Und wenn das nur ein reiner Aufruf ist ohne das du die Ausgabe des curl Befehles brauchst dann kann es noch weiter verkürzt werden:

Code: Alles auswählen

system.Exec("curl -H \"Content-Type: application/json\" -X PUT -d '{\"on\":false}' http://192.168.1.45/api/meineAPI/sensors/25B2A128B-2B22-48DD-5FA9-91A3F02D/config &");
RaspberryMatic 3.75.6.20240316 @ ProxmoxVE – ~200 Hm-RF/HmIP-RF/HmIPW Geräte + ioBroker + HomeAssistant – GitHub / Sponsors / PayPal / ☕️

Accuracy
Beiträge: 746
Registriert: 22.05.2013, 16:37
Hat sich bedankt: 1 Mal

Re: Probleme mit CURL Befehl

Beitrag von Accuracy » 23.01.2018, 15:50

danke für die schnelle Antwort. Ich nutze eigentich keine System.Exec Befehle mehr, sondern CuxD.
Gibts das auch für CuxD?

Benutzeravatar
jmaus
Beiträge: 9844
Registriert: 17.02.2015, 14:45
System: Alternative CCU (auf Basis OCCU)
Wohnort: Dresden
Hat sich bedankt: 462 Mal
Danksagung erhalten: 1863 Mal
Kontaktdaten:

Re: Probleme mit CURL Befehl

Beitrag von jmaus » 23.01.2018, 17:15

Accuracy hat geschrieben:danke für die schnelle Antwort. Ich nutze eigentich keine System.Exec Befehle mehr, sondern CuxD.
Gibts das auch für CuxD?
Warum? Gerade mit neuesten CCU2 Firmwares gibt es keinerlei Grund mehr warum man system.Exec() nicht nutzen sollte. Es ist leider ein weit verbreiteter Irrglaube das system.Exec() Probleme macht. Das war in der Stärke noch nie so und seit neuesten CCU2 Firmwares mit ReGaHss Community+Standard hat man auch ein system.Exec() an der Hand das CUxD nicht mehr vermissen lässt.
RaspberryMatic 3.75.6.20240316 @ ProxmoxVE – ~200 Hm-RF/HmIP-RF/HmIPW Geräte + ioBroker + HomeAssistant – GitHub / Sponsors / PayPal / ☕️

Benutzeravatar
Akwak
Beiträge: 323
Registriert: 07.05.2013, 21:00
Wohnort: Seevetal
Hat sich bedankt: 13 Mal
Danksagung erhalten: 2 Mal

Re: Probleme mit CURL Befehl

Beitrag von Akwak » 23.01.2018, 20:51

Hallo Jens,
das ist schön zu hören, das System.Exec jetzt auch nichtblockierend Befehle ausführt und den Task bei zu langer Laufzeit abbricht.
Gruss,
Alfred

Benutzeravatar
jmaus
Beiträge: 9844
Registriert: 17.02.2015, 14:45
System: Alternative CCU (auf Basis OCCU)
Wohnort: Dresden
Hat sich bedankt: 462 Mal
Danksagung erhalten: 1863 Mal
Kontaktdaten:

Re: Probleme mit CURL Befehl

Beitrag von jmaus » 23.01.2018, 21:09

Akwak hat geschrieben: das ist schön zu hören, das System.Exec jetzt auch nichtblockierend Befehle ausführt und den Task bei zu langer Laufzeit abbricht.
Letzteres ist zwar nicht so, aber das sollte IMHO nicht wirklich ein großes Problem darstellen, denn wenn man Befehle immer nicht blockierende aufruft dann sollte das die ReGaHss in keinster Weise blockieren.
RaspberryMatic 3.75.6.20240316 @ ProxmoxVE – ~200 Hm-RF/HmIP-RF/HmIPW Geräte + ioBroker + HomeAssistant – GitHub / Sponsors / PayPal / ☕️

Antworten

Zurück zu „HomeMatic allgemein“