seit ca. 4 Jahren arbeitet dieses Skript, es bildet aus 8 gemessenen Helligkeitswerten den Mittelwert und steuert damit die Beschattung an meinem Haus:
----------
Code: Alles auswählen
! gleitender Mittelwert über n Werte
! Programm muss zyklisch per Gerätemodul ausgelöst werden
! Konstante: Anzahl Werte in der Liste
integer n = 8;
! Lokale Variablen
string list; ! Messwertliste
integer len; ! Element-Länge
real s = 0.0; ! Summe
! Werte einlesen und verschieben
list = dom.GetObject("HelligkeitSued_Liste").Value();
len = list.StrValueByIndex(",",0).Length() + 1;
list = list.Substr(len, list.Length() - len);
list = list#","#dom.GetObject("HelligkeitSued:1").DPByHssDP("LUX").Value().ToString(1);
dom.GetObject("HelligkeitSued_Liste").State(list);
string summand;
foreach(summand, list.Split(","))
{s = s + summand.ToFloat();
}
! Mittelwert in Systemvariable schreiben
dom.GetObject("HelligkeitSued_Mittelwert").State(s / n);
Die 8 Werte lieferte ein HM Sen-Li-O als Zeichenkette in eine SV, durch Komma getrennt. Das funktionierte bis letzten Herbst auch einwandfrei. Im Winter hab ich's nicht gebraucht, und jetzt funzt es nicht mehr, es werden jeweils nur noch 2 Lichtwerte gespeichert, die Summe durch 8 geteilt ergibt natürlich den falschen Wert. Der Mittelwert aus 2 Messungen ist auch zu nervös bei vorbeiziehenden Wolken. Ansonsten arbeitet das Ganze wie früher, es fehlt halt nur das komplette Messwertpaket.
An welcher Stelle bringe ich ihm jetzt bei, wieder 8 Messwerte zu speichern?? Es gab da eine Stelle, leider finde ich nicht mehr die Erläuterung des Skriptes, auch im Netz bisher Fehlanzeige.
Bin für jeden Tipp dankbar !!