Seite 1 von 1

[V4.5 IP1] Custom Logik "Szenencontroller" - hier "Gute-Nacht-Logik" mit boolean und Jalo

Verfasst: So Nov 24, 2024 11:50 am
von jensgulow
Hallo,
Hier mal ein Baustein von mir für eine "Gute-Nacht-Szene"

Auslösung hier durch ein "false" am $input.

SOFORT nach Auslösen der Logik wird ein "false" an Ausgang "Zentral aus" gesandt (das ist bei mir die KNX-Adresse für den entsprechenden Befehl).

Zusätzlich sollen aber noch ein paar abweichende Aktionen ausgeführt werden - und dies an definierten Zeitpunkten nach dem "Gute-Nacht-Befehl".

Die nachfolgenden Schaltaktionen lassen sich jeweils um x Sekunden verzögern.

Hier aktuell im Code 3 Schaltpunkte für EINschaltereignisse ("true" am Ausgang) und 3 Schaltpunkte für AUSschaltereignisse ("false" am Ausgang).
Zusätzlich ein Ausgang für Jalousien (oder eher Rolläden). Auf diesen wird ein integer-Wert gesandt (festgelegt mit Input "Befahrhöhe Jalo").

....Prinzipiell lässt sich das alles skalieren. Nur eben die entsprtechenden Variablen erweitern.

Danke auch an @Robert_Mini für die Hilfe bei meinem "Hirnknoten" hier: viewtopic.php?f=24&t=5555#p59118

Vielleicht findet es ja jemand hilfreich ;-)

Code: Alles auswählen

/**======================================================================================= 
Gute-Nacht-Szene

-> unmittelbar 0 (false) an Zentral aus  senden, dann

-> geschalten werden einige boolean-Verbraucher sowie ein Ausgang Rollladen

-> Korrekturzeiten sind ausgehend vom Zeitpunkt des Schaltbefehles in Sekunden angegeben 
=========================================================================================*/ 
{ 
    "Level": [ 
	// Input-Level
	["$input","bool",true],
	["$norm","integer",60],
    ["$Korrektur1","int",0],
    ["$Korrektur2","int",0],
    ["$Korrektur3","int",0],
    ["$Korrektur4","int",0],
    ["$Korrektur5","int",0],
    ["$Korrektur6","int",0],
    ["$KorrekturJalo","int",0],
    ["$VAR<Inhibit?>","bool",false],

	// Interne Variablen
	["$true","bool",true],
	["$false","bool",false],
	["$input_trig","bool",false],
    ["$time","int",0],
    ["$utime","int",0],
    ["$Out1","int",0],
    ["$Out2","int",0],
    ["$Out3","int",0],
    ["$Out4","int",0],
    ["$Out5","int",0],
    ["$Out6","int",0],
    ["$OutJalo","int",0],
    ["$Formula","string","X1+X2"],

	// Output-Level
	["$zentral_out","bool",true],
    ["$Result1","bool",false],
    ["$Result2","bool",false],
    ["$Result3","bool",false],
    ["$Result4","bool",true],
    ["$Result5","bool",true],
    ["$Result6","bool",true],
    ["$ResultJalo","bool",false],
    ["$OutValue_Jalo","int",0]
	],

	"Module": [ 

	// Überprüfen, ob $input getriggert wurde
	["Triggered", "$input", "$input_trig" ],
	// Wenn getriggert und $input=0 -> dann $zentral_out auf 0 setzen
	["And" , ["$input_trig","-$input"], "-$zentral_out"],
	// 0 auf $zentral_out senden
    ["SendExplicit","$zentral_out","$zentral_out",2],
    
	// Aktueller Zeitstempel
	["Localtime",0,"$time",0,0,0,0,0,0,0,0,0],

    // nur wenn getriggert wurde $time an $utime durchreichen
    ["Latch","$time","$utime","$input_trig",0],

	// Hier Grundkontrukt für EINSCHALTereignisse
    ["CalcFormula",["$utime","$Korrektur1"], "$Out1", "$Formula"],
	// wakeup zum Zeitpunkt $Out1
	["Wakeup","$Out1","$Result1"],
	// senden aber nur , wenn $Result1 gerade auf true gewechselt hat
	["SendExplicit","$Result1","$Result1",1], // -> sendet 1 (true)
    
    ["CalcFormula",["$utime","$Korrektur2"], "$Out2", "$Formula"],
	["Wakeup","$Out2","$Result2"],
    ["SendExplicit","$Result2","$Result2",1], // -> sendet 1 (true)

    
    ["CalcFormula",["$utime","$Korrektur3"], "$Out3", "$Formula"],
	["Wakeup","$Out3","$Result3"],
    ["SendExplicit","$Result3","$Result3",1], // -> sendet 1 (true)

	// Hier Grundkontrukt für AUSSCHALTereignisse
    ["CalcFormula",["$utime","$Korrektur4"], "$Out4", "$Formula"],
	["Wakeup","$Out4","-$Result4"],
    ["SendExplicit","-$Result4","$Result4",1], // -> sendet 0 (false)


    ["CalcFormula",["$utime","$Korrektur5"], "$Out5", "$Formula"],
	["Wakeup","$Out5","-$Result5"],
    ["SendExplicit","-$Result5","$Result5",1], // -> sendet 0 (false)

    
    ["CalcFormula",["$utime","$Korrektur6"], "$Out6", "$Formula"],
	["Wakeup","$Out6","-$Result6"],
    ["SendExplicit","-$Result6","$Result6",1], // -> sendet 0 (false)

	// Hier Grundkonstrukt für Jalousie
    ["CalcFormula",["$utime","$KorrekturJalo"], "$OutJalo", "$Formula"],
	["Wakeup","$OutJalo","$ResultJalo"],
    // erst dann $norm an $OutValue_Jalo durchreichen
    ["Latch","$norm","$OutValue_Jalo","$ResultJalo",1],
    ["SendExplicit","$ResultJalo","$OutValue_Jalo",1]

	], 

	"Input": [ 
    ["INPUT","Verbunden mit 0/1/2","$input","ai"],    
    ["Korrektur1 EIN","Zeit in sec (positiv oder negativ)","$Korrektur1","u"],
    ["Korrektur2 EIN","Zeit in sec (positiv oder negativ)","$Korrektur2","u"],
    ["Korrektur3 EIN","Zeit in sec (positiv oder negativ)","$Korrektur3","u"],
    ["Korrektur1 AUS","Zeit in sec (positiv oder negativ)","$Korrektur4","u"],
    ["Korrektur2 AUS","Zeit in sec (positiv oder negativ)","$Korrektur5","u"],
    ["Korrektur3 AUS","Zeit in sec (positiv oder negativ)","$Korrektur6","u"],
    ["Korrektur JALO","Zeit in sec (positiv oder negativ)","$KorrekturJalo","u"],
    ["Befahrhöhe JALO","welche Höhe soll angefahren werden? (in%)","$norm","u"],    
    ["Inhibit","INHIBIT","$VAR<Inhibit?>","u"]
	], 

	"Output": [ 
    ["ZENTRAL AUS","KNX-Adresse für Zentral AUS","$zentral_out","x"],
    ["EINSCHALTEN 1","Schaltereignis 1","$Result1","x"],
    ["EINSCHALTEN 2","Schaltereignis 2","$Result2","x"],
    ["EINSCHALTEN 3","Schaltereignis 3","$Result3","x"],
    ["AUSSCHALTEN 1","Schaltereignis 4","$Result4","x"],
    ["AUSSCHALTEN 2","Schaltereignis 5","$Result5","x"],
    ["AUSSCHALTEN 3","Schaltereignis 6","$Result6","x"],
    ["JALO ZU","Jalo WZ auf $norm fahren","$OutValue_Jalo","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. */ 

Re: [V4.5 IP1] Custom Logik "Gute-Nacht-Szene" mit boolean und Jalo

Verfasst: So Nov 24, 2024 12:09 pm
von gbglace
Ist ja quasi ein skalierbare Szenencontroller Baustein. Die Verzögerungen sind dabei sehr interessant.

Re: [V4.5 IP1] Custom Logik "Szenencontroller" - hier "Gute-Nacht-Logik" mit boolean und Jalo

Verfasst: So Nov 24, 2024 12:31 pm
von jensgulow
Hallo Göran,
Da hast Du Recht..... Habe mal den Titel angepasst ☺️