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

Logik zum Nachtriggern zB. Dimmen bei Nacht

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
Robert_Mini
Reactions:
Beiträge: 3741
Registriert: So Aug 12, 2018 8:44 am
Hat sich bedankt: 1164 Mal
Danksagung erhalten: 2058 Mal

Logik zum Nachtriggern zB. Dimmen bei Nacht

#1

Beitrag von Robert_Mini »

Hallo zusammen!

Viele haben ja eine Logik im Einsatz, die bei Nacht das Licht nur gedimmt angehen lässt und dazu dem EIN-Befehl einen reduzierten Dimmwert nach sendet. Im folgenden möchte ich einen Baustein teilen, der genau das am TWS für 2 Lichter umsetzt.

Funktion:
  • Der Trigger-Eingang ruft die Logik auf und prüft ob das Nachtobjekt=TRUE und der Trigger-Wert TRUE ist.
  • Zusätzlich wird der aktuelle Dimmwert ausgewertet.
  • Ist Nacht=TRUE wird der Sollwert-Nacht gesendet
  • Ist Nacht=FALSE oder das Licht bereits > Sollwert-Nacht gedimmt, so wird der Sollwert-Tag gesendet. Damit wird beim erneuten Drücken der Ein-Taste in der Nacht das Licht auch auf den max. Wert gedimmt.
  • Sperrobjekte für die gesamte Logik. Damit kann man ggf. ein Dimm-Telegramm unter Tag unterdrücken, wenn ohnehin das Limit des Aktors verwendet werden soll (siehe Screenshot: Das Nachtobjekt ist invertiert auch mit dem Sperreingang verbunden und sperrt die Logik bei Tag)
  • Ohne Sperrobjekt kann man auch den max. Wert des Aktors unter Tags übersteuern zB. Aktor Limit 100%, Logik übersteuert am Tag mit 80%. Manuell kann aber weiter auf 100% gedimmt werden (Langer Tastendruck).
Ein- und Ausgänge:
  • Trigger1: Eingang für das Ein/Aus Objekt welches das Nachtriggern per EIN-Telegramm auslöst.
  • Sollwert1 Tag: Sollwert der für das Dimmen am Tag (Abend) verwendet wird.
  • Sollwert1 Nacht: Sollwert der für das Dimmen nachts verwendet wird (außer wenn zum Zeitpunkt des Eintreffens des EIN-Telegramms bereits ein Dimmwert >= Sollwert Nacht am Rückmeldeeingang anliegt).
  • Rückmeldung1: Rückmeldeeingang für den Ist-Wert des Dimmaktors.
  • Trigger2/Sollwert2/Rückmeldung2 funktionieren analog für ein zweites, unabhängiges Licht.
  • Nacht: Eingang für das Nachtobjekt (Nacht=TRUE), ggf. invertiert anwenden.
  • Inhibit: Kann per "+" mehrfach hinzugefügt werden und sperrt die Logik vollständig.
  • Output1: Ausgang für den Soll-Dimmwert LIcht 1
  • Output2: Ausgang für den Soll-Dimmwert LIcht 2
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.

Falls wer einen freiwilligen Beitrag zur Motivation leisten will: Klick

lg
Robert
Nachtriggern.png

Code: Alles auswählen

/**===========================================================
Sendet beim Empfang von True einen Dimmwert abhängig von 
Tag/Nacht nach.
============================================================*/

{
    "Level":[
        ["$I_Input1_Trigger","bool",false],
		["$I_Input1_Soll","float",0.0],
		["$I_Input1_Max","float",100.0],
		["$I_Input1_Rueckmeldung","float",0.0],
		["$I_Input2_Trigger","bool",false],
		["$I_Input2_Soll","float",0.0],
		["$I_Input2_Max","float",100.0],
		["$I_Input2_Rueckmeldung","float",0.0],
		["$I_Nacht","bool",false],		
		["$Input1_Touched","bool",false],
		["$Input1_Send","bool",false],
		["$Input1_CResult","bool",false],
		["$Input1_SelectMax","bool",false],
		["$Input1_Soll_Mod","float",0.0],
		["$Input2_Touched","bool",false],
		["$Input2_Send","bool",false],
        ["$Input2_CResult","bool",false],
		["$Input2_Soll_Mod","float",0.0],
		["$Input2_SelectMax","bool",false],
		
		["$Output1","float",0.0],
		["$Output2","float",0.0],
		["$Konst1","float",1.0],
		["$Konst100","float",100.0],
		["$VAR<Inhibit?>","bool",false]
    ],
    "Module":[
		["Break", ["$VAR<Inhibit?>"]],
		["Triggered", "$I_Input1_Trigger", "$Input1_Touched" ],
		["Triggered", "$I_Input2_Trigger", "$Input2_Touched" ],
		
		// Toleranz vom Sollwert abziehen, damit Rundung durch DPT5.001 nicht zu Fehler führt
		["Polynomial", "$Konst1", "$Input1_Soll_Mod",["$I_Input1_Soll", "-$Konst1"]],
		["Polynomial", "$Konst1", "$Input2_Soll_Mod",["$I_Input2_Soll", "-$Konst1"]],
	    // Aktuellen Istwert auswerten
		["Comparator", "$I_Input1_Rueckmeldung", "$Input1_CResult", "$Input1_Soll_Mod"],
		["Comparator", "$I_Input2_Rueckmeldung", "$Input2_CResult", "$Input2_Soll_Mod"],
		
		// Prüfen, on Max gesendet werden soll (entweder bereits >= Sollwert-Nacht gedimmt oder Tag)
		["Or" , ["$Input1_CResult","-$I_Nacht"], "$Input1_SelectMax"],
		["Or" , ["$Input2_CResult","-$I_Nacht"], "$Input2_SelectMax"],
		// Sendewert setzen
		["Multiplexer",["$I_Input1_Soll","$I_Input1_Max"],"$Output1","$Input1_SelectMax"],
		["Multiplexer",["$I_Input2_Soll","$I_Input2_Max"],"$Output2","$Input2_SelectMax"],
		
		// Welcher Eingang hat mit TRUE getriggert
		["And" , ["$Input1_Touched","$I_Input1_Trigger"], "$Input1_Send"],
		["And" , ["$Input2_Touched","$I_Input2_Trigger"], "$Input2_Send"],
		// Nur Ausgang Senden, wenn Sendebedingung erfüllt (zughöriger Eingang wurde mit TRUE getriggert)
		["SendExplicit","$Input1_Send","$Output1",0],
		["SendExplicit","$Input2_Send","$Output2",0]
		
	  //["Polynomial", "$Konst1", "$Temp_Soll",["$I_Temp_Soll", "$I_Offset"]],	
      //["Ratio","$Konst100","$Steigung","$I_Delta_T_Max"],
	  //["Limiter","$Hoehe_Soll","$Hoehe_Soll_Lim","$Val_ok",["$I_Hoehe_Min", "$I_Hoehe_Max"]],
	  //["Comparator", "$I_Hoehe_Min", "$SelectHoehe", "$Hoehe_Soll"],
      //["Multiplexer",["$Konst0","$Hoehe_Soll_Lim"],"$Hoehe_Soll_Lim","-$SelectHoehe"],			
	  //["Or" , ["$Val_Large1" , "$Val_Large2"], "$Val_Large"],
	  //["And" , ["-$Val_Large" , "-$Val_Null"], "$Val_Small"],
	  //["Monoflop","$Val_Large",0,"$Timer_Large","$I_Delay",1],
	  //["Latch","$Hoehe_Soll_Step","$Hoehe_Soll_StepB","$Val_Large",0],
	  //["Clocksignal","$ConstTRUE","$Clk","$Period"],
	  //["HobbsMeter","$State","$Time","$Reset"],
	  //["Cron","$KonstTrue","$ResetTag",0,"$StartZeitTag"],
	  //["BinaryMultiplexer",["$In_D","$In_E","$In_F"],"$Output"],
	  //["Triggered", "$Input", "$Touched" ],
	  //["SendExplicit","$Send","$Out_val",0],
	  //["Interpolation","$In", "$Out", [ [x1,y1] , [x2,y2] , ... , [xn,yn ] ] ]
    ],
    "Input":[
        ["Trigger1","Triggert bei True","$I_Input1_Trigger","a"],
		["Sollwert1 Tag","Sollwert der beim Triggern gesendet wird","$I_Input1_Max","u"],
		["Sollwert1 Nacht","Sollwert der beim Triggern gesendet wird","$I_Input1_Soll","u"],
		["Rückmeldung1","Rückmeldeobjekt Eingang 1","$I_Input1_Rueckmeldung","u"],
		["Trigger2","Triggert bei True","$I_Input2_Trigger","a"],
		["Sollwert2 Tag","Sollwert der beim Triggern gesendet wird","$I_Input2_Max","u"],
		["Sollwert2 Nacht","Sollwert der beim Triggern gesendet wird","$I_Input2_Soll","u"],
		["Rückmeldung2","Rückmeldeobjekt Eingang 2","$I_Input2_Rueckmeldung","u"],
		["Nacht","Bei Tag=0, bei Nacht=1","$I_Nacht","u"],
		["Inhibit","Sperre der Logik bei True","$VAR<Inhibit?>","a"]
    ],
    "Output":[
        ["Output1","Sendet beim Triggern von Input1 den Sollwert1","$Output1","x"],
		["Output2","Sendet beim Triggern von Input2 den Sollwert2","$Output2","x"]
    ]
}
/**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.*/
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
Timberwolf Server 2500 / #117 (VPN offen + reboot nach Rückfrage) / zusätzlich: 3500M/#935, 3500L/#1297

gbglace
Reactions:
Beiträge: 3585
Registriert: So Aug 12, 2018 10:20 am
Hat sich bedankt: 1253 Mal
Danksagung erhalten: 1649 Mal

#2

Beitrag von gbglace »

Robert_Mini hat geschrieben: Mi Nov 18, 2020 8:59 pm Damit wird beim erneuten Drücken der Ein-Taste in der Nacht das Licht auch auf den max. Wert gedimmt.

Das setzt dann aber voraus, dass ein Taster mit Wippe und definierten Knopf EIN/AUS parametriert ist, Ein-Tasten-Bedienung per Umschaltung wird der Baustein ja nicht abfangen könne?

Aber ansonsten ein interessanter Ansatz so in der Nacht auf volle Helligkeit zu kommen.
Grüße
Göran

#1 Timberwolf 2600 Velvet Red TWS #225 / VPN aktiv / Reboot OK
#2 Timberwolf 2600 Organic Silver TWS #438 / VPN aktiv / Reboot OK
#3 PBM 3 Kanäle, #4 Modbus-Extension

Ersteller
Robert_Mini
Reactions:
Beiträge: 3741
Registriert: So Aug 12, 2018 8:44 am
Hat sich bedankt: 1164 Mal
Danksagung erhalten: 2058 Mal

#3

Beitrag von Robert_Mini »

Hallo Göran!

Ja du hast recht, bei Einflächenbedienung ist wird beim 2. Mail kurz Drücken ein Aus gesendet, so dass das hochdimmen auf 100% bei Nacht nicht funktioniert. Das Dimmen bei Nacht sollte aber passen.

Man könnte natürlich dem 1. Aus ein 100% nachsenden, das ist aber sicher fehleranfällig, damit der Taster hier korrekt mithört und dann beim 3. Drücken tatsächlich wieder ein Aus sendet.

Falls das wirklich wer braucht, bitte melden, ansonsten denke ich darüber vorerst nicht weiter nach, da ich die Einflächenbedienung für unpraktisch und einen Ausnahmefall halte.

lg
Robert
Timberwolf Server 2500 / #117 (VPN offen + reboot nach Rückfrage) / zusätzlich: 3500M/#935, 3500L/#1297
Antworten

Zurück zu „Zusätzliche Logikbausteine“