System.exec durch CuxD ersetzen

Anbindung von FS20-Komponenten, ELV-Wetterstationen, EnOcean und DMX an HomeMatic

Moderator: Co-Administratoren

afrenzel
Beiträge: 8
Registriert: 14.05.2012, 22:29

Sytem.exc durch CuxD ersetzen

Beitrag von afrenzel » 31.05.2012, 22:37

Hallo Uwe,

Leider gleiches Ergebnis :(

Gruss Andreas

Benutzeravatar
uwe111
Beiträge: 4819
Registriert: 26.02.2011, 22:22
Hat sich bedankt: 3 Mal
Danksagung erhalten: 245 Mal
Kontaktdaten:

Re: Sytem.exc durch CuxD ersetzen

Beitrag von uwe111 » 31.05.2012, 22:44

Hallo Andreas,
afrenzel hat geschrieben: Leider gleiches Ergebnis :(
und auf der Shell (mit Telnet)? Zuerst muss es auf der Shell funktionieren. Sonst wird das nichts.

Viele Grüße,

Uwe.
Alle sagten: Das geht nicht. Dann kam einer, der wußte das nicht und hat's einfach gemacht.
SPENDEN :wink: Download: CUxD 2.11, SSH KeyDir

ColleLupi
Beiträge: 228
Registriert: 10.12.2008, 09:26

Re: Sytem.exc durch CuxD ersetzen

Beitrag von ColleLupi » 01.06.2012, 12:09

uwe111 hat geschrieben:Hallo Stefan,
ColleLupi hat geschrieben: z.B. wget -q -O /dev/null 'http://192.168.1.93:50000/track=Alarmabbrechen.mp3
als Eintrag unter SYSTEM|CMD_SHORT in Geräte und es läuft.
Aber mit den neuesten Updates auch CuxD 0.567 werden die Einträge unter SYSTEM|CMD_SHORT von neuen Geräten nicht mehr gespeichert.
Nachtrag:
Füllt man SYSTEM|CMD_Long auch aus, gibt es eine Fehlermeldung: Homematicfehler-Das Profil kann nicht gespeichert werden
Das ist kein CUxD-Problem, sondern ein Problem der WebUI.
Leider werden bestimmte Zeichen aus den Eingabefeldern bei der Formularübergabe nur fehlerhaft als Parameter übergeben und erzeugen dann einen WebUI-Fehler.
Das betrifft in Deinem Fall das '='-Zeichen.
Hier musst Du Dir einen Workaround einfallen lassen um diese Zeichen im WebUI-Formularfeld zu vermeiden.
Du könntest z.B. versuchen, die Parameter über HM-Script Aufrufe zu setzten.

Viele Grüße,

Uwe.
Hallo Uwe,
habe das Ganze mit Homeputer CL + Getsite gelöst. Warum ich das Update angeführt habe:
Es existiert immer noch bei mir ein Eintrag unter SYSTEM|CMD_SHORT mit "="+kompletten Text(siehe oben) und wird auch ausgeführt, eingegeben vor Cuxd-Update Jetzt werdenn neue Textzeilen rausgeworfen. Egal was ich eingebe. Den alten text kann ich auch nicht löschen.
Gruss Stefan
375 Kanäle in 96 Geräten:
3x HM-LC-Sw1-Pl, 4x HM-LC-Sw1-FM, 2x HM-LC-Dim1L-Pl, 4x HM-LC-Dim1L-CV, 1x HMW-WSE-SM, 8x HM-CC-TC, 1x HM-RC-19, 8x HM-LC-Sw4-SM, 8x HM-CC-VD, 1x HMW-IO-4-FM, 1x HM-CCU-1, 1x HMW-IO-12-Sw7-DR, 5x HM-PB-2-WM, 2x HM-WDS30-T-O, 3x HM-Sec-MDIR, 1x HM-Sen-MDIR-SM, 4x HMW-IO-12-Sw14-DR, 1x HM-LC-Sw2-FM, 3x HM-Sec-SD, 1x HM-Sec-WDS, 4x HM-SCI-3-FM, 1x HM-LC-Sw4-PCB, 3x HMW-Sen-SC-12-DR, 2x HM-PB-4Dis-WM, 2x HM-Sen-EP, 4x HM-WS550STH-I, 1x HM-WDS40-TH-I, 1x HM-WDS10-TH-O, 6x HM-Sec-SC, 2x HM-WDS100-C6-O, 1x HM-WDC7000 und vieles mehr.

Benutzeravatar
uwe111
Beiträge: 4819
Registriert: 26.02.2011, 22:22
Hat sich bedankt: 3 Mal
Danksagung erhalten: 245 Mal
Kontaktdaten:

Re: Sytem.exc durch CuxD ersetzen

Beitrag von uwe111 » 01.06.2012, 19:52

Hallo Andreas,
afrenzel hat geschrieben: Leider gleiches Ergebnis :(
also soeben habe ich es mit meiner Dreambox getestet. Auf meiner CCU läuft Firmware 1.505 und es funktionierte sofort.
Die folgenden 3 Zeilen habe ich unter "Script Testen" eingegeben und der Text war zu sehen.
Die 3. Zeile ist nur zur Kontrolle, ob das Script durchläuft.

Code: Alles auswählen

string url="'http://192.168.99.112/web/message?text=Ich_bin_deine_Homematic&type=3&timeout=10'";
dom.GetObject("CUxD.CUX2801001:1.CMD_EXEC").State("wget -q -O - "#url);
WriteLine("Hallo Welt!");
Mein System-Exec hatte die Seriennummer: 1.

Aber auf der CCU-Shell funktionierte das folgende auch sofort:

Code: Alles auswählen

wget -q -O - 'http://192.168.99.112/web/message?text=Ich_bin_deine_Homematic&type=3&timeout=10'
Viele Grüße,

Uwe.
Alle sagten: Das geht nicht. Dann kam einer, der wußte das nicht und hat's einfach gemacht.
SPENDEN :wink: Download: CUxD 2.11, SSH KeyDir

afrenzel
Beiträge: 8
Registriert: 14.05.2012, 22:29

Sytem.exc durch CuxD ersetzen

Beitrag von afrenzel » 01.06.2012, 23:09

Hi,
Hatte heute leider keine zeit, werde am we testen und Feedback geben. Danke aber erstmal.

Gruß

Andreas

ColleLupi
Beiträge: 228
Registriert: 10.12.2008, 09:26

Re: Sytem.exc durch CuxD ersetzen

Beitrag von ColleLupi » 02.06.2012, 12:19

uwe111 hat geschrieben:Hallo Andreas,
afrenzel hat geschrieben: Leider gleiches Ergebnis :(
also soeben habe ich es mit meiner Dreambox getestet. Auf meiner CCU läuft Firmware 1.505 und es funktionierte sofort.
Die folgenden 3 Zeilen habe ich unter "Script Testen" eingegeben und der Text war zu sehen.
Die 3. Zeile ist nur zur Kontrolle, ob das Script durchläuft.

Code: Alles auswählen

string url="'http://192.168.99.112/web/message?text=Ich_bin_deine_Homematic&type=3&timeout=10'";
dom.GetObject("CUxD.CUX2801001:1.CMD_EXEC").State("wget -q -O - "#url);
WriteLine("Hallo Welt!");
Mein System-Exec hatte die Seriennummer: 1.

Aber auf der CCU-Shell funktionierte das folgende auch sofort:

Code: Alles auswählen

wget -q -O - 'http://192.168.99.112/web/message?text=Ich_bin_deine_Homematic&type=3&timeout=10'
Viele Grüße,

Uwe.
Hallo Uwe,
danke für diese schöne Erklärung. Ich konnte es ausprobieren:
string url="'http://192.168.1.93:50000/track=Hausalarm.mp3'";
dom.GetObject("CUxD.CUX2801998:1.CMD_EXEC").State("wget -q -O - "#url);
WriteLine("Hallo Welt!");
..und es funktioniert.
Grüsse Stefan
375 Kanäle in 96 Geräten:
3x HM-LC-Sw1-Pl, 4x HM-LC-Sw1-FM, 2x HM-LC-Dim1L-Pl, 4x HM-LC-Dim1L-CV, 1x HMW-WSE-SM, 8x HM-CC-TC, 1x HM-RC-19, 8x HM-LC-Sw4-SM, 8x HM-CC-VD, 1x HMW-IO-4-FM, 1x HM-CCU-1, 1x HMW-IO-12-Sw7-DR, 5x HM-PB-2-WM, 2x HM-WDS30-T-O, 3x HM-Sec-MDIR, 1x HM-Sen-MDIR-SM, 4x HMW-IO-12-Sw14-DR, 1x HM-LC-Sw2-FM, 3x HM-Sec-SD, 1x HM-Sec-WDS, 4x HM-SCI-3-FM, 1x HM-LC-Sw4-PCB, 3x HMW-Sen-SC-12-DR, 2x HM-PB-4Dis-WM, 2x HM-Sen-EP, 4x HM-WS550STH-I, 1x HM-WDS40-TH-I, 1x HM-WDS10-TH-O, 6x HM-Sec-SC, 2x HM-WDS100-C6-O, 1x HM-WDC7000 und vieles mehr.

Benutzeravatar
uwe111
Beiträge: 4819
Registriert: 26.02.2011, 22:22
Hat sich bedankt: 3 Mal
Danksagung erhalten: 245 Mal
Kontaktdaten:

Re: Sytem.exc durch CuxD ersetzen

Beitrag von uwe111 » 02.06.2012, 13:18

Hallo Stefan,

zum Setzen des Parameters kannst Du auch die folgenden Befehle nehmen:

Code: Alles auswählen

string url="'http://192.168.1.93:50000/track=Hausalarm.mp3'";
dom.GetObject("CUxD.CUX2801998:1.CMD_SETS").State("wget -q -O - "#url);
So umgehst Du das Problem mit den Sonderzeichen im Eingabefeld der WebUI.

Viele Grüße,

Uwe.
Alle sagten: Das geht nicht. Dann kam einer, der wußte das nicht und hat's einfach gemacht.
SPENDEN :wink: Download: CUxD 2.11, SSH KeyDir

Benutzeravatar
Dragonfly
Beiträge: 1249
Registriert: 04.01.2010, 11:40
Wohnort: Tyrol
Hat sich bedankt: 1 Mal
Danksagung erhalten: 4 Mal
Kontaktdaten:

Re: Sytem.exc durch CuxD ersetzen

Beitrag von Dragonfly » 15.07.2012, 20:54

Hallo nochmal auf dieser Seite.
Setze ich folgenden Befehl als Script im "dann"-Bereich ein

Code: Alles auswählen

string url="http://192.168.1.12:8885/asuite";
dom.GetObject("CUxD.CUX2801001:1.CMD_EXEC").State("wget -q -O - '"#url#"'");
um ein Programm zu starten (das funktioniert ohne Probleme) taucht dies im "Full Syslog" auf:

Code: Alles auswählen

Jul 15 19:07:48 (none) daemon.err cuxd[2974]: system(wget -q -O - 'http://192.168.1.1:8885/asuite'): No such file or directory
Jul 15 19:08:07 (none) syslog.info -- MARK --
Jul 15 19:15:01 (none) cron.notice crond[999]: USER root pid 3192 cmd /bin/arm7setclock 
Jul 15 19:25:42 (none) local0.err ReGaHss: Error: IseESP::ExecError= Execution failed: [-1] 0 0x00 [0] 144 0x90 [1] 0 0x00 [2] 9 0x09 [3] 0 0x00 [4] 28 0x1c  [../Platform/DOM/iseESPexec.cpp (11622)]
Jul 15 19:25:43 (none) local0.err ReGaHss: Error: IseESP::ExecError= Execution failed: [-1] 0 0x00 [0] 144 0x90 [1] 0 0x00 [2] 9 0x09 [3] 0 0x00 [4] 28 0x1c  [../Platform/DOM/iseESPexec.cpp (11622)]
Jul 15 19:28:07 (none) syslog.info -- MARK --
Jul 15 19:29:01 (none) local0.err ReGaHss: Error: IseESP::ExecError= Execution failed: [-1] 0 0x00 [0] 144 0x90 [1] 0 0x00 [2] 9 0x09 [3] 0 0x00 [4] 28 0x1c  [../Platform/DOM/iseESPexec.cpp (11622)]
Jul 15 19:29:01 (none) local0.err ReGaHss: Error: IseESP::ExecError= Execution failed: [-1] 0 0x00 [0] 144 0x90 [1] 0 0x00 [2] 9 0x09 [3] 0 0x00 [4] 28 0x1c  [../Platform/DOM/iseESPexec.cpp (11622)]
Jul 15 19:29:08 (none) local0.err ReGaHss: Error: IseESP::ExecError= Execution failed: [-1] 0 0x00 [0] 0 0x00 [1] 0 0x00 [2] 0 0x00 [3] 0 0x00 [4] 0 0x00  [../Platform/DOM/iseESPexec.cpp (11622)]
Jul 15 19:29:10 (none) local0.err ReGaHss: Error: IseESP::ExecError= Execution failed: [-1] 0 0x00 [0] 0 0x00 [1] 0 0x00 [2] 0 0x00 [3] 0 0x00 [4] 0 0x00  [../Platform/DOM/iseESPexec.cpp (11622)]
Jul 15 19:30:01 (none) cron.notice crond[999]: USER root pid 3661 cmd /bin/arm7setclock 
Jul 15 19:31:44 (none) local0.err ReGaHss: Error: IseESP::ExecError= Execution failed: [-1] 0 0x00 [0] 144 0x90 [1] 0 0x00 [2] 9 0x09 [3] 0 0x00 [4] 28 0x1c  [../Platform/DOM/iseESPexec.cpp (11622)]
Jul 15 19:31:44 (none) local0.err ReGaHss: Error: IseESP::ExecError= Execution failed: [-1] 0 0x00 [0] 144 0x90 [1] 0 0x00 [2] 9 0x09 [3] 0 0x00 [4] 28 0x1c  [../Platform/DOM/iseESPexec.cpp (11622)]
Jul 15 19:32:01 (none) local0.err ReGaHss: Error: IseESP::ExecError= Execution failed: [-1] 0 0x00 [0] 144 0x90 [1] 0 0x00 [2] 9 0x09 [3] 0 0x00 [4] 28 0x1c  [../Platform/DOM/iseESPexec.cpp (11622)]
Jul 15 19:32:04 (none) local0.err ReGaHss: Error: IseESP::ExecError= Execution failed: [-1] 0 0x00 [0] 144 0x90 [1] 0 0x00 [2] 9 0x09 [3] 0 0x00 [4] 28 0x1c  [../Platform/DOM/iseESPexec.cpp (11622)]
Jul 15 19:45:01 (none) cron.notice crond[999]: USER root pid 3918 cmd /bin/arm7setclock 
Jul 15 19:48:07 (none) syslog.info -- MARK --
Gehört das so, oder mache ich was falsch?

Hier geht nichts - Weder Programm noch Fehlermeldung:

Code: Alles auswählen

string url="http://192.168.1.12:8885/asuite";
dom.GetObject("CUxD.CUX2801001:1.CMD_SETS").State("wget -q -O - '"#url#"'");
Hier kommt eine Fehlermeldung, aber das Programm wird nicht gestartet

Code: Alles auswählen

string url="http://192.168.1.12:8885/asuite";
dom.GetObject("CUxD.CUX2801998:1.CMD_SETS").State("wget -q -O - "#url);

Code: Alles auswählen

Jul 15 20:33:46 (none) daemon.err cuxd[4797]: system(wget -q -O - 'http://192.168.125.1:8885/asuite'): No such file or directory
Und da geht auch nichts:

Code: Alles auswählen

string url="http://192.168.1.12:8885/asuite";
dom.GetObject("CUxD.CUX2801666:1.CMD_EXEC").State("wget -q -O - "#url);

Code: Alles auswählen

Jul 15 20:47:47 (none) local0.err ReGaHss: Error: IseESP::ExecError= Execution failed: [-1] 0 0x00 [0] 145 0x91 [1] 0 0x00 [2] 99 0x63 [3] 0 0x00 [4] 100 0x64  [../Platform/DOM/iseESPexec.cpp (11622)]
Danke schonmal an Uwe und seine Geduld!

Benutzeravatar
uwe111
Beiträge: 4819
Registriert: 26.02.2011, 22:22
Hat sich bedankt: 3 Mal
Danksagung erhalten: 245 Mal
Kontaktdaten:

Re: Sytem.exc durch CuxD ersetzen

Beitrag von uwe111 » 15.07.2012, 21:29

Hallo Tom,

diese (11622) Fehlermeldungen bekomme ich auch oft. Sie scheinen aber nichts mit CUxD zu tun zu haben.

CMD_SETS setzt nur den Befehl und führt ihn nicht aus. Im Prinzip das gleiche, wie der CMD_SHORT Parameter.
CMD_RUNS führt den Befehl dann aus.
Also CMD_SETS + CMD_RUNS hintereinander sollten das gleiche Ergebnis bringen wie CMD_EXEC alleine.
Ein mittels CMD_SETS bzw. CMD_SHORT gesetzter Befehl bleibt übrigens erhalten, so dass Du ihn danach immer wieder mittels CMD_RUNS aufrufen kannst.

Wenn Du die Befehlsausgabe auswerten möchtest, dann nehme CMD_SETS + CMD_RETS hintereinander.

Viele Grüße,

Uwe.
Alle sagten: Das geht nicht. Dann kam einer, der wußte das nicht und hat's einfach gemacht.
SPENDEN :wink: Download: CUxD 2.11, SSH KeyDir

Benutzeravatar
Dragonfly
Beiträge: 1249
Registriert: 04.01.2010, 11:40
Wohnort: Tyrol
Hat sich bedankt: 1 Mal
Danksagung erhalten: 4 Mal
Kontaktdaten:

Re: Sytem.exc durch CuxD ersetzen

Beitrag von Dragonfly » 16.07.2012, 17:48

Hallo Uwe ...ich schon wieder.

Wie versende ich jetzt korrekt eine Mail:
Original:

Code: Alles auswählen

string stdout;
string stderr;
system.Exec("/etc/config/addons/email/email 03");
mit CUxD:

Code: Alles auswählen

string url="/etc/config/addons/email/email 04";
dom.GetObject("CUxD.CUX2801001:1.CMD_EXEC").State("#url");
Habe schon verschiedene Varianten bei der "url" durch, will aber keine klappen :(

Danke Uwe :mrgreen:

Antworten

Zurück zu „CUxD“