powerValue listValue debugLevel listValueTimestamp listLength wamaDuration wamaState parMaxListEntries parInitialThresholdValue parThresholdValue Dauerintervall1 Werteintervall1 Leistungsprüfung1 iSumValue iCounter i iPosTrennzeichen listValueAverage iValue iTime HINWEIS: verwendete Funktion(en) unterhalb! Hier wird der Status der WaMa geprüft: Es muss dabei etwas getrickst werden, da die WaMa Ruhestrom verbraucht, der variiert. Debugging Schalter: 0 = kein Debugging, 2 = Variableninhalte debugLevel 2 Arbeitsvariable initialisieren. wamaDuration 0 wamaState FALSE Arbeitsparameter initialisieren. Max. Anzahl Einträge in der Liste parMaxListEntries 20 Startwert für Erkennung WaMa läuft. 250 mA parInitialThresholdValue 250 Durchschnittswert für Erkennung WaMa läuft. 100 mA (Summe Stromwerte in Liste geteilt durch Anzahl Werte) parThresholdValue 100 Zyklusse deaktivieren. Dauerintervall1 Werteintervall1 Leistungsprüfung1 Liste mit den Werten der Stromaufnahme erzeugen, so dass damit die Werte verglichen werden können. listValueTimestamp Einen Initialwert einfügen, so dass die Schleifen beim ersten Lauf nicht in einen Fehler laufen. Funktionsaufruf: Listenwert erzeugen. val knx.0.Wohnhaus.Schalter.WR--WaMa_Stromaufnahme Wertänderung: für Änderungen durch die WaMa, wenn diese etwas tut und somit Strom verbraucht. Wertänderung: ne default knx.0.Wohnhaus.Schalter.WR--WaMa_Stromaufnahme Erkennen, ob die WaMa läuft: Stromwert > "parInitialThresholdValue" (der ist höher als die späteren Durchschnittswerte) AND GT state.val parInitialThresholdValue EQ wamaState FALSE Schalter auf "True" setzen wamaState TRUE log test Die Waschmaschine läuft nun - wamaState = wamaState Waschdauer mitlaufen lassen Dauerintervall1 1 min wamaDuration 1 1 Funktionsaufruf: Listenwert erzeugen. val knx.0.Wohnhaus.Schalter.WR--WaMa_Stromaufnahme Wenn die WaMa läuft, soll es regelmäßig Werte zum Vergleichen geben, daher die Ausführung jede Minute. Werteintervall1 2 min Funktionsaufruf: Listenwert erzeugen. val knx.0.Wohnhaus.Schalter.WR--WaMa_Stromaufnahme Script für Bestimmung, ob WaMa noch läuft. Berechnung anhand Stromverbrauch und Intervallen zwischen Änderung der Verbrauchswerte. Leistungsprüfung1 5 min listValueTimestamp Summe und Zähler initialisieren. iSumValue 0 iCounter 0 Stromwert und Zeit als ein Eintrag, durch Komma getrennt i listValueTimestamp Position Trennzeichen "-" bestimmen. iPosTrennzeichen FIRST i - - Erst eins abziehen, sonst mit Trennzeichen. iPosTrennzeichen -1 -1 Den Stromwert extrahieren. iValue FIRST FROM_START i iPosTrennzeichen dann zwei addieren, sonst auch mit Trennzeichen. iPosTrennzeichen -1 2 Den Minutenwert extrahieren iTime FROM_START LAST i iPosTrennzeichen Stromwert aufsummieren. iSumValue ADD 1 iSumValue 1 iValue Zähler erhöhen. iCounter 1 1 Hier beginnt nun die eigentliche Arbeit: anhand der "parMaxListEntries" Werte prüfen, ob diese regelmäßig über "parThresholdValue" mA waren. Berechnung mittels der Durchschnittswerte. listValueAverage ROUND 3.1 DIVIDE 1 iSumValue 1 iCounter EQ debugLevel 2 log test Durchschnittswert Liste: listValueAverage Erkennen, ob die WaMa noch läuft: Stromwert > "parThresholdValue" GTE listValueAverage parThresholdValue WaMa läuft noch, Waschdauer anzeigen (diesen Ast kann man sich eigentlich sparen) Debug-Meldungen - Level 2 EQ debugLevel 2 log test Waschmaschine läuft - Waschdauer: wamaDuration Minuten. LT listValueAverage parThresholdValue WaMa läuft nicht mehr Berechnung der Waschdauer stoppen Dauerintervall1 Regelmäßiges Fortschreiben der Werte stoppen Werteintervall1 Status setzen. WaMa läuft nicht wamaState FALSE log test Waschmaschine ist fertig - Waschdauer: wamaDuration Minuten. Debug-Meldungen - Level 2 EQ debugLevel 2 log test Listeninhalte: listValueTimestamp Regelmäßige Leistungsprüfung stoppen Leistungsprüfung1 0 text Die Waschmaschine ist fertig - custom \n Waschdauer: wamaDuration Minuten. Status der Waschmaschine Variable Waschdauer zurücksetzen - wamaDuration = wamaDuration 0 Debug-Meldungen - Level 2 EQ debugLevel 2 log test Waschdauer - wamaDuration = wamaDuration Es hat sich ein neuer Stromwert ergeben, diesen in die Liste eintragen. Funktionsaufruf: Listenwert erzeugen. val knx.0.Wohnhaus.Schalter.WR--WaMa_Stromaufnahme createListEntry Beschreibe diese Funktion … Kombinierten Listenwert zusammensetzen: Wert, Minuten nach Mitternacht. listValue powerValue - mid Stromwert und Zeitstempel in Liste einfügen. INSERT FIRST listValueTimestamp listValue Nur die letzten x Werte behalten. listLength listValueTimestamp GT listLength parMaxListEntries listValueTimestamp FROM_START FROM_START listValueTimestamp 1 parMaxListEntries Debug-Meldungen - Level 2 EQ debugLevel 2 log test Listeninhalte: listValueTimestamp