mein erster Eintrag, hoffentlich an der richtigen Stelle! Ich betreibe seit einigen Wochen ein einfaches Setup aus einem Lichtsensor (HM-Sen-LI-O), einem Rollladenaktor (HM-LC-Bl1PBU-FM) und einer CCU2. Nachdem ich die Doku von EQ3, die Tipps für Anfänger und etliche Foreneinträge gelesen habe, scheitere ich doch an einer scheinbar einfachen Aufgabe: Den Mittelwert von einigen Messwerten in eine Systemvariable zu schreiben. Als Ausgangspunkt habe ich ein Programm aus der EQ3-Doku genommen, das aus Messwerten einen Maximalwert ermittelt. Das funktioniert auch. Die Abänderung auf einen Mittelwert scheitert ohne für mich erkennbaren Grund. In der Systemvariablen kommt nichts an.
Die Systemvariable „hell_mittel“ existiert und wurde einmalig mit einem Wert von 99.00 Lux vorbelegt. Erwartet hätte ich, dass bei einem manuellen Aufruft des Skriptes dort der Wert der aktuellen Helligkeit landet und bei der Aktualisierung über einen neuen Messwert, sich ein Wert zwischen dem Messwert und 99 einstellt. Stat dessen bleibt die Variable immer auf 99.00 stehen.
An Zusatztools habe mittlerweile CUxD 1.10a, cuxchart 1.4.5, HQWebUI 2.5.4 und einen scriptparser von anli installiert. Das Programm mit Kommentaren füge ich bei, in der CCU2 habe ich es ohne Kommentare eingegeben. Leider habe ich noch nicht herausgefunden, wie man die separaten Codefenster befüllt….
Danke für Tipps
Code: Alles auswählen
! gewichteter Mittelwert über 6 Werte
real m;
! Mittelwert
real n = 6;
! Anzahl der Mittelwerte
var source = dom.GetObject("$src$");
! Wird das Programm durch eingehende Wetterdaten angestoßen, so ist dessen Quelle ($src$) definiert.
var mittelHell = dom.GetObject("hell_mittel");
! hell_mittel ist eine Systemvariabel
if (source)
! Wenn keine Quelle existiert, liefert der Aufruf von „dom.GetObject($src$)“ „null“.
! Das ist der Fall bei manuellem Aufruf
{
m = dom.GetObject("hell_mittel").Value();
! Mittelwert in die lokale Variable einlesen
m = ((m*(n-1)) + dom.GetObject("Terasse(A4).Helligkeit").DPByHssDP("LUX").Value())/n;
! Berechnung Mittelwert
dom.GetObject("hell_mittel").State(m);
! In Systemvariable schreiben
}
else
! keine Quelle für das Skript
{
var lichtsensor = dom.GetObject("Terasse(A4).Helligkeit");
! Lichtsensor holen
var curHell = lichtsensor.DPByHssDP("LUX");
! Helligkeit ist im Datenpunkt „LUX“, am einzigen Kanal des Lichtsensors.
! Methode DPByHssDP liest den Wert
mittelHell.Variable(curHell.Value());
! mittelHell wird mit aktueller Helligkeit initialisert
}