SystemExec durch CuxD ersetzen -> vorher / nachher

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

Moderator: Co-Administratoren

Tank
Beiträge: 60
Registriert: 20.11.2011, 12:08

Re: SystemExec durch CuxD ersetzen -> vorher / nachher

Beitrag von Tank » 01.08.2014, 11:56

Hi Alchy,
Das Shell Script getheizungsdata.sh liefert eine komma-separierte Liste mit Werten der Heizung zurück. z.B. 19.7,22.2,21.9,37.5,44.0,46.5

Das HM Script verarbeitet diese dann weiter:

Code: Alles auswählen

var temp;
var Temperaturen;
var err;
temp = system.Exec ( "/etc/config/getheizungsdata.sh", &Temperaturen, &err);

dom.GetObject("Heizung_Aussentemperatur").State(Temperaturen.StrValueByIndex(",",0));
dom.GetObject("Heizung_Ruecklaufsolltemperatur").State(Temperaturen.StrValueByIndex(",",1));
dom.GetObject("Heizung_Ruecklauftemperatur").State(Temperaturen.StrValueByIndex(",",2));
dom.GetObject("Heizung_Vorlauftemperatur").State(Temperaturen.StrValueByIndex(",",3));
dom.GetObject("Heizung_WarmwasserSolltemp").State(Temperaturen.StrValueByIndex(",",4));
dom.GetObject("Heizung_Warmwassertemp").State(Temperaturen.StrValueByIndex(",",5));

paul53
Beiträge: 2554
Registriert: 26.04.2012, 20:42
Wohnort: Berlin
Danksagung erhalten: 15 Mal

Re: SystemExec durch CuxD ersetzen -> vorher / nachher

Beitrag von paul53 » 01.08.2014, 12:05

CMD_RETS liefert den Inhalt von stdout zurück.

Code: Alles auswählen

string cmd = "/etc/config/getheizungsdata.sh";
dom.GetObject("CUxD.CUX2801001:1.CMD_SETS").State(cmd);
dom.GetObject("CUxD.CUX2801001:1.CMD_QUERY_RET").State(1);
string Temperaturen = dom.GetObject("CUxD.CUX2801001:1.CMD_RETS").State();
Zuletzt geändert von paul53 am 01.08.2014, 12:20, insgesamt 1-mal geändert.
Versionen: HM-CC-TC 2.1, HM-LC-Sw1 1.9, HM-CC-RT-DN 1.1, HM-MOD-RPI-PCB 1.2.1 (keine CCU)

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 » 01.08.2014, 12:08

^^ und schon erledigt. :D
Bin ich heute wieder lahm :oops:

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.

Tank
Beiträge: 60
Registriert: 20.11.2011, 12:08

Re: SystemExec durch CuxD ersetzen -> vorher / nachher

Beitrag von Tank » 01.08.2014, 12:17

Paul53, Alchy, IHR SEID DIE GRÖSSTEN! Klappt. Freibier für Alle!
Danke für die schnelle Hilfe!

Monck
Beiträge: 170
Registriert: 13.03.2011, 22:07
Danksagung erhalten: 1 Mal

Re: SystemExec durch CuxD ersetzen -> vorher / nachher

Beitrag von Monck » 06.08.2014, 01:19

Hello,

ich habe heute ebenfalls die Umstellung von SystemExec auf CuxD bzgl. Mailversand durchgeführt.
Eigentlich läuft alles zur vollsten Zufriedenheit wenn nicht laufend die folgende Fehlermeldung im Syslog stehen würde:

homematic-ccu2 local0.err ReGaHss: Error: IseESP::ExecError= Execution failed: [-1] 0 0x00 [0] 144 0x90 [1] 0 0x00 [2] 5 0x05 [3] 0 0x00 [4] 16 0x10 [../Platform/DOM/iseESPexec.cpp (11622)]

homematic-ccu2 user.err email: msmtp: no recipients found

Weiß jemand was zu tun ist, ich verwende das Mail-Addon 1.5.1

Danke & LG Andy

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 » 14.09.2014, 10:18

Jo, die gleiche Meldung habe ich auch, obwohl ich wieder auf System.Exec probehalber zurückgegangen bin:

Sep 14 10:16:28 homematic-ccu2 local0.err ReGaHss: Error: IseESP::ExecError= Execution failed: [-1] 0 0x00 [0] 144 0x90 [1] 0 0x00 [2] 159 0x9f [3] 0 0x00 [4] 0 0x00 [../Platform/DOM/iseESPexec.cpp (11622)]

Und bei folgendem Script passiert auch nichts:

string MailEmpfaenger = "mich@selbst.de";
string MailBetreff = "HomeMatic: CUXD-Test";
string MailText;
MailText = "HomeMatic: CUXD-Test";
MailText = MailText # "\r\n";
string teilstr;
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;}
dom.GetObject("CUxD.CUX2801001:1.CMD_EXEC").State("/bin/sh /etc/config/addons/mh/email.sh "# sendbetreff # " " # sendmail # " " # mailto);

Was habe ich falsch gemacht?

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, 15:34

Bist du denn auch Kunde bei meine Homematic . de ?
Das Script, welches du ^^ gepostet hast greift nämlich nicht auf das emailaddon zu.


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 » 14.09.2014, 19:36

:-)

Zumindest klappt es mit:

string stdout;
string stderr;
...
system.Exec ("/bin/sh /etc/config/addons/mh/email.sh "# sendbetreff # " " # sendmail # " " # mailto, &stdout, &stderr);


und bei nachfolgendem Skript bekomme ich nur eine Mail:

string MailEmpfaenger = "schonwieder@anmich.de";
string MailBetreff = "HomeMatic: CUXD-Test";
string MailText;
MailText = "HomeMatic: CUXD-Test";
MailText = MailText # "\r\n";
string stdout;
string stderr;
string teilstr;
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;}
dom.GetObject("CUxD.CUX2801001:1.CMD_EXEC").State("/bin/sh /etc/config/addons/mh/email.sh "# sendbetreff # " " # sendmail # " " # mailto);
system.Exec ("/bin/sh /etc/config/addons/mh/email.sh "# sendbetreff # " " # sendmail # " " # mailto, &stdout, &stderr);

Das ich das CUXD-Gerät umbenannt habe, ich doch vermutlich egal, weil der Befehl nur mit dessen Adresse arbeitet oder?

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, 21:11

Wäre es Dir möglich Code Tags zu benutzen?
und bitte die Scripte per copy paste einfügen. Natürlich kannst Du die für dich sensiblen Angaben ändern.

Wenn:
Das ich das CUXD-Gerät umbenannt habe, ich doch vermutlich egal, weil der Befehl nur mit dessen Adresse arbeitet oder?
bedeuten soll, daß dein CUxD exec nicht CUX2801001 heisst, dann wäre dein Script so natürlich falsch.

Ich bin jedenfalls raus bei meinehomematic.


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 » 14.09.2014, 21:36

Meinst Du so:

Code: Alles auswählen

string MailEmpfaenger = "immer@andenselben.de";
string MailBetreff = "HomeMatic: CUXD-Test";
string MailText;
MailText = "HomeMatic: CUXD-Test";
MailText = MailText # "\r\n";
string stdout;
string stderr;
string teilstr;
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 ("/bin/sh /etc/config/addons/mh/email.sh "# sendbetreff # " " # sendmail # " " # mailto, &stdout, &stderr);
dom.GetObject("CUxD.CUX2801001:1.CMD_EXEC").State("/bin/sh /etc/config/addons/mh/email.sh "# sendbetreff # " " # sendmail # " " # mailto);
?
Jou, kann ich! :-)

Muss der Name CUX2801001 so als tatsächlicher Gerätename in der CCU eingetragen sein?
Ich habe ihn in ZZZCUX2801001 umbenannt, damit er erst unten in der Geräteliste nervt.
Im Skript habe ich dann aber auch probehalber mal einen Aufruf mit CUxD.ZZZCUX2801001:1 versucht, ohne Erfolg.

Antworten

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