Code: Alles auswählen
! gleitender Mittelwert über 6 Werte
! Programm muß zyklisch per Zeitmodul ausgelöst werden
! Raumname ist Bestandteil des Kanalnamens (Raum.Sensor)
! und des Namens der Systemvariablen (Raum.T1...T6 Raum.T_Mittel)
string raum = "Aussen";
! Lokale Variablen
real x; ! Meßwert
real m; ! Mittelwert
real s = 0.0; ! Summe
! Werte einlesen und verschieben
x = dom.GetObject(raum+".T2").Value();
dom.GetObject(raum+".T1").State(x);
s = x + s;
x = dom.GetObject(raum+".T3").Value();
dom.GetObject(raum+".T2").State(x);
s = x + s;
x = dom.GetObject(raum+".T4").Value();
dom.GetObject(raum+".T3").State(x);
s = x + s;
x = dom.GetObject(raum+".T5").Value();
dom.GetObject(raum+".T4").State(x);
s = x + s;
x = dom.GetObject(raum+".T6").Value();
dom.GetObject(raum+".T5").State(x);
s = x + s;
x = dom.GetObject(raum+".Sensor").DPByHssDP("TEMPERATURE").Value();
dom.GetObject(raum+".T6").State(x);
s = x + s;
! Berechnung Mittelwert
m = s / 6;
! In Systemvariable schreiben
dom.GetObject(raum+".T_Mittel").State(m);
Die Mittelwertbildung ist sinnvoll, wenn bei bestimmten Aktionen oder Berechnungen das Wärmebeharrungsvermögen des Raumes oder der Wand berücksichtigt werden sollte.
Ein Beispiel ist die Berechnung der Oberflächentemperatur einer Außenwandecke (siehe http://homematic-forum.de/forum/viewtop ... 835#p71539). Die Zeit, über die die Mittelwertbildung erfolgen sollte, hängt stark von der Wandkonstruktion ab (von 6 h bei einer dünnen Leichtbauwand bis zu 48 h bei einer sehr dicken, schweren Vollziegel-, Kalksandstein-Wand).