Skript "Mittelwert Helligkeit" funzt nicht mehr

Einrichtung, Anschluss und Programmierung der HomeMatic CCU

Moderator: Co-Administratoren

Antworten
kbn66
Beiträge: 126
Registriert: 03.05.2017, 10:52
System: CCU
Wohnort: unteres Mittelrheintal
Hat sich bedankt: 31 Mal
Danksagung erhalten: 2 Mal

Skript "Mittelwert Helligkeit" funzt nicht mehr

Beitrag von kbn66 » 14.03.2022, 09:29

Hallo zusammen,
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 !!
Zuletzt geändert von alchy am 14.03.2022, 19:12, insgesamt 1-mal geändert.
Grund: Code in Codetags posten
Gruß - Ernst
--------------------
CCU3 neueste FW, 10 UP-Taster f Licht (teilw. IP), 8 Jalousietaster, 3 Taster mit Bewegungsmelder, 6 Schaltsteckdosen (teilw. IP) mit/ohne Energiemessung, Wetter Kombisensor, Display-FB, 6-fach Wandsender, Statusdisplay mit Taster, 12 IP-Fensterkontakte, IP-Bewegungsmelder außen, FBH über IP-FAL230 mit WTH-2

MichaelN
Beiträge: 9686
Registriert: 27.04.2020, 10:34
System: CCU
Hat sich bedankt: 700 Mal
Danksagung erhalten: 1627 Mal

Re: Skript "Mittelwert Helligkeit" funzt nicht mehr

Beitrag von MichaelN » 14.03.2022, 09:50

Code bitte in Code-Tags posten. Danke!
Was steht denn im Fehlerprotokoll?

Funktionierende Lösungenen siehe viewtopic.php?f=43&t=10182&start=50#p590894
Wobei ich den gleitenden Mittelwert bevorzugen würde, da er keine umständlichen Listen speichern und bearbeiten muss.

Btw: Das da sieht komisch aus

Code: Alles auswählen

dom.GetObject("HelligkeitSued_Mittelwert").State(s / n);
Was macht das /n da? Ich würde das mindestens nochmal in Klammern setzen:

Code: Alles auswählen

dom.GetObject("HelligkeitSued_Mittelwert").State((s/n) );
LG, Michael.

Wenn du eine App zur Bedienung brauchst, dann hast du kein Smarthome.

Wettervorhersage über AccuWeather oder OpenWeatherMap+++ Rollladensteuerung 2.0 +++ JSON-API-Ausgaben auswerten +++ undokumentierte Skript-Befehle und Debugging-Tipps +++

kbn66
Beiträge: 126
Registriert: 03.05.2017, 10:52
System: CCU
Wohnort: unteres Mittelrheintal
Hat sich bedankt: 31 Mal
Danksagung erhalten: 2 Mal

Re: Skript "Mittelwert Helligkeit" funzt nicht mehr

Beitrag von kbn66 » 14.03.2022, 15:18

Hallo Michael,
habe mal dein Skript für den geglätteten Mittelwert angepasst und getestet, leider bei mir kein Erfolg, woran kann's liegen?

Code: Alles auswählen

object averageObject = dom.GetObject("Helligkeit.Mittel");
real current = dom.GetObject("BidCos-RF.NEQ1358079:1.ILLUMINATION").Value();
real n = 5.0;
real average = (averageObject.Value() * (n - 1) / n) + (current / n);
averageObject.State(average);

WriteLine(average); ! Hier könnte eine Meldung via Messenger stehen
Die SV "Helligkeit.Mittel" ist eingerichtet, als Zahl < 200000 Lux, ergibt aber auch nach mehrfachem Programmstart keinen Wert.

Im Gegensatz zu deinem Entwurf handelt es sich hier um ein Hm-Gerät, kein HmiP, kann das die Ursache sein?
Gruß - Ernst
--------------------
CCU3 neueste FW, 10 UP-Taster f Licht (teilw. IP), 8 Jalousietaster, 3 Taster mit Bewegungsmelder, 6 Schaltsteckdosen (teilw. IP) mit/ohne Energiemessung, Wetter Kombisensor, Display-FB, 6-fach Wandsender, Statusdisplay mit Taster, 12 IP-Fensterkontakte, IP-Bewegungsmelder außen, FBH über IP-FAL230 mit WTH-2

MichaelN
Beiträge: 9686
Registriert: 27.04.2020, 10:34
System: CCU
Hat sich bedankt: 700 Mal
Danksagung erhalten: 1627 Mal

Re: Skript "Mittelwert Helligkeit" funzt nicht mehr

Beitrag von MichaelN » 14.03.2022, 15:38

In deinem Programm hieß der Datenpunkt noch LUX statt ILLUMINATION. Vieleicht mal überprüfen, wie er wirklich heisst.

Und was steht nun im Fehlerprotokoll?
LG, Michael.

Wenn du eine App zur Bedienung brauchst, dann hast du kein Smarthome.

Wettervorhersage über AccuWeather oder OpenWeatherMap+++ Rollladensteuerung 2.0 +++ JSON-API-Ausgaben auswerten +++ undokumentierte Skript-Befehle und Debugging-Tipps +++

kbn66
Beiträge: 126
Registriert: 03.05.2017, 10:52
System: CCU
Wohnort: unteres Mittelrheintal
Hat sich bedankt: 31 Mal
Danksagung erhalten: 2 Mal

Re: Skript "Mittelwert Helligkeit" funzt nicht mehr

Beitrag von kbn66 » 14.03.2022, 16:26

Michael, Vielen Dank !!

.. kaum macht man's richtig, schon funktioniert's !!
Gruß - Ernst
--------------------
CCU3 neueste FW, 10 UP-Taster f Licht (teilw. IP), 8 Jalousietaster, 3 Taster mit Bewegungsmelder, 6 Schaltsteckdosen (teilw. IP) mit/ohne Energiemessung, Wetter Kombisensor, Display-FB, 6-fach Wandsender, Statusdisplay mit Taster, 12 IP-Fensterkontakte, IP-Bewegungsmelder außen, FBH über IP-FAL230 mit WTH-2

Antworten

Zurück zu „HomeMatic Zentrale (CCU / CCU2 / CCU3 / Charly)“