Probleme mit CURL Befehl

Allgemeines zur HomeMatic Haussteuerung

Moderator: Co-Administratoren

Accuracy
Beiträge: 587
Registriert: 22.05.2013, 16:37

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: 4297
Registriert: 10.06.2009, 14:01
Wohnort: 20 Min. nördlich von Hannover und bei Bremen
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.

TERMIN für das Usertreffen 2019 jetzt verfügbar! Hier informieren: https://www.homematic-usertreffen.de. Termin: 5.4. - 7.4.2019 in Kassel (freitags nur Workshops, Vorträge Sa + So)

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-ParserCCU2 WebUI Admin Kennwort weg und kein SSH-Zugang? - hier klicken

Accuracy
Beiträge: 587
Registriert: 22.05.2013, 16:37

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: 4297
Registriert: 10.06.2009, 14:01
Wohnort: 20 Min. nördlich von Hannover und bei Bremen
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.

TERMIN für das Usertreffen 2019 jetzt verfügbar! Hier informieren: https://www.homematic-usertreffen.de. Termin: 5.4. - 7.4.2019 in Kassel (freitags nur Workshops, Vorträge Sa + So)

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-ParserCCU2 WebUI Admin Kennwort weg und kein SSH-Zugang? - hier klicken

Accuracy
Beiträge: 587
Registriert: 22.05.2013, 16:37

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: 3492
Registriert: 17.02.2015, 14:45
Wohnort: Dresden
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.37.8.20181026 @ TinkerS mit ~150 HomeMatic Geräten + ioBroker – GitHubPayPal

Accuracy
Beiträge: 587
Registriert: 22.05.2013, 16:37

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: 3492
Registriert: 17.02.2015, 14:45
Wohnort: Dresden
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.37.8.20181026 @ TinkerS mit ~150 HomeMatic Geräten + ioBroker – GitHubPayPal

Benutzeravatar
Akwak
Beiträge: 304
Registriert: 07.05.2013, 21:00
Wohnort: Seevetal

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: 3492
Registriert: 17.02.2015, 14:45
Wohnort: Dresden
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.37.8.20181026 @ TinkerS mit ~150 HomeMatic Geräten + ioBroker – GitHubPayPal

Antworten

Zurück zu „HomeMatic allgemein“