Ich möchte euch in diesem und weiteren Threads eine Lösung zur Steuerung der Jalousien vorstellen. Aufgrund meiner Erfahrungen mit dezentraler Logik auf Wetterstationen etc. habe ich nun die Steuerung komplett auf den TWS übertragen. Damit habe ich für mich eine (fast) perfekte Lösung geschaffen, die für viele andere auch funktionieren sollte.
Die Übersicht zu Hauptmerkmalen, Bausteinen und deren Zusammenspiel ist hier zu finden:
viewtopic.php?f=65&t=1564
Die Höhenberechnung liefert für den Automatikbetrieb die Sollhöhe, abhängig von Sommer/Winter und Innentemperatur.
Funktionsweise:
- Im für Sommer kann eine fixe höhe zB 90% oder 100% parametriert werden. Damit wird eine maximale Beschattungswirkung erreicht (wenn die Bedingungen für Auto im Baustein 2 erfüllt sind).
- Im Winter wird die Höhe proportional zu Überschreitung der Solltemperatur berechnet. Ich verwende dazu 10% pro 0,1°C (=> Delta_T 1°C für max. Beschattung) und 0,5°C Offset zur Temperatur des RTR.
zB Solltemperatur 23°C, 0,5°C Offset => Bei 23,7°C wird 20% beschattet, bei 24,5% zu 100%.
- Winter: Winter = True, ggf. einfach am Eingang invertieren verwenden
- T_Soll: Raumtemperatur Sollwert, ab dem beschattet werden soll. Damit nicht gleichzeitig geheizt und beschattet wird, sollte ein Offset verwendet werden (siehe unten)
- T_Ist: Aktuelle Raumtemperatur zB als KNX-Objekt vom Raumtemperaturregler
- Heizmodus: Aktueller Modus des Raumtemperaturreglers. 0=Heizen, 1=Kühlen. Solange an diesem Eingang 0 anliegt, wird nicht beschattet, da noch geheizt wird. Ist kein RTR vorhanden oder soll diese Verrieglung nicht verwendet werden, muss der Eingang als Parameter mit "True" gesetzt werden.
- Hoehe Sommer: Legt die Behanghöge im Sommermodus fest zB 90% oder 100%
- Der Offset wird zur Solltemperatur addiert. Daher kann direkt der Sollwert des RTR als Sollwert verwendet werden.
- Der Parameter Delta_T_Max gibt dT für 100% an, im obigen Beispiel 1°C
- Der Parameter Step legt fest gibt dT für 100% an, im obigen Beispiel 1°C
- Hoehe_Min / Hoehe_Max: beschränkt den Beschattungsbereich im Winter zB auf 20-80%, d.h. es wird erst ab Sollhöhe 20% ein Wert >0 gesendet, die max. Sollhöhe wird auf 80% beschränkt. Damit kann unter anderem eine mindest Helligkeit erhalten gesichert werden.
- Step: Beschreibt die Höhendifferenz, ab der sofort der neue Wert für Sollhöhe gesendet wird.
- Verzögerung: Gibt an, ab welcher Zeit ein neuer Wert gesendet wird, sofern nicht vorher Step überschritten wurde.
Zusammen mit Step wird ein zu häufiges Verfahren der Jalousie verhindert.
- Hoehe Soll: Aktueller Sollwert
- Hoehe Last: Letzter gesendete Wert
- Aktiv: Gibt bei Höhe > 0 den Wert true aus.
Code: Alles auswählen
/**===========================================================
HoeheSoll aus Temperatur für Winterbetrieb
Sommer fixe einstellbare Höhe
Step und Delay beim Senden
TODO: Step-Min
============================================================*/
{
"Level":[
["$I_Winter","bool",false],
["$I_Heizmodus","bool",false],
["$I_Hoehe_Sommer","float",100.0],
["$I_Temp_Soll","float",24.0],
["$Temp_Soll","float",24.5],
["$I_Temp_Akt","float",25.0],
["$I_Delta_T_Max","float",25.5],
["$I_Step","float",20.0],
["$I_Delay","float",20.0],
["$I_Hoehe_Max","float",100.0],
["$I_Hoehe_Min","float",20.0],
["$Hoehe_Soll","float",0.0],
["$Hoehe_Soll_Lim","float",0.0],
["$Hoehe_Soll_Step","float",0.0],
["$Hoehe_Soll_OutLast","float",0.0],
["$Hoehe_Soll_Out","float",0.0],
["$Hoehe_Soll_Out1","float",0.0],
["$I_Offset","float",0.5],
["$Delta_T","float",0.0],
["$Delta_Hoehe","float",0.0],
["$Delta_Hoehe_Abs","float",0.0],
["$Delta_Hoehe_Select","float",0.0],
["$Steigung","float",0.0],
["$Konst100","float",100.0],
["$Konst1","float",1.0],
["$Konst0","float",0.0],
["$Val_ok","bool",false],
["$Trigger","bool",false],
["$Aktiv","bool",false],
["$SelectHoehe","bool",false],
["$SelectStep","bool",false],
["$Step","float",20.0]
],
"Module":[
// Letzte Höhe zu Beginn merken
["Polynomial", "$Konst1", "$Hoehe_Soll_OutLast",["$Konst0", "$Hoehe_Soll_Out"]],
//Offset berücksichtigen
["Polynomial", "$Konst1", "$Temp_Soll",["$I_Temp_Soll", "$I_Offset"]],
// Delta T zur Solltemperatur berechnen
["Polynomial", "$Konst1", "$Delta_T",["$I_Temp_Akt", "-$Temp_Soll"]],
// Umrechnung dT in 0-100%
["Ratio","$Konst100","$Steigung","$I_Delta_T_Max"],
["Polynomial", "$Delta_T", "$Hoehe_Soll",["$Konst0", "$Steigung"]],
//Sollwert Hoehe auf Min/Max einschränken, wenn <Min => auf Null setzen.
["Limiter","$Hoehe_Soll","$Hoehe_Soll_Lim","$Val_ok",["$I_Hoehe_Min", "$I_Hoehe_Max"]],
["Comparator", "$I_Hoehe_Min", "$SelectHoehe", "$Hoehe_Soll"],
["Multiplexer",["$Konst0","$Hoehe_Soll_Lim"],"$Hoehe_Soll_Lim","-$SelectHoehe"],
//Höhe berechen mit aktuellem Step-Wert
["Step","$Hoehe_Soll_Lim","$Hoehe_Soll_Step",0,"$Step",0],
//Prüfen ob sich der Wert geändert hat (Änderung>Step) und Verzögerungszeit starten
//Re-trigger wenn Step überschritten wird (betragsmäßig)
["Polynomial", "$Konst1", "$Delta_Hoehe",["$Hoehe_Soll_Step", "-$Hoehe_Soll_OutLast"]],
["Comparator" , "-$Delta_Hoehe" , "$Delta_Hoehe_Select" , "$Konst0"],
["Multiplexer",["$Delta_Hoehe","-$Delta_Hoehe"],"$Delta_Hoehe_Abs","$Delta_Hoehe_Select"],
["Comparator" , "$Delta_Hoehe_Abs" , "$Trigger" , "$Konst0"],
["Monoflop","$Trigger",0,"$SelectStep","$I_Delay",3],
//Während Verzögerungszeit nur Wert übernehmen, wenn I_Step überschritten ist, danach sofort senden.
["Multiplexer",["$Konst0","$I_Step"],"$Step","$SelectStep"],
//Höhe berechen mit neuem Step-Wert, damit auch nach Ablauf des Timers die Hoehe neu berechnet wird
["Step","$Hoehe_Soll_Lim","$Hoehe_Soll_Step",0,"$Step",0],
//Heizmodus aktiv
["Multiplexer",["$Konst0","$Hoehe_Soll_Step"],"$Hoehe_Soll_Out1","$I_Heizmodus"],
//Sommer/Winter
["Multiplexer",["$I_Hoehe_Sommer","$Hoehe_Soll_Out1"],"$Hoehe_Soll_Out","$I_Winter"],
//T_Akt > Temp_Soll
["Comparator" , "$Delta_T" , "$Aktiv" , "$Konst0"]
],
"Input":[
["Winter","Winter bei Winter=true","$I_Winter","c"],
["Hoehe Sommer","Beschattungsposition im Sommer","$I_Hoehe_Sommer","c"],
["T_Soll","Soll-temperatur","$I_Temp_Soll","c"],
["T_Offset","Offset zu T-Soll, wenn T-Soll der Heizung-Solltemperatur entspricht","$I_Offset","c"],
["T_Ist","Ist-Temperatur","$I_Temp_Akt","c"],
["Heizmodus","Heizung aktiv, d.h. Reglersollwert sind schon Kühlbetrieb","$I_Heizmodus","c"],
["Hoehe_Min","Min. Beschattungsposition","$I_Hoehe_Min","c"],
["Hoehe_Max","Max. Beschattungsposition","$I_Hoehe_Max","c"],
["Delta_T_max","max. deltaT für Höhe 100%","$I_Delta_T_Max","c"],
["Step","Position bei der sofort gesendet wird","$I_Step","c"],
["Verzögerung","Verzögerungszeit, aber der auch kleinere Höhendifferenzen gesendet werden","$I_Delay","c"]
],
"Output":[
["Hoehe Soll","Sollhöhe aus Temperaturdifferenz","$Hoehe_Soll_Out","c"],
["Hoehe Last","Letzte Höhe","$Hoehe_Soll_OutLast","c"],
["Aktiv","Beschattung aktiv, da T>Tsoll","$Aktiv","c"]
]
}
/**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.*/
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.