Seite 1 von 2

Vollautomatische 24h Jalousiesteuerung (Baustein 3: Beschattungsautomatik)

Verfasst: So Okt 27, 2019 8:11 pm
von Robert_Mini
Hallo zusammen!

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

Der Baustein Beschattungsautomatik steuert die Behanghöhe und den Lamellenwinkel abhängig von Sonnenposition, Fenster/Jalousieparameter und Helligkeit.
Der Baustein wird je Fassade benötigt, sofern die Fenster ca. die gleichen Parametern besitzen (die Parameter der großen Fenster können meist für die kleineren Fenster mitverwendet werden). Bei Verwendung einer innentemperaturabhängigen Höhe muss der Baustein je Raum und Fassade verwendet werden.

Neuerung V0.1 (12.3.2021): Der Wert für i den Lamellenwinkel wird nur ausgegeben, wenn die Höhe > 0 ist, ansonsten wird der Wert für LamellePosOffen gesendet.

Funktionsweise:
  • Für Beschattung aktiv sind folgende Voraussetzungen geprüft: Helligkeit > Grenzwert und Sonne scheint ins Fenster .
  • Für Beschattungsbeginn und -ende wird eine Verzögerungszeit abgewartet
  • Die Behanghöhe wird vom Eingang Hoehe_Soll als Objekt oder fixer Wert verwendet.
  • Der Lamellenwinkel wird abhängig von Sonnenhöhe, Winkel zur Fensterrichtung und Lamellenbreite berechnet. Dabei wird die tatsächliche Lamellenbreite (in Richtung der Sonne) mittels Sonnenrichtung umgerechnet.
Eingänge:
  • Helligkeit: Aktuelle Helligkeit für diese Fassade
  • Bereich Sonnenhoehe- und -richtung: Berechnete Sonnenhöhe und Richtung aus dem Astro-Baustein, mittels "innerhalb Bereich" muss der Winkelbereich (Hoehe und Richtung) festgelegt werden, in dem die Sonne ins Fenster scheint.
  • Sonnenhoehe- und -richtung: Berechnete Sonnenhöhe und Richtung aus dem Astro-Baustein.
  • Hoehe_Soll: Behanghöhe, wenn beschattet werden soll. Sollte mit dem Ausgang des 2. Bausteins (viewtopic.php?f=65&t=1565) verbunden werden. Alternativ kann ein fester Wert als Parameter gesetzt werden.
  • Prio: Automatikhöhe wird mit dem Parameter Hoehe_Prio übersteuert (gilt nur, wenn Beschattungsbedingung erfüllt ist)
Parameter die das Verhalten der Beschattungssteuerung festlegen (optional auch über Eingang als Objekt):
  • Helligkeit EIN: Helligkeitswert in Lux, ab dem beschattet werden soll (nach Verzögerungszeit EIN).
  • Helligkeit AUS: Helligkeitswert in Lux, ab dem die Beschattung endet (nach Verzögerungszeit AUS).
  • Verzögerung EIN: Verzögerungszeit nach überschreiten des Helligkeitsgrenzwertes, ab der beschattet wird (gilt für Höhe und Lamelle)
  • Verzögerung AUS Höhe: Verzögerungszeit nach unterschreiten des Helligkeitsgrenzwertes, ab der die Jalousie aufgefahren wird (gilt also nur für Höhe)
  • Verzögerung AUS Lamelle: Verzögerungszeit nach unterschreiten des Helligkeitsgrenzwertes, ab der die Jalousie in Lamellenposition offen gedreht wird (gilt also nur für Lamelle)
  • Hoehe_PrioLegt die Behanghöhe fest, wenn Eingang Prio=True (gilt nur, wenn Beschattungsbedingung erfüllt ist)
  • LamelleStepLegt die Änderung fest, ab der die Lamelle nachgeführt wird.
Geometrische Parameter Fenster und Jalousie (optional auch über Eingang als Objekt):
  • LamellePosOffen: Max. geöffnete Lamellenposition, die verwendet werden soll (typ. 0% = horizontal)
  • LamellePosZu: Geschlossene Lamellenposition, ab der bei sehr flacher Einstrahlung kein Licht mehr durchscheint.
  • HoeheLamZu: Sonnenhöhe in °, ab der in der Stellung LamellePosZu bei senkrechter Einstrahlung auf das Fenster, kein Licht mehr durchfällt (typisch 0-5°)
  • HoeheLamOffen: Sonnenhöhe in °, ab der in der Stellung LamellePosOffen bei senkrechter Einstrahlung auf das Fenster, kein Licht mehr durchfällt (typisch um 40-50°)
  • LamelleBreite: Breite der Lamellen in mm
  • Fensterrichtung: Fensterrichtung bezogen auf Norden = 0, zB. bei einem exakten Südfenster 180°.
Ausgänge:
  • Lux_Aktiv: Rückmeldung, ob die Helligkeitbedingung erfüllt ist (inkl. Verzögerungszeit EIN und Verzögerungszeit AUS Höhe)
  • Fassade StatusH: Rückmeldung, ob Beschattungsbedingung erfüllt ist (inkl. Verzögerungszeit EIN und Verzögerungszeit AUS Höhe)
  • Fassade StatusL: Rückmeldung, ob Beschattungsbedingung erfüllt ist (inkl. Verzögerungszeit EIN und Verzögerungszeit AUS Lamelle)
  • Hoehe Auto: Sollwert für die Jalousiehöhe.
  • Hoehe Auto: Sollwert für den Lamellenwinkel.
2_Beschattung_Auto_p1.png
2_Beschattung_Auto_p2.png

Code: Alles auswählen

/**============================================================
Helligkeit Hysterese und Ein-/Ausschaltverzögerung   - getestet 
Hoehenberechnung mit Ext. Sollwert + Prio und Tuerstatus
Auswertung Sonneneinstrahlung im Fensterbereich, Winkel mit Azimut
NEU V0.1: Sende Lamelle=0, wenn Höhe=0
=============================================================*/
{
    "Level":[
        ["$I_Lux","float",0.0],
        ["$Lux_CResult_A","bool",false],
        ["$I_Lux_Ein","float",30000],
        ["$I_Lux_Aus","float",10000],
        ["$I_Lux_dT_ON","float",10],
        ["$Lux_Limit_ON","bool",false],
        ["$I_Lux_dT_OFF_Hoehe","float",15],
        ["$I_Lux_dT_OFF_Lam","float",20],             
        ["$Lux_Delayed_ON","bool",false],
        ["$Lux_Extend_ON","bool",false],
        ["$Lux_Extend_ON_Lam","bool",false],        
        ["$Lux_Aktiv","bool",false],
        ["$Lux_Aktiv_Lam","bool",false],
     	["$Azi_in_range","bool",false],
        ["$Alti_in_range","bool",false],
        ["$Sun_in_range","bool",false],
        ["$Fassade_Beschattung_Aktiv","bool",false],
        ["$Fassade_Beschattung_Aktiv_Lam","bool",false], 
        ["$I_Hoehe_Pos_Ein","float",0.0],
        ["$Hoehe_Pos_Ein","float",0.0],
        ["$Hoehe_Pos_Ein_Fassade","float",0.0],
        ["$I_Prio","bool",false],
        ["$I_Hoehe_Pos_Prio","float",0.0],
        ["$Konst100","float",100.0],  
        ["$Konst0","float",0.0],
        ["$Konst1","float",1.0],   
        ["$SonnenHoehe","float",0],
        ["$SonnenRichtung","float",0],
        ["$LamellePosZu","float",100.0],
        ["$LamellePosOffen","float",0.0],
        ["$LamellePosDiff","float",0.0],
        ["$LamellePosSteigung","float",0.0],
        ["$LamellePosOffset","float",0.0],
        ["$HoeheZu","float",10.0],
        ["$HoeheOffen","float",50.0],
        ["$HoeheDiff","float",50.0],
        ["$HoeheLimit","float",0],
        ["$LamellePosEin","float",0.0],
        ["$LamellePosOut","float",0.0],
        ["$LamellePosStep","float",5.0],
        ["$LamellePosStepB","float",5.0],
        ["$LamellePosStpOut","float",0.0],
        ["$LamellePosStpOut_Ges","float",0.0],
        ["$BeschattungAktiv","bool",true],
        ["$Hoehe_CResult","bool",false],
        ["$HoeheOffen_Rad","float",50.0],
        ["$Lamellenbreite","float",50.0],
        ["$Fensterrichtung","float",50.0],
        ["$Lamellenbreite_Neu","float",50.0],
        ["$Delta_Senkrecht","float",0],
        ["$Delta_Senkrecht_Rad","float",0],
        ["$KonstTan_A1","float",1.0],
        ["$KonstTan_A3","float",0.33333333],
        ["$KonstTan_A5","float",0.13333333],
        ["$Tan_HoeheOffen","float",0.0],
        ["$Tan_HoeheOffenNeu","float",0.0],
        ["$Lamellenabstand","float",0.0],
        ["$KonstCos_A2","float",-0.5],    
        ["$Cos_Beta","float",0.0],
        ["$Arctan_Nenner","float",0.0],  
        ["$HoeheOffenNeu_Rad","float",0.0],  
        ["$HoeheOffenNeu","float",0.0],  
        ["$KonstArctan_A2","float",0.28],      
        ["$Pi_durch_180","float",0.017453293],
        ["$Delta_Sonnenrichtung","float",0.0],
        ["$Konst75","float",75.0],
        ["$Lamelle0_CResult","bool",false],
        ["$Hoehe0_CResult","bool",false],
        ["$SetLam0","bool",false]
    ],  
    "Module":[
        ["Polynomial","$HoeheOffen","$HoeheOffen_Rad",["$Konst0","$Pi_durch_180"]],
        ["Polynomial","$HoeheOffen_Rad","$Tan_HoeheOffen",["$Konst0","$Konst1","$Konst0","$KonstTan_A3","$Konst0","$KonstTan_A5"]],
        ["Polynomial","$Tan_HoeheOffen","$Lamellenabstand",["$Konst0","$Lamellenbreite"]],
        //Berechnung der Abweichung von der Fensterrichtung und Limit auf +/-75° um Div/0 auszuschließen.
		["Polynomial","$Konst1","$Delta_Sonnenrichtung",["$Fensterrichtung","-$SonnenRichtung"]],       
        ["Limiter","$Delta_Sonnenrichtung","$Delta_Senkrecht",0,["-$Konst75","$Konst75"]],   
        ["Polynomial","$Delta_Senkrecht","$Delta_Senkrecht_Rad",["$Konst0","$Pi_durch_180"]],
        ["Polynomial","$Delta_Senkrecht_Rad","$Cos_Beta",["$Konst1","$Konst0","$KonstCos_A2"]],
        ["Ratio","$Lamellenbreite","$Lamellenbreite_Neu","$Cos_Beta"],
        ["Ratio","$Lamellenabstand","$Tan_HoeheOffenNeu","$Lamellenbreite_Neu"],
        ["Polynomial","$Tan_HoeheOffenNeu","$Arctan_Nenner",["$Konst1","$Konst0","$KonstArctan_A2"]],
        ["Ratio","$Tan_HoeheOffenNeu","$HoeheOffenNeu_Rad","$Arctan_Nenner"],
        ["Ratio","$HoeheOffenNeu_Rad","$HoeheOffenNeu","$Pi_durch_180"],      

        ["Comparator","$I_Lux", "$Lux_CResult_A" , ["$I_Lux_Aus","$I_Lux_Ein"]],
        ["Monoflop","$Lux_CResult_A","-$Lux_CResult_A","$Lux_Limit_ON","$I_Lux_dT_ON",2],
        ["And",["$Lux_CResult_A","-$Lux_Limit_ON"],"$Lux_Delayed_ON"],
        ["Monoflop","$Lux_Delayed_ON","$Lux_Delayed_ON","$Lux_Extend_ON","$I_Lux_dT_OFF_Hoehe",4],
        ["Or",["$Lux_Delayed_ON","$Lux_Extend_ON"],"$Lux_Aktiv"],        
        ["Monoflop","$Lux_Delayed_ON","$Lux_Delayed_ON","$Lux_Extend_ON_Lam","$I_Lux_dT_OFF_Lam",4],
        ["Or",["$Lux_Delayed_ON","$Lux_Extend_ON_Lam"],"$Lux_Aktiv_Lam"],      
        ["And",["$Alti_in_range","$Azi_in_range"],"$Sun_in_range"],
        ["And",["$Sun_in_range","$Lux_Aktiv"],"$Fassade_Beschattung_Aktiv"],        
        ["Multiplexer",["$Konst0","$I_Hoehe_Pos_Ein"],"$Hoehe_Pos_Ein_Fassade","$Fassade_Beschattung_Aktiv"],
        ["Multiplexer",["$Hoehe_Pos_Ein_Fassade","$I_Hoehe_Pos_Prio"],"$Hoehe_Pos_Ein","$I_Prio"],
        ["Limiter","$SonnenHoehe","$HoeheLimit",0,["$HoeheZu","$HoeheOffenNeu"]],
        ["Polynomial","$LamellePosOffen","$LamellePosDiff",["-$LamellePosZu","$Konst1"]],
        ["Polynomial","$HoeheOffenNeu","$HoeheDiff",["-$HoeheZu","$Konst1"]],
        ["Ratio","$LamellePosDiff","$LamellePosSteigung","$HoeheDiff"],
        ["Polynomial","$HoeheZu","$LamellePosOffset",["$LamellePosZu","-$LamellePosSteigung"]],
        ["Polynomial","$HoeheLimit","$LamellePosEin",["$LamellePosOffset","$LamellePosSteigung"]],
        ["And",["$Sun_in_range","$Lux_Aktiv_Lam"],"$Fassade_Beschattung_Aktiv_Lam"],  
        ["Multiplexer",["$LamellePosOffen","$LamellePosEin"],"$LamellePosOut","$Fassade_Beschattung_Aktiv_Lam"], 
        ["Comparator","$SonnenHoehe","$Hoehe_CResult","$HoeheOffenNeu"],
        ["Multiplexer",["$LamellePosStep","$Konst0"],"$LamellePosStepB","$Hoehe_CResult"],    
        ["Step","$LamellePosOut","$LamellePosStpOut",0,"$LamellePosStepB",0],
        ["Comparator","$LamellePosStpOut","$Lamelle0_CResult","$Konst1"],
        ["Comparator","$Hoehe_Pos_Ein","$Hoehe0_CResult","$Konst1"],
        ["And",["$Lamelle0_CResult","$Hoehe0_CResult"],"$SetLam0"],  
        ["Multiplexer",["$LamellePosOffen","$LamellePosStpOut"],"$LamellePosStpOut_Ges","$SetLam0"]
    ],
    "Input":[
        ["Helligkeit","Aktuelle Helligkeit","$I_Lux","c"],
        ["Helligkeit EIN","Helligkeitsschwelle ab der beschattet wird","$I_Lux_Ein","c"],
        ["Helligkeit AUS","Helligkeitsschwelle zum Beenden der Beschattung","$I_Lux_Aus","c"],
        ["SonnenHoehe","Bereich der Sonnenhoehe in dem beschattet werden soll","$Alti_in_range","c"],
	    ["Sonnenrichtung","Bereich der Sonnenrichtung in dem beschattet werden soll","$Azi_in_range","c"],
        ["Verzögerung EIN","Verzögerung, bis nach Überschreiten der oberen Helligkeitsschwelle beschattet wird","$I_Lux_dT_ON","c"], 	    
        ["Verzögerung AUS","Verzögerung, bis nach Unterschreiten der unteren Helligkeitsschwelle die Jalousie aufgefahren wird","$I_Lux_dT_OFF_Hoehe","c"],
        ["Verzögerung AUS L","Verzögerung, bis nach Unterschreiten der unteren Helligkeitsschwelle die Lamelle geöffnet wird","$I_Lux_dT_OFF_Lam","c"], 	                  
        ["SonnenHoehe","Sonne Elevation/Höhe über Horizont","$SonnenHoehe","c"],   
        ["SonnenRichtung","Sonne Azimut/Richtung bezogen auf Nord","$SonnenRichtung","c"],   
 	    ["Hoehe_Soll","Vorgabe der Sollhöhe bei Beschattung entweder als fester Wert oder variabel zB. abhängig von der Innentemperatur","$I_Hoehe_Pos_Ein","c"],
        ["Prio","Prio aktivieren zur Uebersteuerung ext. Sollwert","$I_Prio","c"],
        ["Hoehe_Prio","Priohoehe","$I_Hoehe_Pos_Prio","c"],
        ["LamellePosOffen","Offene Position der Lamellen bei Automatik, meist 0%","$LamellePosOffen","c"],
        ["LamellePosZu","Geschlossene Position der Lamellen bei aktiver Beschattung, meist 100% ","$LamellePosZu","c"],
        ["HoeheLamZu","Sonenhöhe bei der die Lamellennachführung startet","$HoeheZu","c"],
        ["HoeheLamOffen","Sonenhöhe bei der die Lamellennachführung endet","$HoeheOffen","c"],
        ["LamelleStep","Schrittweite für Lamellennachführung","$LamellePosStep","c"],
        ["LamelleBreite","Breite der Lamellen","$Lamellenbreite","c"],
        ["Fensterrichtung","Fensterrichtung","$Fensterrichtung","c"]              	    	      
    ],
    "Output":[
        ["Lux_Aktiv","Helligkeitskriterien und Verzoegerungszeiten ohne Richtung","$Lux_Aktiv","c"],
        ["Fassade StatusH","Fassade Beschattung Aktiv","$Fassade_Beschattung_Aktiv","c"],     
        ["Fassade StatusL","Fassade Beschattung Aktiv","$Fassade_Beschattung_Aktiv_Lam","c"],            
        ["Hoehe Auto","Hoehe Auto","$Hoehe_Pos_Ein","c"],
        ["Lamelle Auto","Lamelle Auto","$LamellePosStpOut_Ges","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.*/
Nutzungsrechte:
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.

Re: Vollautomatische 24h Jalousiesteuerung (Baustein 3: Beschattungsautomatik)

Verfasst: Do Mär 11, 2021 7:59 am
von ztjuu
Hallo Robert

Echt super Bausteine und toll erklärt!!! Die Gedankengänge, Berücksichtigung und Ausführung echt wahnsinn. Ich denke das ich die Bausteine jetzt verstanden habe und für einige Fenster (Rolladen und Raffstor) schon in Verwendung.

Mir ist jetzt aufgefallen, wenn der Baustein 2 keine Höhe sendet, fährt die Lamellenberechnung trotzdem. Mach aus meiner sicht keinen Sinn, weil die Jalousie voll offen ist und die Motoren unnötig belastet werden.

Wie schwierig ist es im Baustein 3 dies zu berücksichten? Sprich wenn Höhe ist 0 dann Lamelle ist ebenfalls 0. Hab mir den Code angesehen, jedoch bin ich noch nicht so fitt alles zu verstehen. Bei mir zu Hause ist gerade der fall, dass ich mit der Sonne den Raum heizen könnte um Heizenergie zu sparen. Somit bräuchte ich Vormittags bzw den ganzen Tag keine Beschattung.

lg aus Kärnten; Jürgen

Re: Vollautomatische 24h Jalousiesteuerung (Baustein 3: Beschattungsautomatik)

Verfasst: Do Mär 11, 2021 3:11 pm
von Robert_Mini
Hallo Jürgen!

Danke für das Lob und die Kommentare.
Du hast recht, die Lamellenverstellung bei 0 Höhe macht keinen Sinn.
Ich hab das bei mir auch schon eingebaut :o :o

Ich versuche, den modifizierten Code kurzfristig hier zu teilen.

lg
Robert

Re: Vollautomatische 24h Jalousiesteuerung (Baustein 3: Beschattungsautomatik)

Verfasst: Do Mär 11, 2021 3:19 pm
von ztjuu
Hi

Ich hätte den Code versucht zu verstehen :doh:, dafür hab ich momentan zu wenig Zeit :think: . Es ist natürlich perfekt wenn du es dir ansehen kannst.

Herzlichen Dank :dance:

lg

Re: Vollautomatische 24h Jalousiesteuerung (Baustein 3: Beschattungsautomatik)

Verfasst: Do Mär 11, 2021 3:52 pm
von Robert_Mini
Du hast nicht genau gelesen: schon fertig, mich hat das nämlich auch gestört ;) ;)

lg
Robert

Re: Vollautomatische 24h Jalousiesteuerung (Baustein 3: Beschattungsautomatik)

Verfasst: Do Mär 11, 2021 9:51 pm
von Robert_Mini
Hab den Code gerade aktualisiert.
Lamelle wird nun 0 gesetzt, wenn Höhe < 1 (um Rundungsfehler auszuschließen).

lg
Robert

Re: Vollautomatische 24h Jalousiesteuerung (Baustein 3: Beschattungsautomatik)

Verfasst: Fr Mär 12, 2021 12:31 pm
von markusrohr
Guten Tag Robert,

darf ich fragen welche Zeilen Du genau geändert hast? Werden die Lamellen auf Position "0" gesetzt oder auf den Wert der im Parameter "LamPosOffen" definiert wird?

Bei mir liegt die "neutrale" Position bei "100"
Danke und liebe Grüsse
Markus

Re: Vollautomatische 24h Jalousiesteuerung (Baustein 3: Beschattungsautomatik)

Verfasst: Fr Mär 12, 2021 12:52 pm
von Robert_Mini
Hallo Markus!
Danke für die Frage. Du hast recht, fest auf 0 setzen ist nicht richtig.

Ich hab's im Code oben gleich angepasst.

Code: Alles auswählen

["Multiplexer",["$LamellePosOffen","$LamellePosStpOut"],"$LamellePosStpOut_Ges","$SetLam0"]
Im wesentlichen waren die Änderungen die 4 zusätzlichen Zeilen in Module, vermutlich aber auch eine neue Variable und damit auch eine Änderung bei den Outputs.

Sollte aber einfach zum drüberkopieren gehen, ist aber schon ein Weilchen her, daher bin ich nicht sicher, ob es da dann nicht ein Problem beim Speichern gab.

lg
Robert

Re: Vollautomatische 24h Jalousiesteuerung (Baustein 3: Beschattungsautomatik)

Verfasst: Fr Mär 12, 2021 5:19 pm
von StefanW
Vielen lieben Dank Robert für diesen tollen Baustein.

Wir müssen uns das mal ansehen, damit wir das bereits Out-of-the Box in die Logik integrieren

lg

Stefan

Re: Vollautomatische 24h Jalousiesteuerung (Baustein 3: Beschattungsautomatik)

Verfasst: Fr Mär 12, 2021 10:53 pm
von Hammer
Hallo Robert,

ich nutze deine Logik auch, vielen Dank dafür :clap:

Jetzt wollte ich diese Änderung einspielen, bekomme aber bei folgenden Zeilen ein error
Zeile 80 / 82 / 88 / 113 / 114

Code: Alles auswählen

["Polynomial","$HoeheOffen","$HoeheOffen_Rad",["$Konst0","$Pi_durch_180"]],
["Polynomial","$Tan_HoeheOffen","$Lamellenabstand",["$Konst0","$Lamellenbreite"]],
["Ratio","$Lamellenbreite","$Lamellenbreite_Neu","$Cos_Beta"],
["Comparator","$SonnenHoehe","$Hoehe_CResult","$HoeheOffenNeu"],
["Multiplexer",["$LamellePosStep","$Konst0"],"$LamellePosStepB","$Hoehe_CResult"],
In der Zeile 114 finde ich nur folgenden Fehler, das "$Hoehe_CResult" hier bool und kein float oder integer ist.
Falls dies ein Feher ist?
Oder woher kommt der Error, ich sehe sonst nichts.

Version Developer Edition (build time: 3 Feb 2021)

Grüße
Stefan