Zeit für die nächste Version
Changelog seit V0.8
- Anpassung des Umschaltgrenzwerts per ext. Parameter (Schaltschwelle kann angepasst werden)
- Abfangen Division durch Null, falls die Sensoren tatsächlichen 0 Lux liefern (würde den Baustein abbrechen lassen)
- Implementierung einer Hysterese
- Ausgang für ungeglätteten maximalen Helligkeitswert
- Ausgang für träge und flinke Ausgabe der Sonnenerkennung
- Eingang zum setzen einer mindest Helligkeit zur Sonnenerkennung
- Eingang zum Deaktivieren der Sonnenerkennung (maximale Helligkeitswerte werden weiterhin gesendet)
- Es sind standardmäßig bereits die 2 mindestens benötigten Helligkeitseingänge angelegt
Code: Alles auswählen
{
"Level":[
["$Stat_Min","float",0],
["$Stat_Max","float",0],
["$ConstEins","integer",1],
["$ConstHundert","integer",100],
["$ConstTrue","bool",true],
["$MinLux","float",0],
["$MaxLux","float",0],
["$MaxLuxOut","float",0],
["$Div_Quotient_short","float",0],
["$Div_Quotient_long","float",0],
["$Threshold_baseline","float",0.38],
["$Threshold","float",0],
["$P_Threshold_Adjust","integer",0],
["$Threshold_Adjust","float",0.0],
["$Threshold_Hysteresis","float",0],
["$Sunshine_long","bool",false],
["$Sunshine_short","bool",false],
["$Result_long","bool",false],
["$Holddownsun","bool",false],
["$Holddownlux","bool",false],
["$MinCResult","bool",false],
["$MaxCResult","bool",false],
["$Holddown_result","bool",false],
["$WaitTimesun","integer",1],
["$LowpassPar","integer",60],
["$P_WaitTimelux","integer",10],
["$P_Hysteresis","float",0.04],
["$P_Darkness_limit_max","float",5000],
["$P_Darkness_limit_min","float",999],
["$P_Filtertime","integer",600],
["$O_Sun_long","bool",false],
["$O_Outlux","float",0],
["$O_Result_short","bool",false],
["$I_SunDis","bool",false],
["$I_Helligkeit","float",0],
["$VAR<I_Helligkeit!>","float",0],
["$VAR<Inhibit?>","bool",false]
],
"Module":[
["Break",["$VAR<Inhibit?>"]],
["Statistic",["$I_Helligkeit","$VAR<I_Helligkeit!>"],"$Stat_Min","$Stat_Max",0,0],
["Multiplexer",["$ConstEins","$Stat_Min"],"$Stat_Min","$Stat_Min"], //Abfangen Division durch 0 bei Sensorwert 0
["Lowpass","$Stat_Max","$MaxLux","$LowpassPar"], //Glättung Maximalwerte Helligkeit vor Berechnung
["Lowpass","$Stat_Min","$MinLux","$LowpassPar"], //Glättung Minimalwerte Helligkeit vor Berechnung
["Ratio","$MinLux","$Div_Quotient_long","$MaxLux"], //Für langsam reagierenden Ausgang
["Ratio","$Stat_Min","$Div_Quotient_short","$Stat_Max"], //Für schnell reagierenden Ausgang
["Ratio","$P_Threshold_Adjust","$Threshold_Adjust","$ConstHundert"],
["Polynomial","$ConstEins","$Threshold",["$Threshold_baseline","-$Threshold_Adjust"]],
["Polynomial","$ConstEins","$Threshold_Hysteresis",["$Threshold","-$P_Hysteresis"]],
["Comparator","$Div_Quotient_long","-$Sunshine_long",["$Threshold_Hysteresis","$Threshold"]],
["Comparator","$Div_Quotient_short","-$Sunshine_short",["$Threshold_Hysteresis","$Threshold"]],
["Comparator","$MinLux","$MinCResult","$P_Darkness_limit_min"], //Keine Ausgabe Sonnenschein bei zu geringer Helligkeit
["Comparator","$MaxLux","$MaxCResult","$P_Darkness_limit_max"],
["And",["$Sunshine_long","$MaxCResult","$MinCResult"],"$Result_long"],
["And",["$Sunshine_short","$MaxCResult","$MinCResult"],"$O_Result_short"],
["Or",["$O_Result_short","$I_SunDis"],"$O_Result_short"], //Sperre Sonnenerkennung
["Lowpass","$Stat_Max","$MaxLuxOut","$P_Filtertime"], //Filter für Summenausgang maximale Helligkeit
["Monoflop","$ConstTrue","-$ConstTrue","$Holddownsun","$WaitTimesun",1],
["Monoflop","$ConstTrue","-$ConstTrue","$Holddownlux","$P_WaitTimelux",0],
["Multiplexer",["$Result_long","$Holddown_result"],"$Holddown_result","$Holddownsun"],
["Multiplexer",["$MaxLuxOut","$O_Outlux"],"$O_Outlux","$Holddownlux"],
["Or",["$Holddown_result","$I_SunDis"],"$O_Sun_long"] //Sperre Sonnenerkennung
],
"Input":[
["Sektor 0","Eingang Helligkeitssensor (Lux)","$I_Helligkeit","c"], //Erster immer benötigter Sektor (mind. 2)
["Sektor","Eingang Helligkeitssensor (Lux)","$VAR<I_Helligkeit!>","c"], //Dynamisches ergänzen weiterer Sektoren, 1 weiterer Sektor auf jeden Fall
["MinimumLux","Mindesthelligkeit zur Erkennung Sonnenschein und deaktivierung Hitzeschutz (empf. 5000)","$P_Darkness_limit_max","c"],
["SchwelleMod","Anpassung Schaltschwelle (ca. +/- 10, positive Werte bedeuten mehr Sonne um zu schalten)","$P_Threshold_Adjust","c"],
["Verzoegerung","Verzoegerung in s, bis neue Helligkeit gesendet wird (empf. 60s)","$P_WaitTimelux","c"],
["Filterzeit","Lowpass Zeitkonstante zur Glättung der Helligkeit des Ausgangs (empf. 600s)","$P_Filtertime","c"],
["SonneSperre","Sperren der Sonnenerkennung (Gesperrt = True); MaxLux wird weiterhin gesendet","$I_SunDis","c"],
["Inhibit","INHIBIT","$VAR<Inhibit?>","u"]
],
"Output":[
["MaxLux(gefiltert)","Ausgang für geglätteten max. Helligkeitswert aller Eingänge","$O_Outlux","c"],
["MaxLux(raw)","Ausgang für ungeglätteten max. Helligkeitswert aller Eingänge","$Stat_Max","c"],
["SonneLang","Sonne scheint, langsame Reaktionszeit (Bei Sonnenschein = True)","$O_Sun_long","c"],
["SonneKurz","Sonne scheint, schnelle Reaktionszeit (Bei Sonnenschein = True)","$O_Result_short","c"]
]
}
- Der Baustein benötigt mindestens 2 Helligkeitswerte aus sich nicht überlappenden Sektoren
- Es können beliebig viele Helligkeitssensoren zugeführt werden
- Das Umschalten Sonne/keine Sonne (lang) benötigt etwa 2 Minuten
- Die einstellbare Verzögerung dient dem Zweck, nicht bei bei jedem neuen Trigger durch geringfügig geänderte Helligkeiten, nachgelagerte Logiken ebenfalls sofort zu triggern (bspw. alle Beschattungsbausteine durch geringfügige Helligkeitsänderungen an einem der Sensoren)
- Bei gesetzter Sperre werden die beiden Sonnen-Ausgänge auf "True" gesetzt
- Die Mindesthelligkeit der Sonnenerkennung kann nun eingestellt werden. Sinnvolle Werte hängen stark von den Helligkeitssensoren ab. Ich empfehle 5000 Lux
- Die Schaltschwelle kann bei Bedarf über den Eingang "SchwelleMod" verändert/verschoben werden (ganzzahlige Werte -10...+10). Positive Werte bedeuten es ist mehr Sonne nötig, um zu schalten.