UPGRADE IP 9 verfügbar!
Timberwolf VISU jetzt mit NEUEM Layout Editor
Freie Anordnung, Reihenfolge und Größe der Widgets - viele weitere Verbesserungen
Infos im Wiki: https://elabnet.atlassian.net/l/cp/06SeuHRJ

NEU! Insider & Leistungsmerkmale FÜR ALLE freigeschaltet
Damit kann nun jeder das Upgrade vornehmen und VISU & IFTTT testen. Alle Info hier: viewtopic.php?f=8&t=5074

Beschattungsbaustein für Rolladen, aktuell: V3.3 (11.04.2020)

Hier stellen Foristen und Kunden Ihre EIGENEN Logikbausteine vor. Diese Logikbausteine stehen jedem im Rahmen der vom Autor eingeräumten / genannten Lizenz zur Verfügung.
Forumsregeln
  • Denke bitte an aussagekräftige Titel und gebe dort auch die [Firmware] an. Wenn ETS oder CometVisu beteiligt sind, dann auch deren Version
  • Bitte mache vollständige Angaben zu Deinem Server, dessen ID und dem Online-Status in Deiner Signatur. Hilfreich ist oft auch die Beschreibung der angeschlossener Hardware sowie die verwendeten Protokolle
  • Beschreibe Dein Projekt und Dein Problem bitte vollständig. Achte bitte darauf, dass auf Screenshots die Statusleiste sichtbar ist
  • Bitte sei stets freundlich und wohlwollend, bleibe beim Thema und unterschreibe mit deinem Vornamen. Bitte lese alle Regeln, die Du hier findest: https://wiki.timberwolf.io/Forenregeln

Ersteller
Dragonos2000
Reactions:
Beiträge: 2181
Registriert: So Aug 12, 2018 1:38 pm
Wohnort: Karlsruher Raum
Hat sich bedankt: 481 Mal
Danksagung erhalten: 889 Mal

Beschattungsbaustein für Rolladen, aktuell: V3.3 (11.04.2020)

#1

Beitrag von Dragonos2000 »

Dieser Thread soll das auffinden des Codes und der Beschreibung für den Beschattungsbaustein für Rolladen vereinfachen. Ich werde hier immer den aktuellen Stand und Doku posten, daher ist der Thread für Diskussionen gesperrt. Inhaltliche Diskussionen bitte im ursprünglichen Thread viewtopic.php?f=9&t=1245&start=30

############ V3.3 vom 11.04.2020 ############
Changelog:
  • Da es mir bei Änderungen selbst manchmal schwerfällt nachzuvollziehen, was der Baustein gerade warum (nicht) macht- insbesondere, wenn manche Eingänge mit Inhibit bis zum ersten Wert beaufschlagt sind- gibt es jetzt einen Statusausgang (Beschreibung s.u.).
Achtung: Der Code ist nicht kompatibel zu vorigen Bausteinversionen, lässt sich also nicht einfach drüberkopieren und es muss alles neu verknüpft werden!!!

Allgemeines:
  • Die Eingänge sind zum besseren Verständnis in Reihenfolge ihrer funktionalen Priorität implementiert: Je weiter unten der Eingang steht, desto höher ist seine funktionale Priorität, z.B. Hitzeschutz übersteuert normale sonnenabhänige Positionen, Fenster gekippt greift in die Tag/Nacht Positionen ein, usw...
  • Unbenutzte Funktionen mit ihren Parametern können unbelegt bleiben, der Baustein funktionert trotzdem. Also z.B. Frostschutz einfach nicht verbinden und nicht mit Parametern belegen, wenn man's nicht braucht.
  • Über das "+" Zeichen kann ein Inhibit hinzugefügt werden, damit kann der Baustein komplett stillgelegt werden.
  • Der Baustein kann durch die Glättung der zugeführten Helligkeit, einstellbare Verzögerungszeiten und Hystere flexibel auf die eigenen Bedürfnisse angepasst werden. Grundsätzlich ist aber zu bedenken, dass sich diese Parameter auch negativ beeinflussen können und starke Auswirkung auf das Ansprechverhalten haben. Daher: Langsam rantasten.
  • Der Statusausgang erlaubt Rückschlüsse warum welche Behanghöhe aus welchem Grund gerade gesendet wird.

Code: Alles auswählen

/**###################################################################################
#  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. Das enthaltene Icon steht unter der             #
#  Creative Commons Lizenz vom Typ Namensnennung und wurde farblich angepasst,       #
#  https://creativecommons.org/licenses/by-sa/3.0/deed.de, Autor: mfd.gfx@gmail.com  #
######################################################################################
#                Beschattungsbaustein für Rolladen Version 3.3                       #
#                                                                                    #
# Steuerung der Behanghöhen von Rolladen basierter Beschattung                       #
####################################################################################*/
{
      "Level": [
		["$Eins","integer",1],
		["$I_Sonne","bool",true],
		["$P_Thresh1_Pos","integer",50],
		["$P_Thresh2_Pos","integer",102],
		["$I_PosC","integer",200],
		["$I_PosD","integer",160],
		["$PosDwn","integer",255],
		["$PosUp","integer",0],
		["$P_PrioPosDay","integer",0],
		["$P_PrioPosNight","integer",0],
		["$P_MaxPos_Tilted","integer",100],
		["$P_Antifreeze_PosDwn","integer",255],
		["$P_Antifreeze_PosUp","integer",0],
		["$I_Lux","float",0],
		["$P_Lux_A","float",10000],
		["$P_Lux_B","float",50000],
		["$P_Hysteresis","float",1000],
		["$Lux_A_Hysteresis","float",0],
		["$Lux_B_Hysteresis","float",0],
		["$Light_CResult_A","bool",false],
		["$Light_CResult_B","bool",false],
		["$I_Day","bool",false],
		["$I_Disable","bool",false],
		["$Sun","bool",false],
		["$Shade","bool",false],
		["$Window_Status","bool",false],
		["$Lvl_1_select","integer",0],
		["$Lvl_1_result","integer",0],
		["$Lvl_1_delayed_result","integer",0],
		["$Lvl_1_T1_trigger","bool",false],
		["$Lvl_1_T2_trigger","bool",false],
		["$Lvl_1_T1_result","bool",false],
		["$Lvl_1_T2_result","bool",false],
		["$Lvl_1_delayed_select","bool",false],
		["$P_Holddown_up","integer",5],
		["$P_Holddown_dwn","integer",5],
		["$Lvl_2_select","integer",0],
		["$Lvl_2_result","integer",0],
		["$Lvl_3_select","integer",0],
		["$Lvl_3_result","integer",0],
		["$Lvl_3_result_MaxPos_Tilted","integer",0],
		["$Lvl_4_select","integer",0],
		["$Lvl_4_result","integer",0],
		["$Lvl_5_result_Antifreeze","integer",0],
		["$Lvl_5_select","integer",0],
		["$Lvl_5_result","integer",0],
		["$Output_window","integer",0],
		["$O_Status","integer",0],
		["$I_Presence","bool",false],
		["$I_Heat","bool",false],
		["$I_Prio_select","bool",false],
		["$I_Open","bool",false],
		["$I_Tilted","bool",false],
		["$I_Antifreeze_select","bool",false],
		["$I_Forced_mode","bool",false],
		["$P_Forced_mode_dir","bool",false],
		["$VAR<I_in_range!>","bool",false],
		["$VAR<Inhibit?>","bool",false]
      ],
      "Module": [
		["Break",["$VAR<Inhibit?>"]],
		["Polynomial","$Eins","$Lux_A_Hysteresis",["$P_Lux_A","-$P_Hysteresis"]],
		["Polynomial","$Eins","$Lux_B_Hysteresis",["$P_Lux_B","-$P_Hysteresis"]],
		["Comparator","$I_Lux","$Light_CResult_A",["$Lux_A_Hysteresis","$P_Lux_A"]],
		["Comparator","$I_Lux","$Light_CResult_B",["$Lux_B_Hysteresis","$P_Lux_B"]],
		["And",["-$I_Sonne","$Light_CResult_A"],"$Sun"],
		["BinaryMultiplexer",["$Sun","$Light_CResult_B"],"$Lvl_1_select"],
		["Multiplexer",["$PosUp","$P_Thresh1_Pos","$PosUp","$P_Thresh2_Pos"],"$Lvl_1_result","$Lvl_1_select"],
		["Comparator","$Lvl_1_delayed_result","$Lvl_1_T1_trigger","$Lvl_1_result"],			//Vergleich für auf
		["Comparator","$Lvl_1_result","$Lvl_1_T2_trigger","$Lvl_1_delayed_result"],			//Vergleich für ab
		["Monoflop","$Lvl_1_T1_trigger","$Lvl_1_T2_trigger","$Lvl_1_T1_result","$P_Holddown_up",3],
		["Monoflop","$Lvl_1_T2_trigger","$Lvl_1_T1_trigger","$Lvl_1_T2_result","$P_Holddown_dwn",3],
		["Or",["$Lvl_1_T1_result","$Lvl_1_T2_result"],"$Lvl_1_delayed_select"],
		["Multiplexer",["$Lvl_1_result","$Lvl_1_delayed_result"],"$Lvl_1_delayed_result","$Lvl_1_delayed_select"],
		["And",["$VAR<I_in_range!>"],"$Shade"],
		["BinaryMultiplexer",["$I_Presence","$Shade","$I_Heat"],"$Lvl_2_select"],
		["Multiplexer",["$PosUp","$PosUp","$Lvl_1_delayed_result","$Lvl_1_delayed_result","$I_PosC","$I_PosD","$I_PosC","$I_PosD"],"$Lvl_2_result","$Lvl_2_select"],
		["BinaryMultiplexer",["$I_Prio_select","$I_Day","$I_Disable"],"$Lvl_3_select"],
		["Multiplexer",["$PosDwn","$P_PrioPosNight","$Lvl_2_result","$P_PrioPosDay","$PosDwn","$PosDwn","$PosUp"],"$Lvl_3_result","$Lvl_3_select"],
		["Limiter","$Lvl_3_result","$Lvl_3_result_MaxPos_Tilted",0,["$PosUp", "$P_MaxPos_Tilted"]],
		["BinaryMultiplexer",["$I_Tilted","$I_Open"],"$Lvl_4_select"],
		["Multiplexer",["$Lvl_3_result","$Lvl_3_result_MaxPos_Tilted","$PosUp","$PosUp"],"$Lvl_4_result","$Lvl_4_select"],
		["BinaryMultiplexer",["$P_Forced_mode_dir","$I_Forced_mode"],"$Lvl_5_select"],
		["Multiplexer",["$Lvl_4_result","$Lvl_4_result","$PosUp","$PosDwn"],"$Lvl_5_result","$Lvl_5_select"],
		["Limiter","$Lvl_5_result","$Lvl_5_result_Antifreeze",0,["$P_Antifreeze_PosUp", "$P_Antifreeze_PosDwn"]],
		["Multiplexer",["$Lvl_5_result","$Lvl_5_result_Antifreeze"],"$Output_window","$I_Antifreeze_select"],
		["Or",["$I_Tilted","$I_Open"],"$Window_Status"],
		["BinaryMultiplexer",["$Lvl_1_delayed_select","$I_Prio_select","$Shade",0,"$Window_Status","-$I_Disable",0,0,"$I_Forced_mode","$Eins"],"$O_Status"]
       ],
      "Input": [
		["Lux","Helligkeitseingang","$I_Lux","c"],
		["LuxSchw1","Schwellwert für Behangposition 1","$P_Lux_A","u"],
		["LuxSchw2","Schwellwert für Behangposition 2","$P_Lux_B","u"],
		["Hysterese","Hysterese: Schwellwert - Hysterese","$P_Hysteresis","u"],
		["PosSchw1","Behangposition für Schwelle 1","$P_Thresh1_Pos","u"],
		["PosSchw2","Behangposition für Schwelle 2","$P_Thresh2_Pos","u"],
		["KeineSonne","Unterdrückt Beschattung, wenn keine Sonne (keine Sonne=True)","$I_Sonne","c"],
		["DelayAuf","Verzögerungszeit beim Zurückfahren des Behangs","$P_Holddown_up","u"],
		["DelayAb","Verzögerungszeit beim Ablassen des Behangs","$P_Holddown_dwn","u"],	
		["SonnenBed","Sonnenstands-Bedingungen, bspw. Kompassrichtung, Höhenwinkel (UND Verknüpft)","$VAR<I_in_range!>","c"],
		["Hitze","Hitzeschutz auslösen","$I_Heat","c"],
		["HPosAnw","Behanghöhe für Hitzeschutz bei Anwesenheit","$I_PosD","u"],
		["HPosAbw","Behanghöhe für Hitzeschutz bei Abwesenheit","$I_PosC","u"],
		["Praesenz","Hitzeschutz steuern nach Anwesenheit","$I_Presence","c"],
		["Priorität","Übersteuert Beschattungs- und Hitzeschutzpositionen mit einer Prioritätsstellung","$I_Prio_select","c"],
		["PrioPosTg","Höhe der Prioritätsstellung","$P_PrioPosDay","u"],
		["PrioPosNt","Höhe der Prioritätsstellung","$P_PrioPosNight","u"],
		["BeschattAus","Beschattung deaktivieren (deaktiviert=True)","$I_Disable","c"],
		["Tag/Nacht","Tag/Nacht Eingang","$I_Day","c"],
		["Gekippt","Fenster gekippt","$I_Tilted","c"],
		["Geöffnet","Fenster geöffnet","$I_Open","c"],
		["LimGekippt","Begrenzung untere Behangstellung bei gekipptem Fenster","$P_MaxPos_Tilted","u"],
		["ZwangStrg","Zwangsführung des Behangs aktivieren","$I_Forced_mode","c"],
		["ZwangAufAb","Richtung der Zwangsführung auf (False) oder ab (True)","$P_Forced_mode_dir","c"],
		["Frostschutz","Aktiviert Begrenzung der oberen und unteren Endlage als Anfrierschutz (Frostschutz=True)","$I_Antifreeze_select","c"],
		["FrostMaxAuf","Maximale Position obere Endlage bei Anfrierschutz","$P_Antifreeze_PosUp","u"],
		["FrostMaxAb","Maximale Position untere Endlage bei Anfrierschutz","$P_Antifreeze_PosDwn","u"],
		["Inhibit","INHIBIT","$VAR<Inhibit?>","u"]
      ],
      "Output": [
		["Pos_o_Fenster","Behangposition ohne Auswertung Fensterkontakte (Fassadensteuerung)","$Lvl_3_result","c"],
		["Pos_m_Fenster","Behangposition mit Auswertung Fensterkontakte (Fenstersteuerung)","$Output_window","c"],
		["Logikstatus","Ausgabe des aktuellen Zustands der Logik, bitweise kodiert (siehe Dokumentation)","$O_Status","c"]
      ],
	  "_Meta": {
		"_description": "Steuerung der Behanghöhen von Rolladen basierter Beschattung.",
		"Version": "3.3",
		"Icon": " data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iMjg4LjhwdCIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGhlaWdodD0iMjg4LjhwdCIgdmlld0JveD0iMCAwIDI4OC44IDI4OC44IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CiA8ZGVmcz4KICA8Y2xpcFBhdGggaWQ9IkNsaXAwIj4KICAgPHBhdGggZD0iTTAgMCBMMTc5Ljc4NCAwIEwxNzkuNzg0IDEyNi41MDkgTDAgMTI2LjUwOSBMMCAwIFoiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDU0Ljg0MDgsIDgxLjc1ODQpIi8+CiAgPC9jbGlwUGF0aD4KICA8Y2xpcFBhdGggaWQ9IkNsaXAxIj4KICAgPHBhdGggZD0iTTAgMCBMMTc5Ljc4NCAwIEwxNzkuNzg0IDEyNi41MDkgTDAgMTI2LjUwOSBMMCAwIFoiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDU0Ljg0MDgsIDgxLjc1ODQpIi8+CiAgPC9jbGlwUGF0aD4KIDwvZGVmcz4KIDxnIGlkPSJIaW50ZXJncnVuZCI+CiAgPGcgaWQ9IkdydXBwZTIiIGNsaXAtcGF0aD0idXJsKCNDbGlwMCkiPgogICA8ZyBpZD0iZnRzX3g1Rl9zaHV0dGVyIiBjbGlwLXBhdGg9InVybCgjQ2xpcDEpIj4KICAgIDxwYXRoIHN0eWxlPSJmaWxsOm5vbmU7c3Ryb2tlOiMxNjE0MTM7IHN0cm9rZS13aWR0aDo4OyBzdHJva2UtbGluZWNhcDpidXR0OyBzdHJva2UtbGluZWpvaW46bWl0ZXI7IHN0cm9rZS1kYXNoYXJyYXk6bm9uZTsiIGQ9Ik0xNTguNCAxMDAuMzIgQzE1OC40IDEwMy4yMzYgMTU2LjAzNiAxMDUuNiAxNTMuMTIgMTA1LjYgTDUuMjggMTA1LjYgQzIuMzYzMiAxMDUuNiAwIDEwMy4yMzYgMCAxMDAuMzIgTDAgNS4yOCBDMCAyLjM2NCAyLjM2NCAwIDUuMjggMCBMMTUzLjEyIDAgQzE1Ni4wMzYgMCAxNTguNCAyLjM2NDggMTU4LjQgNS4yOCBMMTU4LjQgMTAwLjMyIFoiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDY1LjIsIDk4LjY2NzIpIi8+CiAgICA8cGF0aCBzdHlsZT0iZmlsbDojMTYxNDEzOyBmaWxsLXJ1bGU6bm9uemVybztzdHJva2U6bm9uZTsiIGQ9Ik01LjE1ODQgOCBDOC4zMDY0IDggMTEuNDU0NCA4IDE0LjYwMjQgOCBDMTkuNzYwOCA4IDE5Ljc2MDggMCAxNC42MDI0IDAgQzExLjQ1NDQgMCA4LjMwNjQgMCA1LjE1ODQgMCBDMCAwIDAgOCA1LjE1ODQgOCBMNS4xNTg0IDggWiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMTM0Ljc5OCwgMTQ3LjM0MikiLz4KICAgIDxwYXRoIHN0eWxlPSJmaWxsOm5vbmU7c3Ryb2tlOiMxNjE0MTM7IHN0cm9rZS13aWR0aDo4OyBzdHJva2UtbGluZWNhcDpidXR0OyBzdHJva2UtbGluZWpvaW46bWl0ZXI7IHN0cm9rZS1kYXNoYXJyYXk6bm9uZTsiIGQ9Ik0wIDAgTDAgMTAyLjczNSAiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDE0NC41NzUsIDk4LjkxNikiLz4KICAgIDxwYXRoIHN0eWxlPSJmaWxsOiMxNjE0MTM7IGZpbGwtcnVsZTpub256ZXJvO3N0cm9rZTojMTYxNDEzOyBzdHJva2Utd2lkdGg6ODsgc3Ryb2tlLWxpbmVjYXA6YnV0dDsgc3Ryb2tlLWxpbmVqb2luOm1pdGVyOyBzdHJva2UtZGFzaGFycmF5Om5vbmU7IiBkPSJNMTY5LjU5OSAxNC4wMTIgQzE2OS41OTkgMTQuNDE5MiAxNjcuMDY4IDE0Ljc0OTYgMTYzLjk0NiAxNC43NDk2IEw1LjY1MjggMTQuNzQ5NiBDMi41MzA0IDE0Ljc0OTYgMCAxNC40MTg0IDAgMTQuMDEyIEwwIDAuNzM3NiBDMCAwLjMzMDQgMi41MzEyIDAgNS42NTI4IDAgTDE2My45NDYgMCBDMTY3LjA2OCAwIDE2OS41OTkgMC4zMzEyIDE2OS41OTkgMC43Mzc2IEwxNjkuNTk5IDE0LjAxMiBaIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSg1OS43MzM2LCA4NS43NTg0KSIvPgogICAgPHBhdGggc3R5bGU9ImZpbGw6IzE2MTQxMzsgZmlsbC1ydWxlOm5vbnplcm87c3Ryb2tlOm5vbmU7IiBkPSJNNS4xNTkyIDggQzQ0LjA4NjQgOCA4My4wMTM2IDguMDAwOCAxMjEuOTQgOC4wMDE2IEMxMzkuNTAyIDguMDAxNiAxNTcuMDY0IDguMDAxNiAxNzQuNjI2IDguMDAyNCBDMTc5Ljc4NCA4LjAwMjQgMTc5Ljc4NCAwLjAwMjQgMTc0LjYyNiAwLjAwMjQgQzEzNS42OTggMC4wMDI0IDk2Ljc3MiAwLjAwMTYgNTcuODQ0IDAuMDAwOCBDNDAuMjgyNCAwLjAwMDggMjIuNzIgMC4wMDA4IDUuMTU4NCAwIEMwIDAgMCA4IDUuMTU5MiA4IEw1LjE1OTIgOCBaIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSg1NC44NDA4LCAxMDYuNjY2KSIvPgogICAgPHBhdGggc3R5bGU9ImZpbGw6IzE2MTQxMzsgZmlsbC1ydWxlOm5vbnplcm87c3Ryb2tlOm5vbmU7IiBkPSJNNS4xNTkyIDggQzQ0LjA4NjQgOCA4My4wMTM2IDguMDAwOCAxMjEuOTQgOC4wMDE2IEMxMzkuNTAyIDguMDAxNiAxNTcuMDY0IDguMDAxNiAxNzQuNjI2IDguMDAyNCBDMTc5Ljc4NCA4LjAwMjQgMTc5Ljc4NCAwLjAwMjQgMTc0LjYyNiAwLjAwMjQgQzEzNS42OTggMC4wMDI0IDk2Ljc3MiAwLjAwMTYgNTcuODQ0IDAuMDAwOCBDNDAuMjgyNCAwLjAwMDggMjIuNzIgMC4wMDA4IDUuMTU4NCAwIEMwIDAgMCA4IDUuMTU5MiA4IEw1LjE1OTIgOCBaIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSg1NC44NDA4LCAxMTcuMDY2KSIvPgogICAgPHBhdGggc3R5bGU9ImZpbGw6IzE2MTQxMzsgZmlsbC1ydWxlOm5vbnplcm87c3Ryb2tlOm5vbmU7IiBkPSJNNS4xNTkyIDggQzQ0LjA4NjQgOCA4My4wMTM2IDguMDAwOCAxMjEuOTQgOC4wMDE2IEMxMzkuNTAyIDguMDAxNiAxNTcuMDY0IDguMDAxNiAxNzQuNjI2IDguMDAyNCBDMTc5Ljc4NCA4LjAwMjQgMTc5Ljc4NCAwLjAwMjQgMTc0LjYyNiAwLjAwMjQgQzEzNS42OTggMC4wMDI0IDk2Ljc3MiAwLjAwMTYgNTcuODQ0IDAuMDAwOCBDNDAuMjgyNCAwLjAwMDggMjIuNzIgMC4wMDA4IDUuMTU4NCAwIEMwIDAgMCA4IDUuMTU5MiA4IEw1LjE1OTIgOCBaIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSg1NC44NDA4LCAxMjcuNDY2KSIvPgogICAgPHBhdGggc3R5bGU9ImZpbGw6IzE2MTQxMzsgZmlsbC1ydWxlOm5vbnplcm87c3Ryb2tlOm5vbmU7IiBkPSJNNS4xNTkyIDcuOTk5MiBDNDQuMDg2NCA4IDgzLjAxMzYgOC4wMDA4IDEyMS45NCA4LjAwMTYgQzEzOS41MDIgOC4wMDE2IDE1Ny4wNjQgOC4wMDE2IDE3NC42MjYgOC4wMDI0IEMxNzkuNzg0IDguMDAyNCAxNzkuNzg0IDAuMDAyNCAxNzQuNjI2IDAuMDAyNCBDMTM1LjY5OCAwLjAwMjQgOTYuNzcyIDAuMDAxNiA1Ny44NDQgMC4wMDA4IEM0MC4yODI0IDAuMDAwOCAyMi43MiAwLjAwMDggNS4xNTg0IDAgQzAgMi44NDIxN2UtMTQgMCA3Ljk5OTIgNS4xNTkyIDcuOTk5MiBMNS4xNTkyIDcuOTk5MiBaIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSg1NC44NDA4LCAxMzcuODY2KSIvPgogICA8L2c+CiAgPC9nPgogPC9nPgo8L3N2Zz4K"
	  }
}
Beschreibung:

Bei der Tag/Nacht Steuerung den Behang in die untere Endlage ("Tag/Nacht" = False) zu fahren, erfolgt unabhängig vom Wert der Eingänge "Beschatten", "KeineSonne", "Hitzeschutz" oder "Prioritaet". Am Tag ("Tag/Nacht" = True) ist das Verhalten abhängig von den Eingängen "Beschatten", "KeineSonne", "Hitzeschutz" oder "Prioritaet".

Die Beschattung wird ausgeführt, wenn folgende Bedingungen erfüllt sind:
  • Beschatten = True
  • Eingänge SonnenBed innerhalb der definierten Grenzen (es können beliebig viele ergänzt werden, diese sind mit logischem UND verknüpft)
  • Helligkeitsschwelle 1 bzw. 2 überschritten
  • Tag/Nacht = True
  • KeineSonne = False
  • Geoeffnet = False
  • Zwangsführung = False
Der Eingang "KeineSonne" kann verwendet werden, falls eine direkte Erkennung gegeben ist, ob tatsächlich die Sonne scheint.
Die Beruhigung des Behangs, z.B. bei wechselnder Bewölkung, erfolgt mittels getrennt einstellbarer Zeitverzögerung zum Auf- /Abfahren des Behangs sowie einstellbarer Hysterese. Die Verzögerung greift für die Helligkeitsschwellen und den Eingang "KeineSonne".

Hitzeschutz hat eine höhere Priorität als die Beschattung und übersteuert deren Behanghöhen. Dabei werden feste Positionen entsprechend Anwesenheit ("Praesenz" = True) und Abwesenheit ("Praesenz" = False) angefahren. Die Idee dahinter ist, den Behang hiermit aggressiv in Stellungen zu bringen, in denen möglichst wenig Sonnenlicht einfallen kann- auch bei Fenstern, die nicht direkt beschienen werden (bspw. Reflektion an Nachbars Hauswand). Hitzeschutz ist aktiv, wenn folgende Bedingungen erfüllt sind:
  • Hitzeschutz = True
  • Tag/Nacht = True (bei False, wird der Behang in die untere Endlage gefahren)
  • Geoeffnet = False
In der Prioritätsstellung werden sowohl die Beschattungspositionen also auch Hitzeschutzpositionen mit einer einstellbaren festen Behanghöhe übersteuert (bspw. um im Schlafzimmer den Behang morgens nur ein Stück zu öffnen). Für Tag oder Nacht lassen sich unterschiedliche Behanghöhen definieren.
Priorität ist aktiv, wenn folgende Bedingungen erfüllt sind:
  • Prioritaet = True
  • Geoeffnet = False
  • Zwangsführung = False
"BeschattungAus" unterdrückt Beschattungspositionen, Hitzeschutz und Prioritätsstellungen. Tag/Nach-Steuerung, Fensterfunktionen, Zwangsführung und Frostschutz bleiben erhalten.

Wird "Gekippt" auf True gesetzt, werden die Positionen entsprechend Beschattung, Hitzeschutz und Priorität angefahren, jedoch auf eine einstellbare untere Stellung begrenzt (Lüftungsstellung).

Wird "Geöffnet" auf True gesetzt, wird der Behang in die obere Endlage gefahren, ungeachtet Tag/Nacht und irgendwelcher Beschattungs- oder Prioritätsstellungen.

"Zwangsführung" hat die höchste Priorität und fährt den Behang unabhängig anderer Eingänge in die obere oder untere Endlage ensprechend dem Eingang "ZwangUpDwn" (lediglich begrenzt durch Frostschutz, s.u. ).

"Frostschutz" begrenzt alle oberen bzw. unteren Endlagen (Anfrierschutz).

Setup:
Folgende Eingänge sollten mit Option "I" versehen werden, damit der Baustein erst losläuft, nachdem gültige Werte auf diesen Eingängen empfangen wurden:
  • Lux
  • Tag/Nacht
  • SonnenBed nach Bedarf (bitte selbst kritisch hinterfragen)
Es empfiehlt sich, dem Baustein einen geglätteten Helligkeitswert zuzuführen (Tiefpass mit T zwischen 120s und 750s).


Für die Eingänge "SonnenBed" (Für Sonnenhöhe, -Kompassrichtung, und was einem sonst noch einfällt,...) ist ein Eingangsmodifikator wie im Beispiel zu konfigurieren, damit der Astro-Baustein verbunden werden kann. Mann kann über mehrere "SonnenBed"-Eingänge und ggf. vorgeschaltete Und-/Oder-Gatter beliebige einzelne Bereiche des Sonnenstands ausblenden (bspw. Baum, der das Fenster zu manchen Zeiten beschattet).
Bild

Ausgang "Logikstatus"
Ein Wert =0 zeigt an, dass der Baustein noch nicht gestartet ist (bspw. ein Eingang steht auf Inhibit). Ein Wert >0 ist also schonmal gut. Die Zustände sind bitweise kodiert, ein gesetztes Bit heißt "aktiv":
b0 = Verzögerung greift gerade ein
b1 = Prioritätsstellung aktiv
b2 = SonnenBed erfüllt (alle)
b3 = Reserved
b4 = Fensterstellung aktiv (Fenster geöffnet)
b5 = Beschattungsfunktionen eingeschaltet
b6 = Reserved
b7 = Reserved
b8 = Zwangsführung aktiv
b9 = Baustein gestartet
Beispiel: Ist der Baustein gestartet und die Beschattungsfunktionen eingeschaltet, dann sind Bit 9 und Bit 5 gesetzt, als Integerwert wird daher 544 ausgegeben

Anregungen/Feedback im Diskussionsthread viewtopic.php?f=9&t=1245&start=30 willkommen.
Zuletzt geändert von Dragonos2000 am So Apr 12, 2020 12:29 pm, insgesamt 33-mal geändert.
Lg
Jochen
____________________________________________________________
TW 2600 #188
VPN offen, Zugriff jederzeit, Experimente jederzeit, Reboot jederzeit

Ersteller
Dragonos2000
Reactions:
Beiträge: 2181
Registriert: So Aug 12, 2018 1:38 pm
Wohnort: Karlsruher Raum
Hat sich bedankt: 481 Mal
Danksagung erhalten: 889 Mal

#2

Beitrag von Dragonos2000 »

Backlog für die nächsten Releases:
  1. Beseitigung Fehler bei Verarbeitung d. Hysterese(->erl. V2.1)
  2. Code aufräumen/optimieren(->erl. V2.2)
  3. Unterdrückung Hitzeschutzmodus am Abend/bei geringer Sonneneinstrahlung (->erl. V2.2, in V3.0 nicht mehr vorhanden und wird in einen Ergänzungsbaustein verlagert)
  4. Anfrierschutz im Winter (Begrenzung der oberen und unteren Endlage)(->erl. V3.0)
  5. Inverse Logik für Eingang "Sonne" (-> Keine Sonne) und "Beschatten" (->Beschattung aus). Dann nimmt der Baustein seine Arbeit auf, auch wenn diese Eingänge nicht paremetriert oder verbunden sind. (->erl. V3.0)
  6. Zwangsführung (Position unabhängig von Tag/Nacht/Hitze/Fenster/PrioPos, trotzdem Endlage begrenzt durch Anfrierschutz)(-> erl. V3.0)
  7. Separate Prio-Positionen für Tag/Nacht(->erl. V3.0)
  8. Eingang für Regensensor: Regen hebt Hitzeschutz auf (-> erl. als Ergänzungsbaustein)
  9. Dampening Mode: Begrenzung der Anzahl Moves (durchschreiten der Schwellwerte) in einem best. Zeitintervall
In Version 2 werden keine zusätzlichen Ein-/Ausgänge implementiert, wodurch der alte Code einfach mit dem neuen Code überschrieben werden kann, d.h. die Kompatibilität mit der Vorgängerversion des Bausteins ist erhalten. Andernfallst müssten alle Verknüpfungen und Parameter neu angelegt werden.

Funktionen, die zusätzliche Ein-/Ausgänge erfordern oder Änderungen an diesen werden mit V3.0 implementiert.
Zuletzt geändert von Dragonos2000 am Fr Sep 27, 2019 9:28 am, insgesamt 25-mal geändert.
Lg
Jochen
____________________________________________________________
TW 2600 #188
VPN offen, Zugriff jederzeit, Experimente jederzeit, Reboot jederzeit

Ersteller
Dragonos2000
Reactions:
Beiträge: 2181
Registriert: So Aug 12, 2018 1:38 pm
Wohnort: Karlsruher Raum
Hat sich bedankt: 481 Mal
Danksagung erhalten: 889 Mal

#3

Beitrag von Dragonos2000 »

Change:
Backlog in separaten Post umgezogen
Beschreibung für Setup im Eingangspost ergänzt.
Lg
Jochen
____________________________________________________________
TW 2600 #188
VPN offen, Zugriff jederzeit, Experimente jederzeit, Reboot jederzeit

Ersteller
Dragonos2000
Reactions:
Beiträge: 2181
Registriert: So Aug 12, 2018 1:38 pm
Wohnort: Karlsruher Raum
Hat sich bedankt: 481 Mal
Danksagung erhalten: 889 Mal

#4

Beitrag von Dragonos2000 »

Ich habe einen Fehler in der Verarbeitung der Hysterese entdeckt und daher eine Fehlerbereinigte Version ohne die Zusatzfunktionen released, um kompatibel zu bleiben.

Der Code ist entsprechend meiner Tests insofern kompatibel, dass er über V2.0 kopiert werden kann, ohne dass der Baustein gelöscht und neu angelegt werden muss, Parameter oder Verknüpfungen verloren gehen.
Lg
Jochen
____________________________________________________________
TW 2600 #188
VPN offen, Zugriff jederzeit, Experimente jederzeit, Reboot jederzeit

Ersteller
Dragonos2000
Reactions:
Beiträge: 2181
Registriert: So Aug 12, 2018 1:38 pm
Wohnort: Karlsruher Raum
Hat sich bedankt: 481 Mal
Danksagung erhalten: 889 Mal

#5

Beitrag von Dragonos2000 »

In Version 2 werden keine zusätzlichen Ein-/Ausgänge oder Änderungen an diesen implementiert, wodurch der alte Code einfach mit dem neuen Code überschrieben werden kann, d.h. die Kompatibilität mit der Vorgängerversion des Bausteins ist erhalten. Andernfalls müssten alle Verknüpfungen und Parameter neu angelegt werden.

Funktionen, die zusätzliche Ein-/Ausgänge erfordern oder Änderungen an diesen werden mit V3 implementiert.
Lg
Jochen
____________________________________________________________
TW 2600 #188
VPN offen, Zugriff jederzeit, Experimente jederzeit, Reboot jederzeit

Ersteller
Dragonos2000
Reactions:
Beiträge: 2181
Registriert: So Aug 12, 2018 1:38 pm
Wohnort: Karlsruher Raum
Hat sich bedankt: 481 Mal
Danksagung erhalten: 889 Mal

#6

Beitrag von Dragonos2000 »

############ V2.1 ############

Changelog:
  • Fehler bei Verarbeitung der Hysterese beseitigt
Der fehlerbereinigte Code lies sich bei meinen Tests über den Code der V2.0 kopieren und die Logik abspeichern, ohne dass es zu Fehlern kam oder Parameter/Verknüpfungen verloren gingen.

Code: Alles auswählen

{
      "Level": [
        	["$Null","integer",0],
        	["$Eins","integer",1],
		["$Zwei","integer",2],
		["$Sonne","bool",true],
		["$Azi_in_range","bool",false],
		["$Alti_in_range","bool",false],
		["$S1_Pos","integer",50],
		["$S2_Pos","integer",102],
		["$PosC","integer",200],
		["$PosD","integer",160],
		["$PosDwn","integer",255],
		["$PosUp","integer",0],
		["$PrioPos","integer",0],
		["$MaxPos_Tilted","integer",100],
		["$Lux","float",0],
		["$I_Lux_A","float",10000],
		["$I_Lux_B","float",50000],
		["$Hysteresis","float",1000],
		["$Lux_A_Hysteresis","float",0],
		["$Lux_B_Hysteresis","float",0],
		["$I3_Light_CResult_A","bool",false],
		["$I3_Light_CResult_B","bool",false],
		["$I4_Day","bool",false],
		["$I5_Auto","bool",false],
		["$Shade","bool",false],
		["$Sun_in_range_select","bool",false],
   		["$Lvl_1_select","integer",0],
		["$Lvl_1_result","integer",0],
		["$Lvl_1_delayed_result","integer",0],
		["$Lvl_1_T1_trigger","bool",false],
		["$Lvl_1_T2_trigger","bool",false],
		["$Lvl_1_delayed_select","bool",false],
		["$Sun_in_range_result","integer",0],
		["$Holddown_up","integer",5],
		["$Holddown_dn","integer",5],
		["$Lvl_2_select","integer",0],
		["$Lvl_2_result","integer",0],
		["$Lvl_2_PrioResult","integer",0],
		["$Lvl_3_select","integer",0],
		["$Lvl_3_result","integer",0],
		["$Lvl_3_result_MaxPos_Tilted","integer",0],
		["$Lvl_4_select","integer",0],
		["$Output_window","integer",0],
		["$Presence","bool",false],
		["$Heat","bool",false],
		["$Prio_select","bool",false],
		["$Open","bool",false],
		["$Tilted","bool",false],
		["$VAR<Inhibit?>","bool",false]
      ],
      "Module": [
		["Break",["$VAR<Inhibit?>"]],
		["Polynomial","$Eins","$Lux_A_Hysteresis",["$I_Lux_A","-$Hysteresis"]],
		["Polynomial","$Eins","$Lux_B_Hysteresis",["$I_Lux_B","-$Hysteresis"]],
		["Comparator","$Lux","$I3_Light_CResult_A",["$Lux_A_Hysteresis","$I_Lux_A"]],
		["Comparator","$Lux","$I3_Light_CResult_B",["$Lux_B_Hysteresis","$I_Lux_B"]],
		["And",["$Sonne","$I3_Light_CResult_A"],"$Shade"],
 		["Polynomial","$Zwei","$Lvl_1_select",["$Shade","$I3_Light_CResult_B"]],
		["Multiplexer",["$PosUp","$S1_Pos","$PosUp","$S2_Pos"],"$Lvl_1_result","$Lvl_1_select"],
		["Comparator","$Lvl_1_delayed_result","$Lvl_1_T1_trigger","$Lvl_1_result"],
		["Comparator","$Lvl_1_result","$Lvl_1_T2_trigger","$Lvl_1_delayed_result"],
		["Monoflop","$Lvl_1_T1_trigger","$Lvl_1_T2_trigger","$Lvl_1_T1_trigger","$Holddown_up",3],
		["Monoflop","$Lvl_1_T2_trigger","$Lvl_1_T1_trigger","$Lvl_1_T2_trigger","$Holddown_dn",3],
		["Or",["$Lvl_1_T1_trigger","$Lvl_1_T2_trigger"],"$Lvl_1_delayed_select"],
		["Multiplexer",["$Lvl_1_result","$Lvl_1_delayed_result"],"$Lvl_1_delayed_result","$Lvl_1_delayed_select"],
		["And",["$Alti_in_range","$Azi_in_range"],"$Sun_in_range_select"],
		["Multiplexer",["$Null","$Lvl_1_delayed_result"],"$Sun_in_range_result","$Sun_in_range_select"],	
		["Polynomial","$Zwei","$Lvl_2_select",["$Presence","$Heat"]],
		["Multiplexer",["$Sun_in_range_result","$Sun_in_range_result","$PosC","$PosD"],"$Lvl_2_result","$Lvl_2_select"],	
		["Multiplexer",["$Lvl_2_result","$PrioPos"],"$Lvl_2_PrioResult","$Prio_select"],	
		["Polynomial","$Zwei","$Lvl_3_select",["$I5_Auto","$I4_Day"]],
		["Multiplexer",["$PosDwn","$PosDwn","$PosUp","$Lvl_2_PrioResult"],"$Lvl_3_result","$Lvl_3_select"],
		["Limiter","$Lvl_3_result","$Lvl_3_result_MaxPos_Tilted",0,["$Null", "$MaxPos_Tilted"]],
		["Polynomial","$Zwei","$Lvl_4_select",["$Tilted","$Open"]],
		["Multiplexer",["$Lvl_3_result","$Lvl_3_result_MaxPos_Tilted","$PosUp","$PosUp"],"$Output_window","$Lvl_4_select"]
       ],
      "Input": [
		["SonnenHoehe","Sonne: Höhe über Horizont","$Alti_in_range","c"],
		["Sonnenrichtung","Sonne Kompassrichtung","$Azi_in_range","c"],
		["Sonne","Eingang, ob Sonne scheint (fix auf true, wenn unbenutzt)","$Sonne","c"],
        ["Lux","Helligkeitseingang","$Lux","c"],
		["LuxSchw1","Schwellwert für Behangposition 1","$I_Lux_A","u"],
		["LuxSchw2","Schwellwert für Behangposition 2","$I_Lux_B","u"],
		["Hysterese","Hysterese: Schwellwert - Hysterese","$Hysteresis","u"],
		["HöheSchw1","Behangposition für Schwelle 1","$S1_Pos","u"],
		["HöheSchw2","Behangposition für Schwelle 2","$S2_Pos","u"],
		["Praesenz","Hitzeschutz steuern nach Anwesenheit","$Presence","c"],
		["Hitzeschutz","Hitzeschutz auslösen","$Heat","c"],
		["HitzePosAn","Behanghöhe für Hitzeschutz bei Anwesenheit","$PosD","u"],
		["HitzePosAb","Behanghöhe für Hitzeschutz bei Abwesenheit","$PosC","u"],
		["Tag/Nacht","Tag/Nacht Eingang","$I4_Day","c"],
		["Beschatten","Beschattung aktivieren","$I5_Auto","c"],
		["Gekippt","Fenster gekippt","$Tilted","c"],
		["Geöffnet","Fenster geöffnet","$Open","c"],
		["MaxPosGekippt","Begrenzung untere Behangstellung bei gekipptem Fenster","$MaxPos_Tilted","u"],
		["DelayAuf","Verzögerungszeit beim Zurückfahren des Behangs","$Holddown_up","u"],
		["DelayAb","Verzögerungszeit beim Ablassen des Behangs","$Holddown_dn","u"],
		["Priorität","Übersteuert Beschattungs- und Hitzeschutzpositionen mit einer Prioritätsstellung","$Prio_select","c"],
		["PrioPos","Höhe der Prioritätsstellung","$PrioPos","u"],
		["Inhibit","INHIBIT","$VAR<Inhibit?>","u"]
      ],
      "Output": [
                ["Pos_o_Fenster","Behangposition ohne Auswertung Fensterkontakte (Fassadensteuerung)","$Lvl_3_result","c"],
		["Pos_m_Fenster","Behangposition mit Auswertung Fensterkontakte (Fenstersteuerung)","$Output_window","c"]
      ]
}
Beschreibung:

Bei der Tag/Nacht Steuerung den Behang in die untere Endlage ("Tag/Nacht" = False) zu fahren, erfolgt unabhängig vom Wert der Eingänge "Beschatten", "Sonne", "Hitzeschutz" oder "Prioritaet". Am Tag ("Tag/Nacht" = True) ist das Verhalten abhängig von den Eingängen "Beschatten", "Sonne", "Hitzeschutz" oder "Prioritaet".

Die Beschattung wird ausgeführt, wenn folgende Bedingungen erfüllt sind:
  • Beschatten = True
  • Sonnenhoehe innerhalb der definierten Grenzen
  • Sonnenrichtung innerhalb der definierten Grenzen
  • Helligkeitsschwelle 1 bzw. 2 überschritten
  • Tag/Nacht = True
  • Sonne = True
  • Geoeffnet = False
Der Eingang "Sonne" kann verwendet werden, falls eine direkte Erkennung gegeben ist, ob tatsächlich die Sonne scheint. Ist keine solche Logik bzw. kein entsprechender Sensor vorhanden, muss der Eingang fest auf "True" gesetzt werden.
Die Beruhigung des Behangs, z.B. bei wechselnder Bewölkung, erfolgt mittels getrennt einstellbarer Zeitverzögerung zum Auf- /Abfahren des Behangs sowie einstellbarer Hysterese. Die Verzögerung greift für die Helligkeitsschwellen und den Eingang "Sonne".

Hitzeschutz hat eine höhere Priorität als die Beschattung und übersteuert deren Behanghöhen. Dabei werden feste Positionen entsprechend Anwesenheit ("Praesenz" = True) und Abwesenheit ("Praesenz" = False) angefahren. Die Idee dahinter ist, den Behand hiermit aggressiv in Stellungen zu bringen, in denen möglichst wenig Sonnenlicht einfallen kann- auch bei Fenstern, die nicht direkt beschienen werden (bspw. Reflektion an Nachbars Hauswand). Hitzeschutz ist aktiv, wenn folgende Bedingungen erfüllt sind:
  • Hitzeschutz = True
  • Tag/Nacht = True (bei False, wird der Behang in die untere Endlage gefahren)
  • Geoeffnet = False
In der Prioritätsstellung werden sowohl die Beschattungspositionen also auch Hitzeschutzpositionen mit einer einstellbaren festen Behanghöhe übersteuert (bspw. um im Schlafzimmer den Behang morgens nur ein Stück zu öffnen).
Priorität ist aktiv, wenn folgende Bedingungen erfüllt sind:
  • Prioritaet = True
  • Tag/Nacht = True (bei False, wird der Behang in die untere Endlage gefahren)
  • Geoeffnet = False
Wird "Gekippt" auf True gesetzt, werden die Positionen entsprechend Beschattung, Hitzeschutz und Priorität angefahren, jedoch auf eine einstellbare untere Stellung begrenzt (Lüftungsstellung).

Wird "Geöffnet" auf True gesetzt, wird der Behang in die obere Endlage gefahren, ungeachtet des Werts anderer Eingänge.

Setup:
Nachfolgend ein Beispiel, wie der Baustein aufgesetzt werden kann. Unbenutzte Funktionen werden einfach nicht verbunden. Wichtig ist jedoch die Eingänge "Beschatten" und "Sonne" auf "True" zu setzen, wenn bspw. keine weitere Logik eingreifen soll.

Ferner ist zu empfehlen, die Eingangsparameter wie gelb markiert zu setzen, damit der Baustein erst losläuft, wenn die wesentlichen Eingänge valide Werte aufweisen (Option "I") und auf bestimmte Ereignisse sofort reagieren kann (Option "c"). Es empfiehlt sich, dem Baustein einen geglätteten Helligkeitswert zuzuführen (Tiefpass mit T zwischen 120s und 750s). Der Baustein kann durch die Glättung der zugeführten Helligkeit, einstellbare Verzögerungszeiten und Hystere flexibel auf die eigenen Bedürfnisse angepasst werden. Grundsätzlich ist aber zu bedenken, dass sich diese Parameter auch negativ beeinflussen können und starke Auswirkung auf das Ansprechverhalten haben. Daher: Langsam rantasten.

Für Sonnenhöhe und Sonnenrichtung ist ein Eingangsmodifikator wie im Beispiel zu konfigurieren, damit der Astro-Baustein verbunden werden kann.
Bild

Bild
Lg
Jochen
____________________________________________________________
TW 2600 #188
VPN offen, Zugriff jederzeit, Experimente jederzeit, Reboot jederzeit

Ersteller
Dragonos2000
Reactions:
Beiträge: 2181
Registriert: So Aug 12, 2018 1:38 pm
Wohnort: Karlsruher Raum
Hat sich bedankt: 481 Mal
Danksagung erhalten: 889 Mal

#7

Beitrag von Dragonos2000 »

############ V3.0 ############

Changelog:
  • Inverse Logik für Eingang "Sonne" (->KeineSonne) und "Beschatten" (->BeschattungAus)
  • Neu: Anfrierschutz im Winter (Begrenzung der oberen und unteren Endlage)
  • Neu: Zwangsführung in die Endlagen (Begrenzt durch Anfrierschutz)
  • Unterscheidung PrioPos Tag/Nacht
Achtung: Der Code ist nicht kompatibel zum V2.1 Baustein, lässt sich also nicht einfach drüberkopieren!!!
Der Code zur V2.1 findet sich in einem Beitrag weiter unten.

Allgemeines:
  • Die Eingänge sind zum besseren Verständnis in Reihenfolge der Priorität gelistet (höchste unten), z.B. Priorität übersteuert Hitzeschutz, Fenster gekippt greift in die Tag/Nacht Positionen ein, usw.
  • Unbenutzte Funktionen mit ihren Parametern können unbelegt bleiben, der Baustein funktionert trotzdem.
  • Über das "+" Zeichen kann ein Inhibit hinzugefügt werden, damit kann der Baustein komplett stillgelegt werden.
  • Der Baustein kann durch die Glättung der zugeführten Helligkeit, einstellbare Verzögerungszeiten und Hysterese flexibel auf die eigenen Bedürfnisse angepasst werden. Grundsätzlich ist aber zu bedenken, dass sich diese Parameter auch negativ beeinflussen können und starke Auswirkung auf das zeitliche Ansprechverhalten haben. Daher: Langsam rantasten.

Code: Alles auswählen

{
      "Level": [
        ["$Eins","integer",1],
		["$I_Sonne","bool",true],
		["$I_Azi_in_range","bool",false],
		["$I_Alti_in_range","bool",false],
		["$P_Thresh1_Pos","integer",50],
		["$P_Thresh2_Pos","integer",102],
		["$I_PosC","integer",200],
		["$I_PosD","integer",160],
		["$PosDwn","integer",255],
		["$PosUp","integer",0],
		["$P_PrioPosDay","integer",0],
		["$P_PrioPosNight","integer",0],
		["$P_MaxPos_Tilted","integer",100],
		["$P_Antifreeze_PosDwn","integer",255],
		["$P_Antifreeze_PosUp","integer",0],
		["$I_Lux","float",0],
		["$I_Lux_A","float",10000],
		["$I_Lux_B","float",50000],
		["$P_Hysteresis","float",1000],
		["$Lux_A_Hysteresis","float",0],
		["$Lux_B_Hysteresis","float",0],
		["$Light_CResult_A","bool",false],
		["$Light_CResult_B","bool",false],
		["$I_Day","bool",false],
		["$I_Disable","bool",false],
		["$Sun","bool",false],
		["$Shade","bool",false],
        ["$Lvl_1_select","integer",0],
		["$Lvl_1_result","integer",0],
		["$Lvl_1_delayed_result","integer",0],
		["$Lvl_1_T1_trigger","bool",false],
		["$Lvl_1_T2_trigger","bool",false],
		["$Lvl_1_delayed_select","bool",false],
		["$P_Holddown_up","integer",5],
		["$P_Holddown_dwn","integer",5],
		["$Lvl_2_select","integer",0],
		["$Lvl_2_result","integer",0],
		["$Lvl_3_select","integer",0],
		["$Lvl_3_result","integer",0],
		["$Lvl_3_result_MaxPos_Tilted","integer",0],
		["$Lvl_4_select","integer",0],
		["$Lvl_4_result","integer",0],
		["$Lvl_5_result_Antifreeze","integer",0],
		["$Lvl_5_select","integer",0],
		["$Lvl_5_result","integer",0],
		["$Output_window","integer",0],
		["$I_Presence","bool",false],
		["$I_Heat","bool",false],
		["$I_Prio_select","bool",false],
		["$I_Open","bool",false],
		["$I_Tilted","bool",false],
		["$I_Antifreeze_select","bool",false],
		["$I_Forced_mode","bool",false],
		["$P_Forced_mode_dir","bool",false],
		["$VAR<Inhibit?>","bool",false]
      ],
      "Module": [
		["Break",["$VAR<Inhibit?>"]],
		["Polynomial","$Eins","$Lux_A_Hysteresis",["$I_Lux_A","-$P_Hysteresis"]],
		["Polynomial","$Eins","$Lux_B_Hysteresis",["$I_Lux_B","-$P_Hysteresis"]],
		["Comparator","$I_Lux","$Light_CResult_A",["$Lux_A_Hysteresis","$I_Lux_A"]],
		["Comparator","$I_Lux","$Light_CResult_B",["$Lux_B_Hysteresis","$I_Lux_B"]],
		["And",["-$I_Sonne","$Light_CResult_A"],"$Sun"],
		["BinaryMultiplexer",["$Sun","$Light_CResult_B"],"$Lvl_1_select"],
		["Multiplexer",["$PosUp","$P_Thresh1_Pos","$PosUp","$P_Thresh2_Pos"],"$Lvl_1_result","$Lvl_1_select"],
		["Comparator","$Lvl_1_delayed_result","$Lvl_1_T1_trigger","$Lvl_1_result"],
		["Comparator","$Lvl_1_result","$Lvl_1_T2_trigger","$Lvl_1_delayed_result"],
		["Monoflop","$Lvl_1_T1_trigger","$Lvl_1_T2_trigger","$Lvl_1_T1_trigger","$P_Holddown_up",3],
		["Monoflop","$Lvl_1_T2_trigger","$Lvl_1_T1_trigger","$Lvl_1_T2_trigger","$P_Holddown_dwn",3],
		["Or",["$Lvl_1_T1_trigger","$Lvl_1_T2_trigger"],"$Lvl_1_delayed_select"],
		["Multiplexer",["$Lvl_1_result","$Lvl_1_delayed_result"],"$Lvl_1_delayed_result","$Lvl_1_delayed_select"],
		["And",["$I_Alti_in_range","$I_Azi_in_range"],"$Shade"],
		["BinaryMultiplexer",["$I_Presence","$Shade","$I_Heat"],"$Lvl_2_select"],
		["Multiplexer",["$PosUp","$PosUp","$Lvl_1_delayed_result","$Lvl_1_delayed_result","$I_PosC","$I_PosD","$I_PosC","$I_PosD"],"$Lvl_2_result","$Lvl_2_select"],
		["BinaryMultiplexer",["$I_Prio_select","$I_Day","$I_Disable"],"$Lvl_3_select"],
		["Multiplexer",["$PosDwn","$P_PrioPosNight","$Lvl_2_result","$P_PrioPosDay","$PosDwn","$PosDwn","$PosUp"],"$Lvl_3_result","$Lvl_3_select"],
		["Limiter","$Lvl_3_result","$Lvl_3_result_MaxPos_Tilted",0,["$PosUp", "$P_MaxPos_Tilted"]],
		["BinaryMultiplexer",["$I_Tilted","$I_Open"],"$Lvl_4_select"],
		["Multiplexer",["$Lvl_3_result","$Lvl_3_result_MaxPos_Tilted","$PosUp","$PosUp"],"$Lvl_4_result","$Lvl_4_select"],
		["BinaryMultiplexer",["$P_Forced_mode_dir","$I_Forced_mode"],"$Lvl_5_select"],
		["Multiplexer",["$Lvl_4_result","$Lvl_4_result","$PosUp","$PosDwn"],"$Lvl_5_result","$Lvl_5_select"],
		["Limiter","$Lvl_5_result","$Lvl_5_result_Antifreeze",0,["$P_Antifreeze_PosUp", "$P_Antifreeze_PosDwn"]],
		["Multiplexer",["$Lvl_5_result","$Lvl_5_result_Antifreeze"],"$Output_window","$I_Antifreeze_select"]
       ],
      "Input": [
		["Lux","Helligkeitseingang","$I_Lux","c"],
		["LuxSchw1","Schwellwert für Behangposition 1","$I_Lux_A","u"],
		["LuxSchw2","Schwellwert für Behangposition 2","$I_Lux_B","u"],
		["Hysterese","Hysterese: Schwellwert - Hysterese","$P_Hysteresis","u"],
		["HöheSchw1","Behangposition für Schwelle 1","$P_Thresh1_Pos","u"],
		["HöheSchw2","Behangposition für Schwelle 2","$P_Thresh2_Pos","u"],
		["KeineSonne","Unterdrückt Beschattung, wenn keine Sonne (keine Sonne=True)","$I_Sonne","c"],
		["DelayAuf","Verzögerungszeit beim Zurückfahren des Behangs","$P_Holddown_up","u"],
		["DelayAb","Verzögerungszeit beim Ablassen des Behangs","$P_Holddown_dwn","u"],	
		["SonnenHoehe","Sonne: Höhe über Horizont","$I_Alti_in_range","c"],
		["Sonnenrichtung","Sonne Kompassrichtung","$I_Azi_in_range","c"],
		["Hitzeschutz","Hitzeschutz auslösen","$I_Heat","c"],
		["HitzePosAn","Behanghöhe für Hitzeschutz bei Anwesenheit","$I_PosD","u"],
		["HitzePosAb","Behanghöhe für Hitzeschutz bei Abwesenheit","$I_PosC","u"],
		["Praesenz","Hitzeschutz steuern nach Anwesenheit","$I_Presence","c"],
		["Priorität","Übersteuert Beschattungs- und Hitzeschutzpositionen mit einer Prioritätsstellung","$I_Prio_select","c"],
		["PrioPosTag","Höhe der Prioritätsstellung","$P_PrioPosDay","u"],
		["PrioPosNacht","Höhe der Prioritätsstellung","$P_PrioPosNight","u"],
		["BeschattungAus","Beschattung deaktivieren (deaktiviert=True)","$I_Disable","c"],
		["Tag/Nacht","Tag/Nacht Eingang","$I_Day","c"],
		["Gekippt","Fenster gekippt","$I_Tilted","c"],
		["Geöffnet","Fenster geöffnet","$I_Open","c"],
		["MaxPosGekippt","Begrenzung untere Behangstellung bei gekipptem Fenster","$P_MaxPos_Tilted","u"],
		["Zwangsführung","Zwangsführung des Behangs aktivieren","$I_Forced_mode","c"],
		["ZwangUpDwn","Richtung der Zwangsführung auf (False) oder ab (True)","$P_Forced_mode_dir","c"],
		["Frostschutz","Aktiviert Begrenzung der oberen und unteren Endlage als Anfrierschutz (Frostschutz=True)","$I_Antifreeze_select","c"],
		["FrostMaxAuf","Maximale Position obere Endlage bei Anfrierschutz","$P_Antifreeze_PosUp","u"],
		["FrostMaxAb","Maximale Position untere Endlage bei Anfrierschutz","$P_Antifreeze_PosDwn","u"],
		["Inhibit","INHIBIT","$VAR<Inhibit?>","u"]
      ],
      "Output": [
		["Pos_o_Fenster","Behangposition ohne Auswertung Fensterkontakte (Fassadensteuerung)","$Lvl_3_result","c"],
		["Pos_m_Fenster","Behangposition mit Auswertung Fensterkontakte (Fenstersteuerung)","$Output_window","c"]
      ]
}
Beschreibung:

Bei der Tag/Nacht Steuerung den Behang in die untere Endlage ("Tag/Nacht" = False) zu fahren, erfolgt unabhängig vom Wert der Eingänge "Beschatten", "KeineSonne", "Hitzeschutz" oder "Prioritaet". Am Tag ("Tag/Nacht" = True) ist das Verhalten abhängig von den Eingängen "Beschatten", "KeineSonne", "Hitzeschutz" oder "Prioritaet".

Die Beschattung wird ausgeführt, wenn folgende Bedingungen erfüllt sind:
  • Beschatten = True
  • Sonnenhoehe innerhalb der definierten Grenzen
  • Sonnenrichtung innerhalb der definierten Grenzen
  • Helligkeitsschwelle 1 bzw. 2 überschritten
  • Tag/Nacht = True
  • KeineSonne = False
  • Geoeffnet = False
  • Zwangsführung = False
Der Eingang "KeineSonne" kann verwendet werden, falls eine direkte Erkennung gegeben ist, ob tatsächlich die Sonne scheint.
Die Beruhigung des Behangs, z.B. bei wechselnder Bewölkung, erfolgt mittels getrennt einstellbarer Zeitverzögerung zum Auf- /Abfahren des Behangs sowie einstellbarer Hysterese. Die Verzögerung greift für die Helligkeitsschwellen und den Eingang "KeineSonne".

Hitzeschutz hat eine höhere Priorität als die Beschattung und übersteuert deren Behanghöhen. Dabei werden feste Positionen entsprechend Anwesenheit ("Praesenz" = True) und Abwesenheit ("Praesenz" = False) angefahren. Die Idee dahinter ist, den Behang hiermit aggressiv in Stellungen zu bringen, in denen möglichst wenig Sonnenlicht einfallen kann- auch bei Fenstern, die nicht direkt beschienen werden (bspw. Reflektion an Nachbars Hauswand). Hitzeschutz ist aktiv, wenn folgende Bedingungen erfüllt sind:
  • Hitzeschutz = True
  • Tag/Nacht = True (bei False, wird der Behang in die untere Endlage gefahren)
  • Geoeffnet = False
In der Prioritätsstellung werden sowohl die Beschattungspositionen also auch Hitzeschutzpositionen mit einer einstellbaren festen Behanghöhe übersteuert (bspw. um im Schlafzimmer den Behang morgens nur ein Stück zu öffnen). Für Tag oder Nacht lassen sich unterschiedliche Behanghöhen definieren.
Priorität ist aktiv, wenn folgende Bedingungen erfüllt sind:
  • Prioritaet = True
  • Geoeffnet = False
  • Zwangsführung = False
"BeschattungAus" unterdrückt Beschattungspositionen, Hitzeschutz und Prioritätsstellungen. Tag/Nach-Steuerung, Fensterfunktionen, Zwangsführung und Frostschutz bleiben erhalten.

Wird "Gekippt" auf True gesetzt, werden die Positionen entsprechend Beschattung, Hitzeschutz und Priorität angefahren, jedoch auf eine einstellbare untere Stellung begrenzt (Lüftungsstellung).

Wird "Geöffnet" auf True gesetzt, wird der Behang in die obere Endlage gefahren, ungeachtet Tag/Nacht und irgendwelcher Beschattungs- oder Prioritätsstellungen.

"Zwangsführung" hat die höchste Priorität und fährt den Behang unabhängig anderer Eingänge in die obere oder untere Endlage ensprechend dem Eingang "ZwangUpDwn" (lediglich begrenzt durch Frostschutz, s.u. ).

"Frostschutz" begrenzt alle oberen bzw. unteren Endlagen (Anfrierschutz).


Setup:
Folgende Eingänge sollten mit Option "I" versehen werden, damit der Baustein erst losläuft, nachdem gültige Werte auf diesen Eingängen empfangen wurden:
  • Sonnenhoehe
  • Sonnenrichtung
  • Lux
  • Tag/Nacht
Es empfiehlt sich, dem Baustein einen geglätteten Helligkeitswert zuzuführen (Tiefpass mit T zwischen 120s und 750s).

Für Sonnenhöhe und Sonnenrichtung ist ein Eingangsmodifikator wie im Beispiel zu konfigurieren, damit der Astro-Baustein verbunden werden kann.
Bild

Anregungen/Feedback im Diskussionsthread viewtopic.php?f=9&t=1245&start=30 willkommen.
Lg
Jochen
____________________________________________________________
TW 2600 #188
VPN offen, Zugriff jederzeit, Experimente jederzeit, Reboot jederzeit

Ersteller
Dragonos2000
Reactions:
Beiträge: 2181
Registriert: So Aug 12, 2018 1:38 pm
Wohnort: Karlsruher Raum
Hat sich bedankt: 481 Mal
Danksagung erhalten: 889 Mal

#8

Beitrag von Dragonos2000 »

############ V3.1 ############

Changelog:
  • Sonnenstands-Parameter ohne Verzögerung (Höhe/Kompassrichtung und weitere) können nun individuell nach Bedarf hinzugefügt werden. Mindestens ein Parameter ist nötig.
  • Einige Bezeichnungen angepasst
Achtung: Der Code ist nicht kompatibel zum V3.0 Baustein, lässt sich also nicht einfach drüberkopieren!!!
Der ältere Code findet sich in einem Beitrag weiter unten.

Allgemeines:
  • Die Eingänge sind zum besseren Verständnis in Reihenfolge der Priorität gelistet (höchste unten), z.B. Priorität übersteuert Hitzeschutz, Fenster gekippt greift in die Tag/Nacht Positionen ein, usw.
  • Unbenutzte Funktionen mit ihren Parametern können unbelegt bleiben, der Baustein funktionert trotzdem.
  • Über das "+" Zeichen kann ein Inhibit hinzugefügt werden, damit kann der Baustein komplett stillgelegt werden.
  • Der Baustein kann durch die Glättung der zugeführten Helligkeit, einstellbare Verzögerungszeiten und Hysterese flexibel auf die eigenen Bedürfnisse angepasst werden. Grundsätzlich ist aber zu bedenken, dass sich diese Parameter auch negativ beeinflussen können und starke Auswirkung auf das zeitliche Ansprechverhalten haben. Daher: Langsam rantasten.

Code: Alles auswählen

{
      "Level": [
		["$Eins","integer",1],
		["$I_Sonne","bool",true],
		["$P_Thresh1_Pos","integer",50],
		["$P_Thresh2_Pos","integer",102],
		["$I_PosC","integer",200],
		["$I_PosD","integer",160],
		["$PosDwn","integer",255],
		["$PosUp","integer",0],
		["$P_PrioPosDay","integer",0],
		["$P_PrioPosNight","integer",0],
		["$P_MaxPos_Tilted","integer",100],
		["$P_Antifreeze_PosDwn","integer",255],
		["$P_Antifreeze_PosUp","integer",0],
		["$I_Lux","float",0],
		["$P_Lux_A","float",10000],
		["$P_Lux_B","float",50000],
		["$P_Hysteresis","float",1000],
		["$Lux_A_Hysteresis","float",0],
		["$Lux_B_Hysteresis","float",0],
		["$Light_CResult_A","bool",false],
		["$Light_CResult_B","bool",false],
		["$I_Day","bool",false],
		["$I_Disable","bool",false],
		["$Sun","bool",false],
		["$Shade","bool",false],
		["$Lvl_1_select","integer",0],
		["$Lvl_1_result","integer",0],
		["$Lvl_1_delayed_result","integer",0],
		["$Lvl_1_T1_trigger","bool",false],
		["$Lvl_1_T2_trigger","bool",false],
		["$Lvl_1_delayed_select","bool",false],
		["$P_Holddown_up","integer",5],
		["$P_Holddown_dwn","integer",5],
		["$Lvl_2_select","integer",0],
		["$Lvl_2_result","integer",0],
		["$Lvl_3_select","integer",0],
		["$Lvl_3_result","integer",0],
		["$Lvl_3_result_MaxPos_Tilted","integer",0],
		["$Lvl_4_select","integer",0],
		["$Lvl_4_result","integer",0],
		["$Lvl_5_result_Antifreeze","integer",0],
		["$Lvl_5_select","integer",0],
		["$Lvl_5_result","integer",0],
		["$Output_window","integer",0],
		["$I_Presence","bool",false],
		["$I_Heat","bool",false],
		["$I_Prio_select","bool",false],
		["$I_Open","bool",false],
		["$I_Tilted","bool",false],
		["$I_Antifreeze_select","bool",false],
		["$I_Forced_mode","bool",false],
		["$P_Forced_mode_dir","bool",false],
		["$VAR<I_in_range!>","bool",false],
		["$VAR<Inhibit?>","bool",false]
      ],
      "Module": [
		["Break",["$VAR<Inhibit?>"]],
		["Polynomial","$Eins","$Lux_A_Hysteresis",["$P_Lux_A","-$P_Hysteresis"]],
		["Polynomial","$Eins","$Lux_B_Hysteresis",["$P_Lux_B","-$P_Hysteresis"]],
		["Comparator","$I_Lux","$Light_CResult_A",["$Lux_A_Hysteresis","$P_Lux_A"]],
		["Comparator","$I_Lux","$Light_CResult_B",["$Lux_B_Hysteresis","$P_Lux_B"]],
		["And",["-$I_Sonne","$Light_CResult_A"],"$Sun"],
		["BinaryMultiplexer",["$Sun","$Light_CResult_B"],"$Lvl_1_select"],
		["Multiplexer",["$PosUp","$P_Thresh1_Pos","$PosUp","$P_Thresh2_Pos"],"$Lvl_1_result","$Lvl_1_select"],
		["Comparator","$Lvl_1_delayed_result","$Lvl_1_T1_trigger","$Lvl_1_result"],
		["Comparator","$Lvl_1_result","$Lvl_1_T2_trigger","$Lvl_1_delayed_result"],
		["Monoflop","$Lvl_1_T1_trigger","$Lvl_1_T2_trigger","$Lvl_1_T1_trigger","$P_Holddown_up",3],
		["Monoflop","$Lvl_1_T2_trigger","$Lvl_1_T1_trigger","$Lvl_1_T2_trigger","$P_Holddown_dwn",3],
		["Or",["$Lvl_1_T1_trigger","$Lvl_1_T2_trigger"],"$Lvl_1_delayed_select"],
		["Multiplexer",["$Lvl_1_result","$Lvl_1_delayed_result"],"$Lvl_1_delayed_result","$Lvl_1_delayed_select"],
		["And",["$VAR<I_in_range!>"],"$Shade"],
		["BinaryMultiplexer",["$I_Presence","$Shade","$I_Heat"],"$Lvl_2_select"],
		["Multiplexer",["$PosUp","$PosUp","$Lvl_1_delayed_result","$Lvl_1_delayed_result","$I_PosC","$I_PosD","$I_PosC","$I_PosD"],"$Lvl_2_result","$Lvl_2_select"],
		["BinaryMultiplexer",["$I_Prio_select","$I_Day","$I_Disable"],"$Lvl_3_select"],
		["Multiplexer",["$PosDwn","$P_PrioPosNight","$Lvl_2_result","$P_PrioPosDay","$PosDwn","$PosDwn","$PosUp"],"$Lvl_3_result","$Lvl_3_select"],
		["Limiter","$Lvl_3_result","$Lvl_3_result_MaxPos_Tilted",0,["$PosUp", "$P_MaxPos_Tilted"]],
		["BinaryMultiplexer",["$I_Tilted","$I_Open"],"$Lvl_4_select"],
		["Multiplexer",["$Lvl_3_result","$Lvl_3_result_MaxPos_Tilted","$PosUp","$PosUp"],"$Lvl_4_result","$Lvl_4_select"],
		["BinaryMultiplexer",["$P_Forced_mode_dir","$I_Forced_mode"],"$Lvl_5_select"],
		["Multiplexer",["$Lvl_4_result","$Lvl_4_result","$PosUp","$PosDwn"],"$Lvl_5_result","$Lvl_5_select"],
		["Limiter","$Lvl_5_result","$Lvl_5_result_Antifreeze",0,["$P_Antifreeze_PosUp", "$P_Antifreeze_PosDwn"]],
		["Multiplexer",["$Lvl_5_result","$Lvl_5_result_Antifreeze"],"$Output_window","$I_Antifreeze_select"]
       ],
      "Input": [
		["Lux","Helligkeitseingang","$I_Lux","c"],
		["LuxSchw1","Schwellwert für Behangposition 1","$P_Lux_A","u"],
		["LuxSchw2","Schwellwert für Behangposition 2","$P_Lux_B","u"],
		["Hysterese","Hysterese: Schwellwert - Hysterese","$P_Hysteresis","u"],
		["PosSchw1","Behangposition für Schwelle 1","$P_Thresh1_Pos","u"],
		["PosSchw2","Behangposition für Schwelle 2","$P_Thresh2_Pos","u"],
		["KeineSonne","Unterdrückt Beschattung, wenn keine Sonne (keine Sonne=True)","$I_Sonne","c"],
		["DelayAuf","Verzögerungszeit beim Zurückfahren des Behangs","$P_Holddown_up","u"],
		["DelayAb","Verzögerungszeit beim Ablassen des Behangs","$P_Holddown_dwn","u"],	
		["SonnenBed","Sonnenstands-Bedingungen, bspw. Kompassrichtung, Höhenwinkel (UND Verknüpft)","$VAR<I_in_range!>","c"],
		["Hitze","Hitzeschutz auslösen","$I_Heat","c"],
		["HPosAnw","Behanghöhe für Hitzeschutz bei Anwesenheit","$I_PosD","u"],
		["HPosAbw","Behanghöhe für Hitzeschutz bei Abwesenheit","$I_PosC","u"],
		["Praesenz","Hitzeschutz steuern nach Anwesenheit","$I_Presence","c"],
		["Priorität","Übersteuert Beschattungs- und Hitzeschutzpositionen mit einer Prioritätsstellung","$I_Prio_select","c"],
		["PrioPosTg","Höhe der Prioritätsstellung","$P_PrioPosDay","u"],
		["PrioPosNt","Höhe der Prioritätsstellung","$P_PrioPosNight","u"],
		["BeschattAus","Beschattung deaktivieren (deaktiviert=True)","$I_Disable","c"],
		["Tag/Nacht","Tag/Nacht Eingang","$I_Day","c"],
		["Gekippt","Fenster gekippt","$I_Tilted","c"],
		["Geöffnet","Fenster geöffnet","$I_Open","c"],
		["LimGekippt","Begrenzung untere Behangstellung bei gekipptem Fenster","$P_MaxPos_Tilted","u"],
		["ZwangStrg","Zwangsführung des Behangs aktivieren","$I_Forced_mode","c"],
		["ZwangAufAb","Richtung der Zwangsführung auf (False) oder ab (True)","$P_Forced_mode_dir","c"],
		["Frostschutz","Aktiviert Begrenzung der oberen und unteren Endlage als Anfrierschutz (Frostschutz=True)","$I_Antifreeze_select","c"],
		["FrostMaxAuf","Maximale Position obere Endlage bei Anfrierschutz","$P_Antifreeze_PosUp","u"],
		["FrostMaxAb","Maximale Position untere Endlage bei Anfrierschutz","$P_Antifreeze_PosDwn","u"],
		["Inhibit","INHIBIT","$VAR<Inhibit?>","u"]
      ],
      "Output": [
		["Pos_o_Fenster","Behangposition ohne Auswertung Fensterkontakte (Fassadensteuerung)","$Lvl_3_result","c"],
		["Pos_m_Fenster","Behangposition mit Auswertung Fensterkontakte (Fenstersteuerung)","$Output_window","c"]
      ]
}
Beschreibung:

Bei der Tag/Nacht Steuerung den Behang in die untere Endlage ("Tag/Nacht" = False) zu fahren, erfolgt unabhängig vom Wert der Eingänge "Beschatten", "KeineSonne", "Hitzeschutz" oder "Prioritaet". Am Tag ("Tag/Nacht" = True) ist das Verhalten abhängig von den Eingängen "Beschatten", "KeineSonne", "Hitzeschutz" oder "Prioritaet".

Die Beschattung wird ausgeführt, wenn folgende Bedingungen erfüllt sind:
  • Beschatten = True
  • Eingänge SonnenBed innerhalb der definierten Grenzen
  • Helligkeitsschwelle 1 bzw. 2 überschritten
  • Tag/Nacht = True
  • KeineSonne = False
  • Geoeffnet = False
  • Zwangsführung = False
Der Eingang "KeineSonne" kann verwendet werden, falls eine direkte Erkennung gegeben ist, ob tatsächlich die Sonne scheint.
Die Beruhigung des Behangs, z.B. bei wechselnder Bewölkung, erfolgt mittels getrennt einstellbarer Zeitverzögerung zum Auf- /Abfahren des Behangs sowie einstellbarer Hysterese. Die Verzögerung greift für die Helligkeitsschwellen und den Eingang "KeineSonne".

Hitzeschutz hat eine höhere Priorität als die Beschattung und übersteuert deren Behanghöhen. Dabei werden feste Positionen entsprechend Anwesenheit ("Praesenz" = True) und Abwesenheit ("Praesenz" = False) angefahren. Die Idee dahinter ist, den Behang hiermit aggressiv in Stellungen zu bringen, in denen möglichst wenig Sonnenlicht einfallen kann- auch bei Fenstern, die nicht direkt beschienen werden (bspw. Reflektion an Nachbars Hauswand). Hitzeschutz ist aktiv, wenn folgende Bedingungen erfüllt sind:
  • Hitzeschutz = True
  • Tag/Nacht = True (bei False, wird der Behang in die untere Endlage gefahren)
  • Geoeffnet = False
In der Prioritätsstellung werden sowohl die Beschattungspositionen also auch Hitzeschutzpositionen mit einer einstellbaren festen Behanghöhe übersteuert (bspw. um im Schlafzimmer den Behang morgens nur ein Stück zu öffnen). Für Tag oder Nacht lassen sich unterschiedliche Behanghöhen definieren.
Priorität ist aktiv, wenn folgende Bedingungen erfüllt sind:
  • Prioritaet = True
  • Geoeffnet = False
  • Zwangsführung = False
"BeschattungAus" unterdrückt Beschattungspositionen, Hitzeschutz und Prioritätsstellungen. Tag/Nach-Steuerung, Fensterfunktionen, Zwangsführung und Frostschutz bleiben erhalten.

Wird "Gekippt" auf True gesetzt, werden die Positionen entsprechend Beschattung, Hitzeschutz und Priorität angefahren, jedoch auf eine einstellbare untere Stellung begrenzt (Lüftungsstellung).

Wird "Geöffnet" auf True gesetzt, wird der Behang in die obere Endlage gefahren, ungeachtet Tag/Nacht und irgendwelcher Beschattungs- oder Prioritätsstellungen.

"Zwangsführung" hat die höchste Priorität und fährt den Behang unabhängig anderer Eingänge in die obere oder untere Endlage ensprechend dem Eingang "ZwangUpDwn" (lediglich begrenzt durch Frostschutz, s.u. ).

"Frostschutz" begrenzt alle oberen bzw. unteren Endlagen (Anfrierschutz).


Setup:
Folgende Eingänge sollten mit Option "I" versehen werden, damit der Baustein erst losläuft, nachdem gültige Werte auf diesen Eingängen empfangen wurden:
  • SonnenBed
  • Lux
  • Tag/Nacht
Es empfiehlt sich, dem Baustein einen geglätteten Helligkeitswert zuzuführen (Tiefpass mit T zwischen 120s und 750s).

Für die Eingänge "SonnenBed" (Für Sonnenhöhe, -Kompassrichtung,...) ist ein Eingangsmodifikator wie im Beispiel zu konfigurieren, damit der Astro-Baustein verbunden werden kann.
Bild

Anregungen/Feedback im Diskussionsthread viewtopic.php?f=9&t=1245&start=30 willkommen.
Lg
Jochen
____________________________________________________________
TW 2600 #188
VPN offen, Zugriff jederzeit, Experimente jederzeit, Reboot jederzeit

Ersteller
Dragonos2000
Reactions:
Beiträge: 2181
Registriert: So Aug 12, 2018 1:38 pm
Wohnort: Karlsruher Raum
Hat sich bedankt: 481 Mal
Danksagung erhalten: 889 Mal

#9

Beitrag von Dragonos2000 »

############ V3.2 ############

Changelog:
  • Optimierung im Bereich der Timer zur Verzögerung des Auf-/Abfahrens (hat unter bestimmten Umständen nicht wie erwartet gegriffen)
  • Metadaten ergänzt (inkl. Icon aus dem KNXUF Iconset) und Lizenzhinweise ergänzt
Der Code sollte kompatibel zum V3.1 Baustein sein und sich also nicht einfach drüberkopieren lassen. Bitte vorher im eigenen Setup testen!!!
Der ältere Code findet sich in einem Beitrag weiter unten.

Allgemeines:
  • Die Eingänge sind zum besseren Verständnis in Reihenfolge der Priorität gelistet (höchste unten), z.B. Priorität übersteuert Hitzeschutz, Fenster gekippt greift in die Tag/Nacht Positionen ein, usw.
  • Unbenutzte Funktionen mit ihren Parametern können unbelegt bleiben, der Baustein funktionert trotzdem.
  • Über das "+" Zeichen kann ein Inhibit hinzugefügt werden, damit kann der Baustein komplett stillgelegt werden.
  • Der Baustein kann durch die Glättung der zugeführten Helligkeit, einstellbare Verzögerungszeiten und Hysterese flexibel auf die eigenen Bedürfnisse angepasst werden. Grundsätzlich ist aber zu bedenken, dass sich diese Parameter auch negativ beeinflussen können und starke Auswirkung auf das zeitliche Ansprechverhalten haben. Daher: Langsam rantasten.

Code: Alles auswählen

/**###################################################################################
#  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. Das enthaltene Icon steht unter der             #
#  Creative Commons Lizenz vom Typ Namensnennung und wurde farblich angepasst,       #
#  https://creativecommons.org/licenses/by-sa/3.0/deed.de, Autor: mfd.gfx@gmail.com  #
######################################################################################
#                Beschattungsbaustein für Rolladen Version 3.2                       #
#                                                                                    #
# Steuerung der Behanghöhen von Rolladen basierter Beschattung                       #
####################################################################################*/
						
{
      "Level": [
        ["$Eins","integer",1],
		["$I_Sonne","bool",true],
		["$P_Thresh1_Pos","integer",50],
		["$P_Thresh2_Pos","integer",102],
		["$I_PosC","integer",200],
		["$I_PosD","integer",160],
		["$PosDwn","integer",255],
		["$PosUp","integer",0],
		["$P_PrioPosDay","integer",0],
		["$P_PrioPosNight","integer",0],
		["$P_MaxPos_Tilted","integer",100],
		["$P_Antifreeze_PosDwn","integer",255],
		["$P_Antifreeze_PosUp","integer",0],
		["$I_Lux","float",0],
		["$P_Lux_A","float",10000],
		["$P_Lux_B","float",50000],
		["$P_Hysteresis","float",1000],
		["$Lux_A_Hysteresis","float",0],
		["$Lux_B_Hysteresis","float",0],
		["$Light_CResult_A","bool",false],
		["$Light_CResult_B","bool",false],
		["$I_Day","bool",false],
		["$I_Disable","bool",false],
		["$Sun","bool",false],
		["$Shade","bool",false],
        ["$Lvl_1_select","integer",0],
		["$Lvl_1_result","integer",0],
		["$Lvl_1_delayed_result","integer",0],
		["$Lvl_1_T1_trigger","bool",false],
		["$Lvl_1_T2_trigger","bool",false],
		["$Lvl_1_T1_result","bool",false],
		["$Lvl_1_T2_result","bool",false],
		["$Lvl_1_delayed_select","bool",false],
		["$P_Holddown_up","integer",5],
		["$P_Holddown_dwn","integer",5],
		["$Lvl_2_select","integer",0],
		["$Lvl_2_result","integer",0],
		["$Lvl_3_select","integer",0],
		["$Lvl_3_result","integer",0],
		["$Lvl_3_result_MaxPos_Tilted","integer",0],
		["$Lvl_4_select","integer",0],
		["$Lvl_4_result","integer",0],
		["$Lvl_5_result_Antifreeze","integer",0],
		["$Lvl_5_select","integer",0],
		["$Lvl_5_result","integer",0],
		["$Output_window","integer",0],
		["$I_Presence","bool",false],
		["$I_Heat","bool",false],
		["$I_Prio_select","bool",false],
		["$I_Open","bool",false],
		["$I_Tilted","bool",false],
		["$I_Antifreeze_select","bool",false],
		["$I_Forced_mode","bool",false],
		["$P_Forced_mode_dir","bool",false],
		["$VAR<I_in_range!>","bool",false],
		["$VAR<Inhibit?>","bool",false]
      ],
      "Module": [
		["Break",["$VAR<Inhibit?>"]],
		["Polynomial","$Eins","$Lux_A_Hysteresis",["$P_Lux_A","-$P_Hysteresis"]],
		["Polynomial","$Eins","$Lux_B_Hysteresis",["$P_Lux_B","-$P_Hysteresis"]],
		["Comparator","$I_Lux","$Light_CResult_A",["$Lux_A_Hysteresis","$P_Lux_A"]],
		["Comparator","$I_Lux","$Light_CResult_B",["$Lux_B_Hysteresis","$P_Lux_B"]],
		["And",["-$I_Sonne","$Light_CResult_A"],"$Sun"],
		["BinaryMultiplexer",["$Sun","$Light_CResult_B"],"$Lvl_1_select"],
		["Multiplexer",["$PosUp","$P_Thresh1_Pos","$PosUp","$P_Thresh2_Pos"],"$Lvl_1_result","$Lvl_1_select"],
		["Comparator","$Lvl_1_delayed_result","$Lvl_1_T1_trigger","$Lvl_1_result"],			//Vergleich für auf
		["Comparator","$Lvl_1_result","$Lvl_1_T2_trigger","$Lvl_1_delayed_result"],			//Vergleich für ab
		["Monoflop","$Lvl_1_T1_trigger","$Lvl_1_T2_trigger","$Lvl_1_T1_result","$P_Holddown_up",3],
		["Monoflop","$Lvl_1_T2_trigger","$Lvl_1_T1_trigger","$Lvl_1_T2_result","$P_Holddown_dwn",3],
		["Or",["$Lvl_1_T1_result","$Lvl_1_T2_result"],"$Lvl_1_delayed_select"],
		["Multiplexer",["$Lvl_1_result","$Lvl_1_delayed_result"],"$Lvl_1_delayed_result","$Lvl_1_delayed_select"],
		["And",["$VAR<I_in_range!>"],"$Shade"],
		["BinaryMultiplexer",["$I_Presence","$Shade","$I_Heat"],"$Lvl_2_select"],
		["Multiplexer",["$PosUp","$PosUp","$Lvl_1_delayed_result","$Lvl_1_delayed_result","$I_PosC","$I_PosD","$I_PosC","$I_PosD"],"$Lvl_2_result","$Lvl_2_select"],
		["BinaryMultiplexer",["$I_Prio_select","$I_Day","$I_Disable"],"$Lvl_3_select"],
		["Multiplexer",["$PosDwn","$P_PrioPosNight","$Lvl_2_result","$P_PrioPosDay","$PosDwn","$PosDwn","$PosUp"],"$Lvl_3_result","$Lvl_3_select"],
		["Limiter","$Lvl_3_result","$Lvl_3_result_MaxPos_Tilted",0,["$PosUp", "$P_MaxPos_Tilted"]],
		["BinaryMultiplexer",["$I_Tilted","$I_Open"],"$Lvl_4_select"],
		["Multiplexer",["$Lvl_3_result","$Lvl_3_result_MaxPos_Tilted","$PosUp","$PosUp"],"$Lvl_4_result","$Lvl_4_select"],
		["BinaryMultiplexer",["$P_Forced_mode_dir","$I_Forced_mode"],"$Lvl_5_select"],
		["Multiplexer",["$Lvl_4_result","$Lvl_4_result","$PosUp","$PosDwn"],"$Lvl_5_result","$Lvl_5_select"],
		["Limiter","$Lvl_5_result","$Lvl_5_result_Antifreeze",0,["$P_Antifreeze_PosUp", "$P_Antifreeze_PosDwn"]],
		["Multiplexer",["$Lvl_5_result","$Lvl_5_result_Antifreeze"],"$Output_window","$I_Antifreeze_select"]
       ],
      "Input": [
        ["Lux","Helligkeitseingang","$I_Lux","c"],
		["LuxSchw1","Schwellwert für Behangposition 1","$P_Lux_A","u"],
		["LuxSchw2","Schwellwert für Behangposition 2","$P_Lux_B","u"],
		["Hysterese","Hysterese: Schwellwert - Hysterese","$P_Hysteresis","u"],
		["PosSchw1","Behangposition für Schwelle 1","$P_Thresh1_Pos","u"],
		["PosSchw2","Behangposition für Schwelle 2","$P_Thresh2_Pos","u"],
		["KeineSonne","Unterdrückt Beschattung, wenn keine Sonne (keine Sonne=True)","$I_Sonne","c"],
		["DelayAuf","Verzögerungszeit beim Zurückfahren des Behangs","$P_Holddown_up","u"],
		["DelayAb","Verzögerungszeit beim Ablassen des Behangs","$P_Holddown_dwn","u"],	
		["SonnenBed","Sonnenstands-Bedingungen, bspw. Kompassrichtung, Höhenwinkel (UND Verknüpft)","$VAR<I_in_range!>","c"],
		["Hitze","Hitzeschutz auslösen","$I_Heat","c"],
		["HPosAnw","Behanghöhe für Hitzeschutz bei Anwesenheit","$I_PosD","u"],
		["HPosAbw","Behanghöhe für Hitzeschutz bei Abwesenheit","$I_PosC","u"],
		["Praesenz","Hitzeschutz steuern nach Anwesenheit","$I_Presence","c"],
		["Priorität","Übersteuert Beschattungs- und Hitzeschutzpositionen mit einer Prioritätsstellung","$I_Prio_select","c"],
		["PrioPosTg","Höhe der Prioritätsstellung","$P_PrioPosDay","u"],
		["PrioPosNt","Höhe der Prioritätsstellung","$P_PrioPosNight","u"],
		["BeschattAus","Beschattung deaktivieren (deaktiviert=True)","$I_Disable","c"],
		["Tag/Nacht","Tag/Nacht Eingang","$I_Day","c"],
		["Gekippt","Fenster gekippt","$I_Tilted","c"],
		["Geöffnet","Fenster geöffnet","$I_Open","c"],
		["LimGekippt","Begrenzung untere Behangstellung bei gekipptem Fenster","$P_MaxPos_Tilted","u"],
		["ZwangStrg","Zwangsführung des Behangs aktivieren","$I_Forced_mode","c"],
		["ZwangAufAb","Richtung der Zwangsführung auf (False) oder ab (True)","$P_Forced_mode_dir","c"],
		["Frostschutz","Aktiviert Begrenzung der oberen und unteren Endlage als Anfrierschutz (Frostschutz=True)","$I_Antifreeze_select","c"],
		["FrostMaxAuf","Maximale Position obere Endlage bei Anfrierschutz","$P_Antifreeze_PosUp","u"],
		["FrostMaxAb","Maximale Position untere Endlage bei Anfrierschutz","$P_Antifreeze_PosDwn","u"],
		["Inhibit","INHIBIT","$VAR<Inhibit?>","u"]
      ],
      "Output": [
        ["Pos_o_Fenster","Behangposition ohne Auswertung Fensterkontakte (Fassadensteuerung)","$Lvl_3_result","c"],
		["Pos_m_Fenster","Behangposition mit Auswertung Fensterkontakte (Fenstersteuerung)","$Output_window","c"]
      ],
	  "_Meta": {
		"_description": "Steuerung der Behanghöhen von Rolladen basierter Beschattung. Ersteller: Dragonos2000, KNXUF Icon von MFD",
		"Version": "3.2",
		"Icon": " data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iMjg4LjhwdCIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGhlaWdodD0iMjg4LjhwdCIgdmlld0JveD0iMCAwIDI4OC44IDI4OC44IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CiA8ZGVmcz4KICA8Y2xpcFBhdGggaWQ9IkNsaXAwIj4KICAgPHBhdGggZD0iTTAgMCBMMTc5Ljc4NCAwIEwxNzkuNzg0IDEyNi41MDkgTDAgMTI2LjUwOSBMMCAwIFoiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDU0Ljg0MDgsIDgxLjc1ODQpIi8+CiAgPC9jbGlwUGF0aD4KICA8Y2xpcFBhdGggaWQ9IkNsaXAxIj4KICAgPHBhdGggZD0iTTAgMCBMMTc5Ljc4NCAwIEwxNzkuNzg0IDEyNi41MDkgTDAgMTI2LjUwOSBMMCAwIFoiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDU0Ljg0MDgsIDgxLjc1ODQpIi8+CiAgPC9jbGlwUGF0aD4KIDwvZGVmcz4KIDxnIGlkPSJIaW50ZXJncnVuZCI+CiAgPGcgaWQ9IkdydXBwZTIiIGNsaXAtcGF0aD0idXJsKCNDbGlwMCkiPgogICA8ZyBpZD0iZnRzX3g1Rl9zaHV0dGVyIiBjbGlwLXBhdGg9InVybCgjQ2xpcDEpIj4KICAgIDxwYXRoIHN0eWxlPSJmaWxsOm5vbmU7c3Ryb2tlOiMxNjE0MTM7IHN0cm9rZS13aWR0aDo4OyBzdHJva2UtbGluZWNhcDpidXR0OyBzdHJva2UtbGluZWpvaW46bWl0ZXI7IHN0cm9rZS1kYXNoYXJyYXk6bm9uZTsiIGQ9Ik0xNTguNCAxMDAuMzIgQzE1OC40IDEwMy4yMzYgMTU2LjAzNiAxMDUuNiAxNTMuMTIgMTA1LjYgTDUuMjggMTA1LjYgQzIuMzYzMiAxMDUuNiAwIDEwMy4yMzYgMCAxMDAuMzIgTDAgNS4yOCBDMCAyLjM2NCAyLjM2NCAwIDUuMjggMCBMMTUzLjEyIDAgQzE1Ni4wMzYgMCAxNTguNCAyLjM2NDggMTU4LjQgNS4yOCBMMTU4LjQgMTAwLjMyIFoiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDY1LjIsIDk4LjY2NzIpIi8+CiAgICA8cGF0aCBzdHlsZT0iZmlsbDojMTYxNDEzOyBmaWxsLXJ1bGU6bm9uemVybztzdHJva2U6bm9uZTsiIGQ9Ik01LjE1ODQgOCBDOC4zMDY0IDggMTEuNDU0NCA4IDE0LjYwMjQgOCBDMTkuNzYwOCA4IDE5Ljc2MDggMCAxNC42MDI0IDAgQzExLjQ1NDQgMCA4LjMwNjQgMCA1LjE1ODQgMCBDMCAwIDAgOCA1LjE1ODQgOCBMNS4xNTg0IDggWiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMTM0Ljc5OCwgMTQ3LjM0MikiLz4KICAgIDxwYXRoIHN0eWxlPSJmaWxsOm5vbmU7c3Ryb2tlOiMxNjE0MTM7IHN0cm9rZS13aWR0aDo4OyBzdHJva2UtbGluZWNhcDpidXR0OyBzdHJva2UtbGluZWpvaW46bWl0ZXI7IHN0cm9rZS1kYXNoYXJyYXk6bm9uZTsiIGQ9Ik0wIDAgTDAgMTAyLjczNSAiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDE0NC41NzUsIDk4LjkxNikiLz4KICAgIDxwYXRoIHN0eWxlPSJmaWxsOiMxNjE0MTM7IGZpbGwtcnVsZTpub256ZXJvO3N0cm9rZTojMTYxNDEzOyBzdHJva2Utd2lkdGg6ODsgc3Ryb2tlLWxpbmVjYXA6YnV0dDsgc3Ryb2tlLWxpbmVqb2luOm1pdGVyOyBzdHJva2UtZGFzaGFycmF5Om5vbmU7IiBkPSJNMTY5LjU5OSAxNC4wMTIgQzE2OS41OTkgMTQuNDE5MiAxNjcuMDY4IDE0Ljc0OTYgMTYzLjk0NiAxNC43NDk2IEw1LjY1MjggMTQuNzQ5NiBDMi41MzA0IDE0Ljc0OTYgMCAxNC40MTg0IDAgMTQuMDEyIEwwIDAuNzM3NiBDMCAwLjMzMDQgMi41MzEyIDAgNS42NTI4IDAgTDE2My45NDYgMCBDMTY3LjA2OCAwIDE2OS41OTkgMC4zMzEyIDE2OS41OTkgMC43Mzc2IEwxNjkuNTk5IDE0LjAxMiBaIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSg1OS43MzM2LCA4NS43NTg0KSIvPgogICAgPHBhdGggc3R5bGU9ImZpbGw6IzE2MTQxMzsgZmlsbC1ydWxlOm5vbnplcm87c3Ryb2tlOm5vbmU7IiBkPSJNNS4xNTkyIDggQzQ0LjA4NjQgOCA4My4wMTM2IDguMDAwOCAxMjEuOTQgOC4wMDE2IEMxMzkuNTAyIDguMDAxNiAxNTcuMDY0IDguMDAxNiAxNzQuNjI2IDguMDAyNCBDMTc5Ljc4NCA4LjAwMjQgMTc5Ljc4NCAwLjAwMjQgMTc0LjYyNiAwLjAwMjQgQzEzNS42OTggMC4wMDI0IDk2Ljc3MiAwLjAwMTYgNTcuODQ0IDAuMDAwOCBDNDAuMjgyNCAwLjAwMDggMjIuNzIgMC4wMDA4IDUuMTU4NCAwIEMwIDAgMCA4IDUuMTU5MiA4IEw1LjE1OTIgOCBaIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSg1NC44NDA4LCAxMDYuNjY2KSIvPgogICAgPHBhdGggc3R5bGU9ImZpbGw6IzE2MTQxMzsgZmlsbC1ydWxlOm5vbnplcm87c3Ryb2tlOm5vbmU7IiBkPSJNNS4xNTkyIDggQzQ0LjA4NjQgOCA4My4wMTM2IDguMDAwOCAxMjEuOTQgOC4wMDE2IEMxMzkuNTAyIDguMDAxNiAxNTcuMDY0IDguMDAxNiAxNzQuNjI2IDguMDAyNCBDMTc5Ljc4NCA4LjAwMjQgMTc5Ljc4NCAwLjAwMjQgMTc0LjYyNiAwLjAwMjQgQzEzNS42OTggMC4wMDI0IDk2Ljc3MiAwLjAwMTYgNTcuODQ0IDAuMDAwOCBDNDAuMjgyNCAwLjAwMDggMjIuNzIgMC4wMDA4IDUuMTU4NCAwIEMwIDAgMCA4IDUuMTU5MiA4IEw1LjE1OTIgOCBaIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSg1NC44NDA4LCAxMTcuMDY2KSIvPgogICAgPHBhdGggc3R5bGU9ImZpbGw6IzE2MTQxMzsgZmlsbC1ydWxlOm5vbnplcm87c3Ryb2tlOm5vbmU7IiBkPSJNNS4xNTkyIDggQzQ0LjA4NjQgOCA4My4wMTM2IDguMDAwOCAxMjEuOTQgOC4wMDE2IEMxMzkuNTAyIDguMDAxNiAxNTcuMDY0IDguMDAxNiAxNzQuNjI2IDguMDAyNCBDMTc5Ljc4NCA4LjAwMjQgMTc5Ljc4NCAwLjAwMjQgMTc0LjYyNiAwLjAwMjQgQzEzNS42OTggMC4wMDI0IDk2Ljc3MiAwLjAwMTYgNTcuODQ0IDAuMDAwOCBDNDAuMjgyNCAwLjAwMDggMjIuNzIgMC4wMDA4IDUuMTU4NCAwIEMwIDAgMCA4IDUuMTU5MiA4IEw1LjE1OTIgOCBaIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSg1NC44NDA4LCAxMjcuNDY2KSIvPgogICAgPHBhdGggc3R5bGU9ImZpbGw6IzE2MTQxMzsgZmlsbC1ydWxlOm5vbnplcm87c3Ryb2tlOm5vbmU7IiBkPSJNNS4xNTkyIDcuOTk5MiBDNDQuMDg2NCA4IDgzLjAxMzYgOC4wMDA4IDEyMS45NCA4LjAwMTYgQzEzOS41MDIgOC4wMDE2IDE1Ny4wNjQgOC4wMDE2IDE3NC42MjYgOC4wMDI0IEMxNzkuNzg0IDguMDAyNCAxNzkuNzg0IDAuMDAyNCAxNzQuNjI2IDAuMDAyNCBDMTM1LjY5OCAwLjAwMjQgOTYuNzcyIDAuMDAxNiA1Ny44NDQgMC4wMDA4IEM0MC4yODI0IDAuMDAwOCAyMi43MiAwLjAwMDggNS4xNTg0IDAgQzAgMi44NDIxN2UtMTQgMCA3Ljk5OTIgNS4xNTkyIDcuOTk5MiBMNS4xNTkyIDcuOTk5MiBaIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSg1NC44NDA4LCAxMzcuODY2KSIvPgogICA8L2c+CiAgPC9nPgogPC9nPgo8L3N2Zz4K"
	  }
}
Beschreibung:

Bei der Tag/Nacht Steuerung den Behang in die untere Endlage ("Tag/Nacht" = False) zu fahren, erfolgt unabhängig vom Wert der Eingänge "Beschatten", "KeineSonne", "Hitzeschutz" oder "Prioritaet". Am Tag ("Tag/Nacht" = True) ist das Verhalten abhängig von den Eingängen "Beschatten", "KeineSonne", "Hitzeschutz" oder "Prioritaet".

Die Beschattung wird ausgeführt, wenn folgende Bedingungen erfüllt sind:
  • Beschatten = True
  • Eingänge SonnenBed innerhalb der definierten Grenzen
  • Helligkeitsschwelle 1 bzw. 2 überschritten
  • Tag/Nacht = True
  • KeineSonne = False
  • Geoeffnet = False
  • Zwangsführung = False
Der Eingang "KeineSonne" kann verwendet werden, falls eine direkte Erkennung gegeben ist, ob tatsächlich die Sonne scheint.
Die Beruhigung des Behangs, z.B. bei wechselnder Bewölkung, erfolgt mittels getrennt einstellbarer Zeitverzögerung zum Auf- /Abfahren des Behangs sowie einstellbarer Hysterese. Die Verzögerung greift für die Helligkeitsschwellen und den Eingang "KeineSonne".

Hitzeschutz hat eine höhere Priorität als die Beschattung und übersteuert deren Behanghöhen. Dabei werden feste Positionen entsprechend Anwesenheit ("Praesenz" = True) und Abwesenheit ("Praesenz" = False) angefahren. Die Idee dahinter ist, den Behang hiermit aggressiv in Stellungen zu bringen, in denen möglichst wenig Sonnenlicht einfallen kann- auch bei Fenstern, die nicht direkt beschienen werden (bspw. Reflektion an Nachbars Hauswand). Hitzeschutz ist aktiv, wenn folgende Bedingungen erfüllt sind:
  • Hitzeschutz = True
  • Tag/Nacht = True (bei False, wird der Behang in die untere Endlage gefahren)
  • Geoeffnet = False
In der Prioritätsstellung werden sowohl die Beschattungspositionen also auch Hitzeschutzpositionen mit einer einstellbaren festen Behanghöhe übersteuert (bspw. um im Schlafzimmer den Behang morgens nur ein Stück zu öffnen). Für Tag oder Nacht lassen sich unterschiedliche Behanghöhen definieren.
Priorität ist aktiv, wenn folgende Bedingungen erfüllt sind:
  • Prioritaet = True
  • Geoeffnet = False
  • Zwangsführung = False
"BeschattungAus" unterdrückt Beschattungspositionen, Hitzeschutz und Prioritätsstellungen. Tag/Nach-Steuerung, Fensterfunktionen, Zwangsführung und Frostschutz bleiben erhalten.

Wird "Gekippt" auf True gesetzt, werden die Positionen entsprechend Beschattung, Hitzeschutz und Priorität angefahren, jedoch auf eine einstellbare untere Stellung begrenzt (Lüftungsstellung).

Wird "Geöffnet" auf True gesetzt, wird der Behang in die obere Endlage gefahren, ungeachtet Tag/Nacht und irgendwelcher Beschattungs- oder Prioritätsstellungen.

"Zwangsführung" hat die höchste Priorität und fährt den Behang unabhängig anderer Eingänge in die obere oder untere Endlage ensprechend dem Eingang "ZwangUpDwn" (lediglich begrenzt durch Frostschutz, s.u. ).

"Frostschutz" begrenzt alle oberen bzw. unteren Endlagen (Anfrierschutz).


Setup:
Folgende Eingänge sollten mit Option "I" versehen werden, damit der Baustein erst losläuft, nachdem gültige Werte auf diesen Eingängen empfangen wurden:
  • SonnenBed
  • Lux
  • Tag/Nacht
Es empfiehlt sich, dem Baustein einen geglätteten Helligkeitswert zuzuführen (Tiefpass mit T zwischen 120s und 750s).

Für die Eingänge "SonnenBed" (Für Sonnenhöhe, -Kompassrichtung, und was einem sonst noch einfällt,...) ist ein Eingangsmodifikator wie im Beispiel zu konfigurieren, damit der Astro-Baustein verbunden werden kann. Mann kann über mehrere "SonnenBed"-Eingänge und ggf. vorgeschaltete Und-/Oder-Gatter beliebige einzelne Bereiche des Sonnenstands ausblenden (bspw. Baum, der das Fenster zu manchen Zeiten beschattet).
Bild

Anregungen/Feedback im Diskussionsthread viewtopic.php?f=9&t=1245&start=30 willkommen.
Lg
Jochen
____________________________________________________________
TW 2600 #188
VPN offen, Zugriff jederzeit, Experimente jederzeit, Reboot jederzeit

StefanW
Elaborated Networks
Reactions:
Beiträge: 9689
Registriert: So Aug 12, 2018 9:27 am
Wohnort: Frauenneuharting
Hat sich bedankt: 4831 Mal
Danksagung erhalten: 7632 Mal
Kontaktdaten:

#10

Beitrag von StefanW »

Hallo Jochen,,

super Arbeit, aber ich komme gerade durcheinander.

Im (überarbeiteten) Eingangsthread steht was von Version 3.3 im neusten Beitrag unten aber Version 3.2?

==> WOmöglich ist es Sinnhaft, gerade bei der Überarbeitung des Eingangsthreads, wenn das Datum direkt zur Versionsnummer dazu steht, damit einem klar ist, dass das aktualisiert wurde. Eine Sache die wir bei unseren Versionen künftig auch angeben werden


lg


Stefan
Stefan Werner
Product Owner für Timberwolf Server, 1-Wire und BlitzART
Bitte WIKI lesen. Allg. Support nur im Forum. Bitte keine PN
Zu Preisen, Lizenzen, Garantie, HW-Defekt an service at elabnet dot de

Link zu Impressum und Datenschutzerklärung oben.
Gesperrt

Zurück zu „Zusätzliche Logikbausteine“