SystemExec durch CuxD ersetzen -> vorher / nachher

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

Moderator: Co-Administratoren

Benutzeravatar
JPS
Beiträge: 1093
Registriert: 07.08.2010, 22:51
System: Alternative CCU (auf Basis OCCU)
Hat sich bedankt: 8 Mal
Danksagung erhalten: 20 Mal
Kontaktdaten:

SystemExec durch CuxD ersetzen -> vorher / nachher

Beitrag von JPS » 20.04.2013, 20:55

Sambasamba war über meinen Betrag hier http://homematic-forum.de/forum/viewtop ... 945#p76945 gestolpert und hat per PN angeregt, diese Vorgehensweise (streiche / setze bzw. vorher /nachher) bei den T&T aufzunehmen, gerne doch...

Schritt 1: CUxD (am besten im abgesicherten Modus) installieren, wie im Handbuch ab Seite 7 beschrieben. Den 2. Neustart nicht vergessen.

Schritt 2: Im CUxD unter "Geräte" ein neues "Gerät" vom Typ "(28) System" mit der Funktion "Exec" erzeugen, wie im Handbuch ab Seite 14 beschrieben (Name leer lassen und Icon übernehmen). Auf "Gerät auf CCU erzeugen !" klicken, dann erhältst du ein neues Gerät in der CCU: "CUxD.CUX2801001:1":
Cux Exec.jpg
Cux Exec.jpg (13.14 KiB) 56990 mal betrachtet
Das Gerät taucht 'ganz normal' im Posteingang auf und muss nicht weiter konfiguriert werden:
Cux CCU.gif
Cux CCU.gif (14.7 KiB) 56990 mal betrachtet
update sambasamba 8.6.13: siehe 4 posts weiter unten wg. der erforderlichen Neustarts!


Schritt 3: System.Exec wie folgt ersetzen (siehe auch CuxD-Handbuch (vor 0.573) ab Seite 82 bzw. im derzeit aktuellen Handbuch der Version 0.573 ab Seite 97):

Beispiel "Mail über AddOn":

streiche:

Code: Alles auswählen

string stdout;
string stderr;
system.Exec("/etc/config/addons/email/email 01 ", &stdout, &stderr);
setze:

Code: Alles auswählen

dom.GetObject("CUxD.CUX2801001:1.CMD_EXEC").State("/etc/config/addons/email/email 01");
Beispiel "Mail über meine-homatic.de":

streiche:

Code: Alles auswählen

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

Code: Alles auswählen

dom.GetObject("CUxD.CUX2801001:1.CMD_EXEC").State("/bin/sh /etc/config/addons/mh/email.sh "# sendbetreff # " " # sendmail # " " # mailto);
Beispiel "Pushnachricht über Pushover":

streiche:

Code: Alles auswählen

string stdout;
string stderr;
tring nachricht = "Hallo Welt";
system.Exec ("curl -s -d token=EIGENER_TOKEN -d user=EIGENER_USER -d message='"#nachricht#"' -d sound=bike http://api.pushover.net/1/messages.json", &stdout, &stderr);
setze:

Code: Alles auswählen

string nachricht = "Hallo Welt";
dom.GetObject("CUxD.CUX2801001:1.CMD_EXEC").State("curl -s -d token=EIGENER_TOKEN -d user=EIGENER_USER -d message='"#nachricht#"' -d sound=bike http://api.pushover.net/1/messages.json");
Beispiel "Heizungsthermostatscript":

streiche:

Code: Alles auswählen

            if (debug) {
                string stdout;
                string stderr;
                system.Exec("logger -t script -p user.debug Raumthermostat " # raum # " neu gesetzt!\n", &stdout, &stderr);
                system.Exec("logger -t script -p user.debug alte_Solltemperatur: " # soll_ist # " neue_Solltemperatur: " # soll_neu # "\n", &stdout, &stderr);
                system.Exec("logger -t script -p user.debug Letzte_Aenderung: " # rt_timestamp # " Zeitdifferenz:_" # diff # "sek.", &stdout, &stderr);
            }
        }  
    }
} else {
    string stdout;
    string stderr;
    system.Exec("logger -t script -p user.debug Raumthermostat " # raum # " antwortet nicht!", &stdout, &stderr);
}
setze:

Code: Alles auswählen

            if (debug) {
                dom.GetObject("CUxD.CUX2801001:1.CMD_EXEC").State("logger -t script -p user.debug Raumthermostat " # raum # " neu gesetzt!\n");
                dom.GetObject("CUxD.CUX2801001:1.CMD_EXEC").State("logger -t script -p user.debug alte_Solltemperatur: " # soll_ist # " neue_Solltemperatur: " # soll_neu # "\n");
                dom.GetObject("CUxD.CUX2801001:1.CMD_EXEC").State("logger -t script -p user.debug Letzte_Aenderung: " # rt_timestamp # " Zeitdifferenz:_" # diff # "sek.");
            }
        }  
    }
} else {
    dom.GetObject("CUxD.CUX2801001:1.CMD_EXEC").State("logger -t script -p user.debug Raumthermostat " # raum # " antwortet nicht!"); 
}
---
< edit Sambasamba>:

Beispiel: Aufruf des wake-on LAN scripts
streiche:

Code: Alles auswählen

string stderr;
string stdout;
string wake;
wake = "/usr/local/addons/WOL/ether-wake -b 00:19:99:90:07:68";
system.Exec (wake, &stdout, &stderr);
setze:

Code: Alles auswählen

string wake;
wake = "/usr/local/addons/WOL/ether-wake -b 00:19:99:90:07:68";
dom.GetObject("CUxD.CUX2801001:1.CMD_EXEC").State(wake);

Beispiel: "Betriebsart Wandthermostat umschalten" (viewtopic.php?f=31&t=5621)

streiche:

Code: Alles auswählen

var stdout;
var stderr;
var addr=dom.GetObject("Buero.Raumthermostat").Address();
system.Exec("tclsh /usr/local/setparam.tcl "+addr+":2 MODE_TEMPERATUR_REGULATOR int 2",&stdout,&stderr);
setze:

Code: Alles auswählen

var addr=dom.GetObject("Buero.Raumthermostat").Address();
dom.GetObject("CUxD.CUX2801001:1.CMD_EXEC").State("tclsh /usr/local/setparam.tcl "+addr+":2 MODE_TEMPERATUR_REGULATOR int 2");
Beispiel: Briefkastenklappe von art-audio
Die Lösung war etwas tricky wegen der unterschiedlichen Gänsebeinchen (und ist nicht auf meinem Mist gewachsen).

streiche:

Code: Alles auswählen

string stdout;
string stderr;
system.Exec("wget -q -O /dev/null 'http://prowl.weks.net/publicapi/add?apikey=HIER STAND MEIN API &application=Briefkastenklappe:&priority=1\&description=Post%20ist%20da!'", &stdout, &stderr);
setze:

Code: Alles auswählen

dom.GetObject("CUxD.CUX2801001:1.CMD_EXEC").State("wget -q -O /dev/null 'http://prowl.weks.net/publicapi/add?apikey=HIER STAND MEIN API&application=Briefkastenklappe:&priority=1&description=Post%20ist%20da!'");
Das Prinzip ist immer das gleiche: den 1. (alten) Parameter an den Aufruf des CuxD übergeben, stdout, stderr weglassen.


</edit sambasamba>

Der Thread darf gerne um weitere vorher/nachher-Beispiele ergänzt werden :wink:
Zuletzt geändert von sambasamba am 09.06.2013, 15:00, insgesamt 6-mal geändert.
Grund: update

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

Re: SystemExec durch CuxD ersetzen -> vorher / nachher

Beitrag von uwe111 » 29.04.2013, 23:18

joni-blue hat geschrieben:kann ich von diesem aufruf jetzt auch mehrere auf einmal in ein script packen?
Ja,natürlich. Guckst Du hier: http://homematic-forum.de/forum/viewtop ... =56#p97052
Da habe ich zum Beispiel 8 verschiedene Aufrufe hintereinander gestartet. Diese laufen dann parallel.

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

Goglo
Beiträge: 610
Registriert: 14.04.2012, 18:34
Danksagung erhalten: 1 Mal

Re: SystemExec durch CuxD ersetzen -> vorher / nachher

Beitrag von Goglo » 30.05.2013, 18:34

JPS hat geschrieben: update sambasamba 1.5.13: anscheinend muß man JETZT erst den 2. Neustart machen. Uwe guckt danach...
Da ich's eben ausprobiert habe: Ja, nachdem man das System.Exec-Gerät erzeugt hat, braucht's einen reboot.
83 Kanäle in 50 Geräten:
3x HM-LC-Sw1-Pl, 1x HM-WDS10-TH-O, 5x HM-PB-4-WM, 3x HM-PB-2-WM, 3x HM-LC-Dim1T-FM, 2x HM-Sec-SC, 4x HM-Sec-RHS, 5x HM-CC-VD, 4x HM-CC-TC, 5x HM-LC-Sw1-FM, 2x HM-Sec-MDIR, 1x HM-WDS30-T-O, 1x HM-LC-Sw1-Pl-2, 2x HM-PB-2-WM55, 1x HM-LC-Dim1L-CV, 1x HM-CCU-1, 1x HM-PBI-4-FM, 1x HM-LC-Dim1L-Pl-2, 1x HM-LC-Dim1T-CV, 1x HM-LC-Dim1L-Pl, 1x HM-LC-Sw2-FM, 1x HM-LC-Sw1-SM, 1x HM-Sec-WDS

82 Kanäle in 43 Geräten:
1x HM-PB-2-WM, 2x HM-LC-Bl1-FM, 3x HM-LC-Bl1PBU-FM, 3x HM-PB-2-WM55, 2x HM-PB-4-WM, 9x HM-CC-VD, 8x HM-CC-TC, 2x HM-LC-Sw2-FM, 1x HM-WDS10-TH-O, 1x HM-CCU-1, 1x HM-Sen-MDIR-O, 4x HM-LC-Sw1-FM, 2x HM-SwI-3-FM, 1x HM-LC-Sw4-SM, 1x HM-LC-Sw1-Pl-2, 1x HM-PBI-4-FM, 1x HM-WDS30-T-O

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

Re: SystemExec durch CuxD ersetzen -> vorher / nachher

Beitrag von uwe111 » 30.05.2013, 20:10

So geht's... ich schreibe das auch in die Doku.

Wenn man den CUxD zum ersten Mal installiert, dann geht das so:
  1. CUxD installieren (automatischer reboot)
  2. CUxD Gerät(e) anlegen
  3. CCU reboot (manuell)
  4. jetzt sollte der CUxD richtig funktionieren. :)
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

Katte65
Beiträge: 1
Registriert: 11.08.2013, 19:44

Re: SystemExec durch CuxD ersetzen -> vorher / nachher

Beitrag von Katte65 » 11.08.2013, 19:56

Hallo, ich bin echt am verzweifeln!

Ich habe wie üblich im CUxD Webinterface über CUxD Gerätetyp: System die Funktion Exec als Geraet (CUX2801001) erstellt.
Ansonsten habe ich keine weiteren CUxD GEräte eingerichtet, da ich hiermit mein momentanes Problem mit Abstürzen der CCU bei Exec aufrufen lösen wollte.

Code: Alles auswählen

var Color = 1;
var Light = 0;
string url = "http://192.168.1.34/www/artnet_V3.php?index=" # Color # "&light=" # Light; 
string p = "wget -q -O /dev/null '"#url#"'"; 
WriteLine(p);
dom.GetObject("CUX2801001:1.CMD_EXEC").State(p); 
WriteLine("OK");
leider passiert hier gar nichts :(

Code: Alles auswählen

var x = dom.GetObject("CUX2801001:1.CMD_EXEC"); 
WriteLine(x);
gibt mir auch nur "Null" aus.

Über jeden Idee wäre ich sehr dankbar.

Laschat
Beiträge: 28
Registriert: 19.08.2011, 18:23

Re: SystemExec durch CuxD ersetzen -> vorher / nachher

Beitrag von Laschat » 29.08.2013, 19:48

Hallo.
könnte bitte jemand auch den SystemExec und CuxD-Code für das Feiertagsscript von Petrus einstellen?
Ich habe schon alles probiert, mit und ohne Parameter, doch ich bekomme immer eine Fehlermeldung.
Sind zum Aufruf die beiden Parameter notwendig?

dom.GetObject("CUxD.CUX2801001:1.CMD_EXEC").State("tclsh /usr/local/Feiertag/Feiertage.tcl Feiertag_heute Feiertag_morgen");

Vielen Dank
Viele Grüße Peter

Benutzeravatar
JPS
Beiträge: 1093
Registriert: 07.08.2010, 22:51
System: Alternative CCU (auf Basis OCCU)
Hat sich bedankt: 8 Mal
Danksagung erhalten: 20 Mal
Kontaktdaten:

Re: SystemExec durch CuxD ersetzen -> vorher / nachher

Beitrag von JPS » 29.08.2013, 20:34

Laschat hat geschrieben:Hallo.
könnte bitte jemand auch den SystemExec und CuxD-Code für das Feiertagsscript von Petrus einstellen?
Ich habe schon alles probiert, mit und ohne Parameter, doch ich bekomme immer eine Fehlermeldung.
Sind zum Aufruf die beiden Parameter notwendig?

dom.GetObject("CUxD.CUX2801001:1.CMD_EXEC").State("tclsh /usr/local/Feiertag/Feiertage.tcl Feiertag_heute Feiertag_morgen");

Vielen Dank
Ich nutze hier das Feiertagsskript in der Version 1.4.1 (ohne Feiertag morgen). Das ist ein WebUI-Skript, und wird über das Zeitmodul einmal in der Nacht getriggert. Dazu brauchts du weder den SystemExec- noch den CUxD CMD_EXEC-Aufruf. So wie ich das sehe, funktioniert das in der Version 2.2.1r2 genauso.
Verwendung meiner Hinweise und Skripte auf eigenes Risiko | Ich übernehme hierfür keinerlei Gewährleistung bzw. Haftung

Laschat
Beiträge: 28
Registriert: 19.08.2011, 18:23

Re: SystemExec durch CuxD ersetzen -> vorher / nachher

Beitrag von Laschat » 29.08.2013, 21:20

Du hast offensichtlich recht. Warum wird dann auf
http://www.homematic-inside.de/software ... alculation
das Script als feiertage.tcl zum download angeboten?

Vielen Dank für den Hinweis
Viele Grüße Peter

Benutzeravatar
JPS
Beiträge: 1093
Registriert: 07.08.2010, 22:51
System: Alternative CCU (auf Basis OCCU)
Hat sich bedankt: 8 Mal
Danksagung erhalten: 20 Mal
Kontaktdaten:

Re: SystemExec durch CuxD ersetzen -> vorher / nachher

Beitrag von JPS » 29.08.2013, 23:43

Laschat hat geschrieben:Du hast offensichtlich recht. Warum wird dann auf
http://www.homematic-inside.de/software ... alculation
das Script als feiertage.tcl zum download angeboten?

Vielen Dank für den Hinweis
Ich nehme an, der Autor hat es so genannt, damit sein Lieblingseditor gleich seine Lieblingsschablone zur Anzeige lädt. :wink:
Verwendung meiner Hinweise und Skripte auf eigenes Risiko | Ich übernehme hierfür keinerlei Gewährleistung bzw. Haftung

rascal
Beiträge: 817
Registriert: 02.10.2012, 23:30

Re: SystemExec durch CuxD ersetzen -> vorher / nachher

Beitrag von rascal » 27.09.2013, 01:30

Danke für die tolle Anleitung,
kannst du auch erklären was im TCL stehen muss?
Irgendwie bekomme ich im mail immer nur "NULL" für die Variablen :(

Antworten

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