mediola

Probleme mit CURL Befehl

Allgemeines zur HomeMatic Haussteuerung

Werbung


Probleme mit CURL Befehl

Beitragvon 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
Accuracy
 
Beiträge: 552
Registriert: 22.05.2013, 15:37

Re: Probleme mit CURL Befehl

Beitragvon 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
452 Kanäle in 125 Geräten (RPi, 2 RF-LAN-Gateways, Funk und Wired, CUL und CUxD)

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.

AGENDA fürs Usertreffen 2018 jetzt verfügbar! Hier informieren: https://www.homematic-usertreffen.de. Termin: 20.4. - 22.4.2018 in Kassel

Einsteiger-Hilfeerweiterter Skript-ParserCCU2 WebUI Admin Kennwort weg und kein SSH-Zugang? - hier klicken

ACHTUNG! Per Portweiterleitung aus dem Internet erreichbare CCU2-WebUI ist unsicher! AUCH MIT PASSWORTSCHUTZ! Daher: Portweiterleitung deaktivieren! KEIN SCHERZ! Nur am 12.12.2017: CCUs von 3 Usern betroffen.
Benutzeravatar
anli
 
Beiträge: 4287
Registriert: 10.06.2009, 13:01
Wohnort: 20 Min. nördlich von Hannover und bei Bremen

Re: Probleme mit CURL Befehl

Beitragvon 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
Accuracy
 
Beiträge: 552
Registriert: 22.05.2013, 15:37

Re: Probleme mit CURL Befehl

Beitragvon 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
452 Kanäle in 125 Geräten (RPi, 2 RF-LAN-Gateways, Funk und Wired, CUL und CUxD)

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.

AGENDA fürs Usertreffen 2018 jetzt verfügbar! Hier informieren: https://www.homematic-usertreffen.de. Termin: 20.4. - 22.4.2018 in Kassel

Einsteiger-Hilfeerweiterter Skript-ParserCCU2 WebUI Admin Kennwort weg und kein SSH-Zugang? - hier klicken

ACHTUNG! Per Portweiterleitung aus dem Internet erreichbare CCU2-WebUI ist unsicher! AUCH MIT PASSWORTSCHUTZ! Daher: Portweiterleitung deaktivieren! KEIN SCHERZ! Nur am 12.12.2017: CCUs von 3 Usern betroffen.
Benutzeravatar
anli
 
Beiträge: 4287
Registriert: 10.06.2009, 13:01
Wohnort: 20 Min. nördlich von Hannover und bei Bremen

Re: Probleme mit CURL Befehl

Beitragvon 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?
Accuracy
 
Beiträge: 552
Registriert: 22.05.2013, 15:37

Re: Probleme mit CURL Befehl

Beitragvon 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 2.31.25.20180120 @ RPi3 mit ~140 HomeMatic Geräten + ioBroker – GitHubPayPal
Benutzeravatar
jmaus
 
Beiträge: 2127
Registriert: 17.02.2015, 14:45
Wohnort: Dresden

Re: Probleme mit CURL Befehl

Beitragvon 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?
Accuracy
 
Beiträge: 552
Registriert: 22.05.2013, 15:37

Re: Probleme mit CURL Befehl

Beitragvon 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 2.31.25.20180120 @ RPi3 mit ~140 HomeMatic Geräten + ioBroker – GitHubPayPal
Benutzeravatar
jmaus
 
Beiträge: 2127
Registriert: 17.02.2015, 14:45
Wohnort: Dresden

Re: Probleme mit CURL Befehl

Beitragvon 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
Akwak
 
Beiträge: 275
Registriert: 07.05.2013, 20:00
Wohnort: Seevetal

Re: Probleme mit CURL Befehl

Beitragvon 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 2.31.25.20180120 @ RPi3 mit ~140 HomeMatic Geräten + ioBroker – GitHubPayPal
Benutzeravatar
jmaus
 
Beiträge: 2127
Registriert: 17.02.2015, 14:45
Wohnort: Dresden

Nächste

Zurück zu HomeMatic allgemein

Wer ist online?

Mitglieder in diesem Forum: PTix und 13 Gäste







© homematic-forum.de & Lizenzgebern. Alle Rechte vorbehalten. Alle Bilder & Texte auf dieser Seite sind Eigentum
der jeweiligen Besitzer und dürfen ohne deren Einwilligung weder kopiert noch sonstwie weiter verwendet werden.