SystemExec durch CuxD ersetzen -> vorher / nachher

Problemlösungen und Hinweise von allgemeinem Interesse zur Haussteuerung mit HomeMatic

Moderator: Co-Administratoren

alchy
Beiträge: 10754
Registriert: 24.02.2011, 01:34
System: CCU
Hat sich bedankt: 65 Mal
Danksagung erhalten: 673 Mal

Re: SystemExec durch CuxD ersetzen -> vorher / nachher

Beitrag von alchy » 14.09.2014, 22:46

Ja ich meine die Code Tags. :evil:
Es ist für die Lesenden einfacher und übersichtlicher.

Natürlich musst Du in dem Script den tatsächlichen Namen deines CUXD Datenpunktes eingeben.
Schau mit geeigneten Mitteln nach wie dein CUxD Datenpunkt heisst.

Gibt das Script

Code: Alles auswählen

var alchy = dom.GetObject("CUxD.CUX2801001:1.CMD_EXEC").ID();
WriteLine(alchy);
eine Zahl zurück?

Alchy

Blacklist................... almost full
Ignoranz ist die Summe aller Maßnahmen die man ergreift, um bestehende Tatsachen nicht sehen zu müssen.

© Sandra Pulsfort (*1974)

Lies bitte die Logik von WebUI Programmen und die Tipps und Tricks für Anfänger.

Wichtig auch CUxD ersetzt System.exec. Die HM Script Doku (Downloadart Skripte) hilft auch weiter.
Zum Testen von Scripten den >> HomeMatic Script Executor << von Anli benutzen.

Benutzeravatar
papi
Beiträge: 371
Registriert: 18.12.2013, 08:40
Wohnort: Willich, NRW
Hat sich bedankt: 2 Mal
Danksagung erhalten: 5 Mal

Re: SystemExec durch CuxD ersetzen -> vorher / nachher

Beitrag von papi » 15.09.2014, 17:21

Ja, es kommt die 32530 dabei raus.

Nachfolgender Code versendet nun genau 3 Mails (der letzte Befehl wird nachweislich nicht ausgeführt (dafür aber der Vorletzte!)):

Code: Alles auswählen

string MailEmpfaenger = "papi@imwunderland.de";
string MailBetreff = "HomeMatic: CUXD-Test";
string MailText;
MailText = "HomeMatic: CUXD-Test";
MailText = MailText # "\r\n";
string teilstr;
string stdout;
string stderr;
string sendmail = "";
string sendbetreff = "";
string mailto = "";
foreach(teilstr, MailBetreff.Split(" "))
{sendbetreff = sendbetreff # "+" # teilstr;}
foreach(teilstr, MailText.Split(" "))
{sendmail = sendmail # "+" # teilstr;}
foreach(teilstr, MailEmpfaenger.Split(" "))
{mailto = mailto # "+" # teilstr;}
system.Exec("/etc/config/addons/email/email 02 ", &stdout, &stderr);
system.Exec("/bin/sh /etc/config/addons/mh/email.sh "# sendbetreff # " " # sendmail # " " # mailto, &stdout, &stderr);
dom.GetObject("CUxD.CUX2801001:1.CMD_EXEC").State("/etc/config/addons/email/email 01");
dom.GetObject("CUxD.CUX2801001:1.CMD_EXEC").State("/bin/sh /etc/config/addons/mh/email.sh "# sendbetreff # " " # sendmail # " " # mailto);
Nachdem ich das Gerät heute wieder angelegt habe, kommt auch wieder die zuvor erwähnte Fehlermeldung:

Code: Alles auswählen

Sep 15 16:49:28 homematic-ccu2 local0.err ReGaHss: Error: IseESP::ExecError= Execution failed: [-1] 0 0x00 [0] 144 0x90 [1] 0 0x00 [2] 114 0x72 [3] 0 0x00 [4] 102 0x66  [../Platform/DOM/iseESPexec.cpp (11622)]
(Ich hatte das CUxD-Gerät über Nacht gelöscht, um zu testen, ob die Meldungen weiterhin kommen)

t_heinrich
Beiträge: 542
Registriert: 24.07.2011, 16:38

Re: SystemExec durch CuxD ersetzen -> vorher / nachher

Beitrag von t_heinrich » 10.11.2014, 22:21

Hallo,

habe mich nun auch mal dran gewagt, allerdings noch nicht mit dem gewünschten Erfolg.
Ich habe eine CCU1 und die letzte CUxD Version 0.67 installiert.

Nach der Beschreibung im ersten Post ein neues Gerät angelegt.
Im Webinterface von CUxD heißt das Gerät "CUX4000001".
Bildschirmfoto 2014-11-10 um 22.18.25.png
Bildschirmfoto 2014-11-10 um 22.18.25.png (20.81 KiB) 4955 mal betrachtet
Nun hatte ich ein altes Programm (welches funktionnierte):

Code: Alles auswählen

string stderr;
string stdout;
system.Exec("sh /usr/local/all_lamps_on.sh", &stdout, &stderr);
Das habe ich ersetzt durch:

Code: Alles auswählen

dom.GetObject("CUX4000001.CMD_EXEC").State("sh /usr/local/all_lamps_on.sh");
Leider funktionniert es nicht.
Was habe ich denn da falsch gemacht?

Gruß Thomas

Xel66
Beiträge: 14165
Registriert: 08.05.2013, 23:33
System: Alternative CCU (auf Basis OCCU)
Wohnort: Nordwürttemberg
Hat sich bedankt: 585 Mal
Danksagung erhalten: 1500 Mal

Re: SystemExec durch CuxD ersetzen -> vorher / nachher

Beitrag von Xel66 » 10.11.2014, 23:43

t_heinrich hat geschrieben: Was habe ich denn da falsch gemacht?
Du hast ein 40er Gerät angelegt und kein Gerät vom Typ "System (28)". Schau noch mal in den ersten Post.

Gruß Xel66
-------------------------------------------------------------------------------------------
524 Kanäle in 146 Geräten und 267 CUxD-Kanäle in 34 CUxD-Geräten:
343 Programme, 334 Systemvariablen und 183 Direktverknüpfungen,
RaspberryMatic Version: 3.65.11.20221005 + Testsystem: CCU2 2.61.7
-------------------------------------------------------------------------------------------
Einsteigerthread, Programmlogik-Thread, WebUI-Handbuch

t_heinrich
Beiträge: 542
Registriert: 24.07.2011, 16:38

Re: SystemExec durch CuxD ersetzen -> vorher / nachher

Beitrag von t_heinrich » 11.11.2014, 00:44

OK, habe ich abgeändert:
Bildschirmfoto 2014-11-11 um 00.39.45.png
Bildschirmfoto 2014-11-11 um 00.39.45.png (13.93 KiB) 4933 mal betrachtet
In meinem Programm steht jetzt:

Code: Alles auswählen

dom.GetObject("CUX2801001.CMD_EXEC").State("sh /usr/local/all_lamps_on.sh");
Das hier habe ich auch ausprobiert:

Code: Alles auswählen

dom.GetObject("CUX2801001:1.CMD_EXEC").State("sh /usr/local/all_lamps_on.sh");
Beides leider ohne Erfolg.

t_heinrich
Beiträge: 542
Registriert: 24.07.2011, 16:38

Re: SystemExec durch CuxD ersetzen -> vorher / nachher

Beitrag von t_heinrich » 11.11.2014, 09:34

Hallo,

habe meinen Fehler gefunden, war wohl zu spät gestern.

Der richtige Aufruf sieht so aus:

Code: Alles auswählen

dom.GetObject("CUxD.CUX2801001:1.CMD_EXEC").State("sh /usr/local/all_lamps_on.sh");

tomtau
Beiträge: 50
Registriert: 20.10.2012, 09:59
Danksagung erhalten: 2 Mal

Re: SystemExec durch CuxD ersetzen -> vorher / nachher

Beitrag von tomtau » 08.12.2014, 17:21

Hallo,

ich versuche mit CuxD (0.68) eine Prowl-Nachricht abzusetzen.
Aber obwohl ich m.E. alles richtig gemacht habe, gelingt es mir nicht :cry:

Hier meine Einstellungen:
Parameter.JPG
Nehme ich SystemExec, bekomme ich eine Nachricht:

Code: Alles auswählen

string stdout;
string stderr;
string url;
url="http://prowl.weks.net/publicapi/add?apikey=XXXXXXXXXXXXXXXXXXXXXXXX&application=Arbeitszimmer-Thermostat&priority=1\&description=Versuch&timeout=10";
Ersetze ich das durch folgenden Code, passiert einfach nichts...

Code: Alles auswählen

string url;
url="http://prowl.weks.net/publicapi/add?apikey=XXXXXXXXXXXXXXXXXXXXXXXX&application=Arbeitszimmer-Thermostat&priority=1\&description=Versuch&timeout=10";
dom.GetObject("CUxD.CUX2800001:1.CMD_EXEC").State("wget -q -O - '"#url#"'");
Woran könnte das liegen???

Viele Grüße!
TomTau

HolgerN.
Beiträge: 47
Registriert: 18.04.2015, 19:54

Re: SystemExec durch CuxD ersetzen -> vorher / nachher

Beitrag von HolgerN. » 25.05.2015, 17:39

Hallo,

ein paar Anfängerfragen, deren Beantwortung sich mir auch durch lesen der CUxD-Doku nicht erschließt:

1) Muss ich alle meine (Homematic-)Geräte neu anlernen, wenn ich CUxD installiere ?

2) Muss ich alle Skripte sofort umstellen oder kann es vorerst über System.exec weiterlaufen (auch als gemischter Betrieb) ?

3) Muss ich zwingend ein CUxD-Gerät anlegen, auch wenn ich erstmal keins brauche (würde sich ggf.aus Frage 1 ergeben...)

Beste Grüße
Holger

edit: Sorry- meine Anfrage ist jetzt im Bereich "Anleitungen - keine Fragen" gelandet...
Zuletzt geändert von HolgerN. am 25.05.2015, 17:43, insgesamt 1-mal geändert.

nicolas-eric
Beiträge: 3302
Registriert: 07.01.2015, 23:26
Wohnort: Scheeßel
Hat sich bedankt: 21 Mal
Danksagung erhalten: 11 Mal

Re: SystemExec durch CuxD ersetzen -> vorher / nachher

Beitrag von nicolas-eric » 25.05.2015, 17:41

1. nein du musst nichts neu anlernen

2. ja du kannst nach und nach umstellen

3. theoretisch geht das, aber wozu CUXD installieren, wenn man das gar nicht nutzt

HolgerN.
Beiträge: 47
Registriert: 18.04.2015, 19:54

Re: SystemExec durch CuxD ersetzen -> vorher / nachher

Beitrag von HolgerN. » 25.05.2015, 17:46

Vielen Dank für die prompte Antwort -
nach meinem bisherigen Verständnis ist CUxD ja auch/grad für die Skript-Programmierung sinnvoll und nicht nur, wenn ich Homematic-"fremde" Geräte einbinden will !?

Gruß
Holger

Antworten

Zurück zu „HomeMatic Tipps & Tricks - keine Fragen!“