mediola

SystemExec durch CuxD ersetzen -> vorher / nachher

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

Werbung


SystemExec durch CuxD ersetzen -> vorher / nachher

Beitragvon JPS » 20.04.2013, 19:55

Sambasamba war über meinen Betrag hier http://homematic-forum.de/forum/viewtopic.php?p=76945#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) 32433-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) 32433-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, 14:00, insgesamt 6-mal geändert.
Grund: update
Benutzeravatar
JPS
 
Beiträge: 990
Registriert: 07.08.2010, 21:51

Re: SystemExec durch CuxD ersetzen -> vorher / nachher

Beitragvon uwe111 » 29.04.2013, 22: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: viewtopic.php?f=37&t=9175&start=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 1.12, RFD-Monitor, Vellemann K8055, SSH KeyDir
211 Kanäle in 118 Geräten und 101 CUxD-Kanäle in 47 CUxD-Geräten:
Benutzeravatar
uwe111
 
Beiträge: 3494
Registriert: 26.02.2011, 22:22

Re: SystemExec durch CuxD ersetzen -> vorher / nachher

Beitragvon Goglo » 30.05.2013, 17: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
Goglo
 
Beiträge: 607
Registriert: 14.04.2012, 17:34

Re: SystemExec durch CuxD ersetzen -> vorher / nachher

Beitragvon uwe111 » 30.05.2013, 19: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 1.12, RFD-Monitor, Vellemann K8055, SSH KeyDir
211 Kanäle in 118 Geräten und 101 CUxD-Kanäle in 47 CUxD-Geräten:
Benutzeravatar
uwe111
 
Beiträge: 3494
Registriert: 26.02.2011, 22:22

Re: SystemExec durch CuxD ersetzen -> vorher / nachher

Beitragvon Katte65 » 11.08.2013, 18: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.
Katte65
 
Beiträge: 1
Registriert: 11.08.2013, 18:44

Re: SystemExec durch CuxD ersetzen -> vorher / nachher

Beitragvon Laschat » 29.08.2013, 18: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
Laschat
 
Beiträge: 28
Registriert: 19.08.2011, 17:23

Re: SystemExec durch CuxD ersetzen -> vorher / nachher

Beitragvon JPS » 29.08.2013, 19: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.
SMART WOHNEN by sTeRn AV
Meine Lösungen, um das Leben zuhause "smarter" zu machen.


Verwendung meiner Hinweise und Skripte auf eigenes Risiko | Ich übernehme hierfür keinerlei Gewährleistung bzw. Haftung
Benutzeravatar
JPS
 
Beiträge: 990
Registriert: 07.08.2010, 21:51

Re: SystemExec durch CuxD ersetzen -> vorher / nachher

Beitragvon Laschat » 29.08.2013, 20:20

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

Vielen Dank für den Hinweis
Viele Grüße Peter
Laschat
 
Beiträge: 28
Registriert: 19.08.2011, 17:23

Re: SystemExec durch CuxD ersetzen -> vorher / nachher

Beitragvon JPS » 29.08.2013, 22:43

Laschat hat geschrieben:Du hast offensichtlich recht. Warum wird dann auf
http://www.homematic-inside.de/software/download/item/holidaycalculation
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:
SMART WOHNEN by sTeRn AV
Meine Lösungen, um das Leben zuhause "smarter" zu machen.


Verwendung meiner Hinweise und Skripte auf eigenes Risiko | Ich übernehme hierfür keinerlei Gewährleistung bzw. Haftung
Benutzeravatar
JPS
 
Beiträge: 990
Registriert: 07.08.2010, 21:51

Re: SystemExec durch CuxD ersetzen -> vorher / nachher

Beitragvon rascal » 27.09.2013, 00: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 :(
rascal
 
Beiträge: 778
Registriert: 02.10.2012, 22:30

Nächste

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

Wer ist online?

Mitglieder in diesem Forum: Janniman, Rantanplan und 12 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.