habe kürzlich mit Homematic angefangen und wollte mich jetzt in das Scripting einarbeiten. Jede Sprache hat ja so Ihre Eigenheiten, und da bin ich jetzt auf ein Problem gestoßen, wo ich nicht weiterkomme und auch keine Infos dazu gefunden habe.
Ich wollte das Beispielscript aus der Doku zum Setzen der Maximaltemperatur in einer Systemvariable ausprobieren. Das habe ich gleich etwas ausgebaut auf Min/Max Temperatur meines Außensensors. Dazu habe ich zwei Variablen definiert:
Code: Alles auswählen
max_outside
Maximale Außentemperatur
Zahl
Minimalwert: -40
Maximalwert: 100
°C
Thermostat Außen
Code: Alles auswählen
min_outside
Minimale Außentemperatur
Zahl
Minimalwert: -40
Maximalwert: 100
°C
Thermostat Außen
Code: Alles auswählen
var source = dom.GetObject("$src$");
var maxTemp = dom.GetObject("max_outside");
var minTemp = dom.GetObject("min_outside");
if (source && minTemp && maxTemp)
{
!--- Debug ---!
string stderr;
string stdout;
system.Exec("logger -t script -p user.debug _source.Value()_: " + source.Value() + ", " + minTemp.Variable() + ", " + maxTemp.Variable(), &stdout, &stderr);
!--- Debug ---!
! Nach Neustart der CCU steht der minimale Wert in min- und maxTemp, also -40 -> Dann und auch wenn aktueller
! Wert kleiner / größer, auf den aktuellen Wert setzen:
if (minTemp.Variable() == -40 || source.Value() < minTemp.Variable())
{
minTemp.Variable(source.Value());
}
if (maxTemp.Variable() == -40 || source.Value() > maxTemp.Variable())
{
maxTemp.Variable(source.Value());
}
}
system.Exec("logger -t script -p user.debug _source.Value()_: " + minTemp.Variable() + ", " + source.Value() + ", " +maxTemp.Variable(), &stdout, &stderr);
Dann wird gar nix mehr geloggt. Deswegen kommt es mir so vor, als ob das Scripting an der Stelle abbricht. Laut GUI hat die minTemp und maxTemp auch den Wert -40, also nicht undefiniert, dann hätte ich das Verhalten noch erwarten können.
Irgendwas muss ich übersehen haben... kann mir jemand helfen?
Danke,
Frank.