Man legt dazu zuerst mittels telnet oder ftp auf der CCU das folgende Script in /usr/local/setparam.tcl an:
Code: Alles auswählen
#
# Aufruf für ein putParamset (z.B. via system.Exec)
# =================================================
# von Oliver Wagner <owagner@vapor.com>
#
# tclsh setparam <addresse> <item> <datentyp> <wert>
# z.B.
# tclsh setparam GEQ004711:2 MODE_TEMPERATUR_REGULATOR int 1
#
# Diese Version ist fuer Funk. Fuer Wired muss unten der Port von 2001 auf 2000 geaendert werden.
#
load tclrpc.so
set item [lindex $argv 1]
set datatype [lindex $argv 2]
set val [lindex $argv 3]
set cmd "{$item {$datatype $val}}"
xmlrpc http://127.0.0.1:2001/ putParamset [list string [lindex $argv 0]] [list string "MASTER"] [list struct $cmd]
Code: Alles auswählen
var addr=dom.GetObject("Thermostat Kueche 1").Address();
var stdout;
var stderr;
system.Exec("tclsh /usr/local/setparam.tcl "+addr+" MODE_TEMPERATUR_REGULATOR int 1",&stdout,&stderr);
Ich habe die Dinger bei mir z.B. so benannt:
Hauptgerät "Thermostat <Raum>"
Erstes Untergerät (Thermometer/Feuchtemesser) "Thermostat <Raum> 0"
Zweites Untergerät (der eigentliche Regler) "Thermostat <Raum> 1"
Drittes Untergerät (der Empfänger für die TFKs) "Thermostat <Raum> 2"
Hier wird also mit "Thermostat Kueche 1" gleich das richtige Untergerät angesprochen. Alternativversion von sambasamba:
Code: Alles auswählen
var addr=dom.GetObject("Thermostat Kueche").Address();
var stdout;
var stderr;
system.Exec("tclsh /usr/local/setparam.tcl "+addr+":2 MODE_TEMPERATUR_REGULATOR int 1",&stdout,&stderr);
Name ist. Nennt man z.B. sowohl das Hauptgerät als auch das erste Untergerät "Thermostat Kueche", dann liefert dom.GetObject("Thermostat Kueche") das erste Untergerät ":1" und man versucht "GEQ4711815:1:2" anzusprechen, was schiefgeht...
Viele Grüße,
Olli
erste Revision: Hinweis auf Untergerät/:2 hinzugefügt (danke sambasamba)