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":
Das Gerät taucht 'ganz normal' im Posteingang auf und muss nicht weiter konfiguriert werden:
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);
Code: Alles auswählen
dom.GetObject("CUxD.CUX2801001:1.CMD_EXEC").State("/etc/config/addons/email/email 01");
streiche:
Code: Alles auswählen
string stdout;
string stderr;
system.Exec ("/bin/sh /etc/config/addons/mh/email.sh "# sendbetreff # " " # sendmail # " " # mailto, &stdout, &stderr);
Code: Alles auswählen
dom.GetObject("CUxD.CUX2801001:1.CMD_EXEC").State("/bin/sh /etc/config/addons/mh/email.sh "# sendbetreff # " " # sendmail # " " # mailto);
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);
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");
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);
}
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);
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);
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");
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);
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!'");
</edit sambasamba>
Der Thread darf gerne um weitere vorher/nachher-Beispiele ergänzt werden
