NEU! UPGRADE IP 12 verfügbar!
Verbessertes LICHTWIDGET - MQTT Geräte Manager Update - sowie viele weitere Verbesserungen
Infos im Wiki: https://elabnet.atlassian.net/l/cp/bCsDsqM8

Insider & Leistungsmerkmale FÜR ALLE freigeschaltet
Ab sofort kann jeder die neue VISU & IFTTT testen. Info: viewtopic.php?f=8&t=5074

Release V 4 am 15. Juni 2024
Es gibt nun einen fixen Termin. Info: viewtopic.php?f=8&t=5117

NEU! Ausführliches Video Tutorial zur VISU
Jetzt werden alle Fragen beantwortet. Das Video: https://youtu.be/_El-zaC2Rrs

[V4.0 IP4] Custom Logik helligkeitsgesteuerte Tag/Nacht Berechnung

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
Antworten

Ersteller
martin
Reactions:
Beiträge: 142
Registriert: Mo Okt 15, 2018 10:07 pm
Wohnort: bei Stuttgart
Hat sich bedankt: 80 Mal
Danksagung erhalten: 74 Mal

[V4.0 IP4] Custom Logik helligkeitsgesteuerte Tag/Nacht Berechnung

#1

Beitrag von martin »

Hi zusammen,

für die Automatisierung meiner Jalousien laufen bei mir seit 3 Jahren erfolgreich Roberts @Robert_Mini Logiken viewtopic.php?f=65&t=1564; für die Rolläden verwende ich Jochens @Dragonos2000 Baustein für Rolläden viewtopic.php?f=77&t=1245. Vielen Dank an dieser Stelle nochmal an euch fürs Teilen!

Sowohl Jalousie als auch Rolladensteuerung benötigen die Info ob es draußen hell genug ist. Funktional habe ich die Lösung in viewtopic.php?f=65&t=1567 nun angepasst, da bei mir ab und an der Behang zu- und wieder aufgefahren ist, wo das eher als unpassend empfunden wurde. Vorgekommen ist das vor allem dann, wenn z.B. abends durch dunkle Wolken die Schwelle unterschritten war, der Behang zugefahren ist (da auf Nacht erkannt) und dann doch nochmal die Sonne vorgekommen ist (Tag) und der Behang wieder öffnet.

Ergänzend zur Grundfunktion:
Robert_Mini hat geschrieben: So Okt 27, 2019 9:19 pm Funktionsweise:
  • Der Baustein Dämmerung schaltet am Beginn der Morgendämmerung beim Erreichen der Helligkeitsgrenze von Nacht auf Tag.
  • Abends nach Ende der Dämmerung wird auf Nacht geschaltet, wenn auch Sonnenhöhe < Grenzwert ist, damit ein unbeabsichtigtes Zufahren während des Tages unterdrückt wird.
gibt es nun die Erweiterungen:

Der Grenzwert für Nacht und Tag kann unabhängig voneinander vergeben werden. Der Nachtwert kann größer als der Tagwert sein, oder andersherum. Unabhängig vom Helligkeitswert (z.B. da Helligkeitssensor ausgefallen oder als erzwungenes Tag/Nacht Band) werden über die Sonnenhöhe Grenzen für Tag und Nacht definiert. Es wird nur je einmal in 24h von Nacht auf Tag und von Tag auf Nacht umgeschaltet. Das heißt, wenn z.B. der Helligkeitswert für Nacht im freigegeben Band der Sonnenhöhe einmal unterschritten wurde, wird auf Nacht umgeschaltet und bleibt auch dort bis zum nächsten Morgen auch wenn kurz nochmal die Sonne rausschaut und der Helligkeitswert über Nachtschwelle liegt.

Bild

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."*/
    
    
  "Level": [
    ["$LuminanceThresholdDay_In","float",0.0],
    ["$SunHeightForLuminanceDay_In","float",0.0],
    ["$SunHeightFallbackDay_In","float",0.0],
    ["$LuminanceThresholdNight_In","float",0.0],
    ["$SunHeightForLuminanceNight_In","float",0.0],
    ["$SunHeightFallbackNight_In","float",0.0],
    ["$Luminance_In","float",0.0],
    ["$SunHeight_In","float",0.0],
    ["$SunDirection_In","float",0.0],
    ["$SetDay","bool",false],
    ["$SetNight","bool",false],
    ["$IsEvening","bool",true],
    ["$ThresholdSunDirectionEvening","float",180.0],
    ["$IsDay","bool",false],

    ["$IsDayLuminance","bool",false],
    ["$IsDayFallbackLuminance","bool",false],
    ["$IsNightLuminance","bool",false],
    ["$IsNightFallbackLuminance","bool",false],
    
    ["$IsLuminanceDayAboveThreshold","bool",false],
    ["$IsSunHeightForLuminanceDayEnabled","bool",false],
    ["$IsSunHeightFallbackDay","bool",false],

    
    ["$IsLuminanceNightBelowThreshold","bool",false],
    ["$IsSunHeightForLuminanceNightEnabled","bool",false],
    ["$IsSunHeightFallbackNight","bool",false],
    
    ["$State","integer",0],
    ["$VAR<Inhibit?>","bool",false]
  ],
  "Module": [
    ["Break",["$VAR<Inhibit?>"]],
    
    ["Comparator" , "$SunDirection_In" , "$IsEvening" , "$ThresholdSunDirectionEvening"],
    
    //Bedingung für Zustandswechsel Nacht -> Tag
    	

    ["Comparator" , "$Luminance_In" , "$IsLuminanceDayAboveThreshold" , "$LuminanceThresholdDay_In"],
    ["Comparator" , "$SunHeight_In" , "$IsSunHeightForLuminanceDayEnabled" , "$SunHeightForLuminanceDay_In"],
    ["Comparator" , "$SunHeight_In" , "$IsSunHeightFallbackDay" , "$SunHeightFallbackDay_In"],

    ["And",["$IsLuminanceDayAboveThreshold","$IsSunHeightForLuminanceDayEnabled"],"$IsDayLuminance"],
    ["Or",["$IsDayLuminance","$IsSunHeightFallbackDay"],"$IsDayFallbackLuminance"], //Rückfallebene, falls Helligkeitssensor keine Werte liefert
    ["And",["$IsDayFallbackLuminance","-$IsEvening"],"$SetDay"], //Bedingungen für Sonnenhöhe gelten nur Morgens
    
    
    //Bedingung für Zustandswechsel Tag -> Nacht
    	

    ["Comparator" , "$Luminance_In" , "-$IsLuminanceNightBelowThreshold" , "$LuminanceThresholdNight_In"],
    ["Comparator" , "$SunHeight_In" , "$IsSunHeightForLuminanceNightEnabled" , "$SunHeightForLuminanceNight_In"],
    ["Comparator" , "$SunHeight_In" , "-$IsSunHeightFallbackNight" , "$SunHeightFallbackNight_In"],
    
    ["And",["$IsLuminanceNightBelowThreshold","-$IsSunHeightForLuminanceNightEnabled"],"$IsNightLuminance"],
    ["Or",["$IsNightLuminance","$IsSunHeightFallbackNight"],"$IsNightFallbackLuminance"], //Rückfallebene, falls Helligkeitssensor keine Werte liefert
    ["And",["$IsNightFallbackLuminance","$IsEvening"],"$SetNight"], //Bedingungen für Sonnenhöhe gelten nur Abends
    
    ["Statemachine",
    // 0: night
    // 1: day

      [
        ["$SetDay"   , 0, 1, 0],    // wechsel auf Tag
        ["$SetNight" , 1, 0, 0]   // Wechsel auf Nacht
        
      ],
      "$State"
    ],

    ["Multiplexer", [0, "$true"], "$IsDay", "$State"] //Umwandlung von Integer in boolean
    


  ],
  "Input": [
    ["Helligkeitsschwelle Tag","Helligkeitswert überhalb dem auf Tag erkannt wird ","$LuminanceThresholdDay_In","u"],
    ["Freigabe Sonnenhöhe Tag","Mindestsonnenhöhe für Helligkeitsschwellwert Tag","$SunHeightForLuminanceDay_In","u"],
    ["Sonnenhöhe Rückfall Tag","Sonnenhöhe für Tag unabhängig von Helligkeitswert","$SunHeightFallbackDay_In","u"],
    ["Helligkeitsschwelle Nacht","Helligkeitswert unterhalb dem auf Nacht erkannt wird ","$LuminanceThresholdNight_In","u"],
    ["Freigabe Sonnenhöhe Nacht","Maximale Sonnenhöhe für Helligkeitsschwellwert Nacht","$SunHeightForLuminanceNight_In","u"],
    ["Sonnenhöhe Rückfall Nacht","Sonnenhöhe für Nacht unabhängig von Helligkeitswert","$SunHeightFallbackNight_In","u"],
    ["Helligkeit","Helligkeit draußen","$Luminance_In","c"],
    ["Sonnenhöhe","Sonnenhöhe","$SunHeight_In","c"],
    ["Sonnenrichtung","Sonnenrichtung","$SunDirection_In","c"],
    ["Inhibit","INHIBIT","$VAR<Inhibit?>","u"]
  ],
  "Output": [
    ["Tag","Tag = 1; Nacht = 0","$IsDay","c"]
  ]
}
Viel Spaß damit
Zuletzt geändert von Parsley am Fr Dez 15, 2023 9:12 pm, insgesamt 1-mal geändert.
VG Martin
TWS 2500 ID:152 + PBM ID:819 + PBM ID:1079, VPN aktiv, Reboot erlaubt"
Benutzeravatar

Parsley
Reactions:
Beiträge: 562
Registriert: Di Okt 09, 2018 7:27 am
Wohnort: 490..
Hat sich bedankt: 620 Mal
Danksagung erhalten: 373 Mal

#2

Beitrag von Parsley »

Hallo Martin

danke für diese Logik!
Ich hatte mich gerade gefragt wofür die Logik die Sonnenrichtung benötigt und mir darum den Code angesehen. Mit der Sonnenrichtung wird ja eigentlich nur zwischen morgens und abends unterschieden. Ich weiß zwar nicht wie viele Timberwolf Kunden es südlich vom Äquator gibt, aber würde diese Logik dort auch so funktionieren? :think: Aktuell werkelt bei mir noch eine X1 Logik, die für den gleichen Zweck die Tageszeit (morgens < 12h; abends >= 12h) verwendet. Damit wäre deine Logik dann auch Äquator unabhängig. ;) :D
Gruß Parsley



Timberwolf Server 3500L #657 (VPN offen, reboot nach Absprache)
Bitte WIKI lesen.

Ersteller
martin
Reactions:
Beiträge: 142
Registriert: Mo Okt 15, 2018 10:07 pm
Wohnort: bei Stuttgart
Hat sich bedankt: 80 Mal
Danksagung erhalten: 74 Mal

#3

Beitrag von martin »

Hallo Parsley,

ja genau, die Sonnenrichtung wird verwendet um morgens und abends in der Sonnenhöhe zu unterscheiden. Dein Vorschlag das über die Uhrzeit zu lösen gefällt mir, da man damit noch einen expliziten Input spart.
Auf der Südhalbkugel läuft die Sonne auch von Ost nach West, nur dass Mittags im Norden steht, d.h. morgens 90° mittags 0°/360° abends 270°
Die Bedingung aktuell ist: abends, wenn Richtung > 180°, .d.h IMHO sollte das auch südlich des Äquators funktionieren, auch wenn ich diesen Usecase nicht im Blick hatte.
VG Martin
TWS 2500 ID:152 + PBM ID:819 + PBM ID:1079, VPN aktiv, Reboot erlaubt"
Antworten

Zurück zu „Zusätzliche Logikbausteine“