Re: Sommer / Winterumschaltung nach DIN
Verfasst: Sa Dez 26, 2020 10:02 pm
Hi Georg,
danke Dir und allen anderen auch frohe Weihnachten.
Beste Grüße
Jens
danke Dir und allen anderen auch frohe Weihnachten.
Beste Grüße
Jens
Timberwolf Server, BlitzART & 1-Wire
https://forum.timberwolf.io/
Code: Alles auswählen
/**===========================================================
Temperaturmittel und Sommer/Winter Umschaltung nach DIN
mit Initialabschätzung (nicht nach DIN) und manuellem Schalter zum temporären übersteuern
============================================================*/
{
"Input": [
["Außentemperatur","Gemessene Außentemperatur","$I_Temperature","u"],
["Temp. Sommer","Außentemperatur bei der auf Sommer umgeschaltet wird","$I_TempSommer","c"],
["Temp. Winter","Außentemperatur bei der auf Winter umgeschaltet wird","$I_TempWinter","c"],
["Manueller Schalter", "Mannuelles Schreiben des Ausgangs bis zum nächsten automatichen Wert","$manTrigger","a"]
],
"Output": [
["Heizungsmodus Sommer/Winter","Ausgabe ob Sommer oder Winter","$Output","ct"],
["Temperatur Tag gleitend","(T1+T2+T3*T3)/4","$Temperature_avg","ct"],
["Temperatur Mittelwert Monat","Mittelwert seit Monatswechsel","$Temperature_avg_Monat","c"],
["Counter","Anzahl Werte","$Counter?","c"],
["Temp1 / 7:00","Anzahl Werte","$Temp1_?","c"],
["Temp2 / 14:00","Anzahl Werte","$Temp2_?","c"],
["Temp3 / 22:00","Anzahl Werte","$Temp3_?","c"]
],
"Level": [
["$manTrigger","bool",false],
["$touched","bool",false],
["$I_Temperature","float",0.0],
["$I_TempSommer","float",0.0],
["$I_TempWinter","float",0.0],
["$I_Totzone","float",0.0],
["$Output","bool",false],
["$Temperature_sum","float",0.0],
["$Temperature_avg","float",0.0],
["$Temperature_sum_Monat","float",0.0],
["$Temperature_sum_temp","float",0.0],
["$Temperature_avg_Monat","float",0.0],
["$Temperature_avg_MonatLast","float",0.0],
["$Counter","integer",0],
["$Counter_temp","integer",1],
["$Counter_Lim","integer",0],
["$Val_ok","bool",false],
["$Temp1_","float",0.0],
["$Temp2_","float",0.0],
["$Temp3_","float",0.0],
["$Init","bool",true],
["$Reset0","bool",false],
["$Reset1","bool",false],
["$Reset2","bool",false],
["$Reset3","bool",false],
["$Temp1_gesetzt","bool",false],
["$Temp2_gesetzt","bool",false],
["$Temp3_gesetzt","bool",false],
["$ResetMonatTrigger","bool",false],
["$KonstTrue","bool",true],
["$Konst0","float",0.0],
//["$Konst0int","int",0],
["$Konst1","float",1.0],
["$Konst4","float",4.0],
["$KonstFalse","bool",false],
["$Zeitpunkt_init","string","0 10 * * * *"],
["$Zeitpunkt1","string","0 0 7 * * *"],
["$Zeitpunkt2","string","0 0 14 * * *"],
["$Zeitpunkt3","string","0 0 22 * * *"],
["$ResetMonat","string","20 2 0 1 * *"]
],
"Module": [
// manuelles triggeren erkennen
[ "Triggered", "$manTrigger", "$touched" ],
//Initialisierung
["And" , ["-$Temp1_gesetzt","-$Temp2_gesetzt","-$Temp3_gesetzt"], "$Init"],
["Cron","$Init","$Reset0",0,"$Zeitpunkt_init"],
["Latch","$I_Temperature","$Temp1_","-$Temp1_gesetzt",0],
["Latch","$I_Temperature","$Temp2_","-$Temp2_gesetzt",0],
["Latch","$I_Temperature","$Temp3_","-$Temp3_gesetzt",0],
// Trigger für 7 / 14 und 22 Uhr
["Cron","$KonstTrue","$Reset1",0,"$Zeitpunkt1"],
["Cron","$KonstTrue","$Reset2",0,"$Zeitpunkt2"],
["Cron","$KonstTrue","$Reset3",0,"$Zeitpunkt3"],
["Cron","$KonstTrue","$ResetMonatTrigger",0,"$ResetMonat"],
// Temperatur speichern
["Multiplexer",["$Temp1_","$I_Temperature"],"$Temp1_","$Reset1"],
["Multiplexer",["$Temp2_","$I_Temperature"],"$Temp2_","$Reset2"],
["Multiplexer",["$Temp3_","$I_Temperature"],"$Temp3_","$Reset3"],
// Pürfung ob Temperaturen gesichert sind
["Multiplexer",["$Temp1_gesetzt","$KonstTrue"],"$Temp1_gesetzt","$Reset1"],
["Multiplexer",["$Temp2_gesetzt","$KonstTrue"],"$Temp2_gesetzt","$Reset1"],
["Multiplexer",["$Temp3_gesetzt","$KonstTrue"],"$Temp3_gesetzt","$Reset1"],
// Mittelwert berechnen
["Polynomial","$Konst1","$Temperature_sum",["$Temp1_","$Temp2_","$Temp3_","$Temp3_"]],
["Ratio", "$Temperature_sum", "$Temperature_avg", "$Konst4"],
// Überprüfung
["Comparator","$Temperature_avg","$Output",["$I_TempWinter","$I_TempSommer"]],
// Summe um aktuellen Mittelwert erhöhen (nur bei Reset3)
["Polynomial","$Konst1","$Temperature_sum_temp",["$Temperature_sum_Monat","$Temperature_avg"]],
["Polynomial","$Konst1","$Counter_temp",["$Counter","$Konst1"]],
["Multiplexer",["$Temperature_sum_Monat","$Temperature_sum_temp"],"$Temperature_sum_Monat","$Reset3"],
["Multiplexer",["$Counter","$Counter_temp"],"$Counter","$Reset3"],
// Divisor prüfen und bei Null mit 1 ersetzen
["Limiter","$Counter","$Counter_Lim","$Val_ok",["$Konst0", "$Konst0"]],
["Latch","$Konst1","$Counter","$Val_ok",0],
["Ratio", "$Temperature_sum_Monat", "$Temperature_avg_Monat", "$Counter"],
// Ergebnis überschreiben und alten Divisor wiederherstellen
["Latch","$Konst0","$Temperature_avg_Monat","$Val_ok",0],
["Latch","$Konst0","$Counter","$Val_ok",0],
// Summe und Counter zurücksetzen
["Multiplexer",["$Counter","$Konst0"],"$Counter","$ResetMonatTrigger"],
["Multiplexer",["$Temperature_sum_Monat","$Konst0"],"$Temperature_sum_Monat","$ResetMonatTrigger"],
// Reset auf 0 setzen
["Multiplexer",["$Reset1","$KonstFalse"],"$Reset1","$Reset1"],
["Multiplexer",["$Reset2","$KonstFalse"],"$Reset2","$Reset2"],
["Multiplexer",["$Reset3","$KonstFalse"],"$Reset3","$Reset3"],
["Multiplexer",["$ResetMonatTrigger","$KonstFalse"],"$ResetMonatTrigger","$ResetMonatTrigger"],
// manuelles Schalten ausführen
["Latch","$manTrigger","$Output","$touched",0]
]
}
/** Der Schöpfer dieser Custom Logik überträgt die Nutzungsrechte gemäß der TOLL ("Timberwolf Open Logikblock License")
die unter https://wrgt.news/TOLL zum Download zur Verfügung steht. */