Folgende Logik bringe ich nicht so zum Laufen wie ich mir das denke
Folgendes soll passieren:
Am $input kommt immer ein "false" an.
-> unmittelbar "false" auf $zentral_out senden (funktioniert immer)
-> mit Verzögerung (hier 2 und 4 Sekunden) sollen zwei weitere Schaltaktionen durchgeführt werden (einmal einschalten einmal ausschalten - hier beispielhaft).
-> das funktioniert beim ersten Triggern der Logik einwandfrei.
-> Triggere ich die Logik erneut durch ein "false" am Eingang dann wird nur noch ein "false" auf $zentral_out gesandt. An den beiden anderen Schaltausgängen tut sich nichts mehr....
Sieht jemand meinen Fehler (dann ich gehe davon aus, dass das Problem ca. 60 cm vorm Bildschirm sitzt) ?
Code: Alles auswählen
/**=======================================================================================
Gute-Nacht-Szene
-> unmittelbar 0 (false) an Zentral aus (0/1/1) senden, dann
-> geschalten werden einige boolean-Verbraucher sowie die Jalousien im Wohnzimmer
-> Korrekturzeiten sind ausgehnde vom Zeitpunkt des Schaltbefehles in Sekunden angegeben
=========================================================================================*/
{
"Level": [
// Input-Level
["$input","bool",true],
["$norm","integer",60],
["$Korrektur1","int",0],
["$Korrektur4","int",0],
["$VAR<Inhibit?>","bool",false],
// Interne Variablen
["$true","bool",true],
["$false","bool",false],
["$input_trig","bool",false],
["$time","int",0],
["$utime","int",0],
["$Cron1","string","0"],
["$Cron4","string","0"],
["$StringFormat","string","%d"],
["$Null","string","0"],
["$Stern","string","*"],
["$Empty","string"," "],
["$Sek1","int",0],
["$Sek4","int",0],
["$Min1","int",0],
["$Min4","int",0],
["$Hour1","int",0],
["$Hour4","int",0],
["$Sek1str","string","0"],
["$Sek4str","string","0"],
["$Min1str","string","0"],
["$Min4str","string","0"],
["$Hour1str","string","0"],
["$Hour4str","string","0"],
["$Out1","int",0],
["$Out4","int",0],
["$Formula","string","X1+X2"],
// Output-Level
["$zentral_out","bool",true],
["$Result1","bool",false],
["$Result4","bool",true]
],
"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],
["CalcFormula",["$utime","$Korrektur1"], "$Out1", "$Formula"],
// Errechnete Zeit $Out1 in Bestandteile zerlegen. Wir brauchen $Min und $Hour
["Localtime","$Out1",0,"$Sek1","$Min1","$Hour1",0,0,0,0,0,0],
// stringify
["Printf","$Sek1","$StringFormat", "$Sek1str"],
["Printf","$Min1","$StringFormat", "$Min1str"],
["Printf","$Hour1","$StringFormat", "$Hour1str"],
// Cronstring zusammensetzen
["Concat",["$Sek1str","$Empty","$Min1str","$Empty","$Hour1str","$Empty","$Stern","$Empty","$Stern","$Empty","$Stern"], "$Cron1"],
// zum Zeitpunkt $Cron1 senden
["Cron","$true","$Result1",0,"$Cron1"],
// aber nur , wenn $Result gerade auf true gewechselt hat
["SendExplicit","$Result1","$Result1",1], // -> sendet 1 (true)
["CalcFormula",["$utime","$Korrektur4"], "$Out4", "$Formula"],
["Localtime","$Out4",0,"$Sek4","$Min4","$Hour4",0,0,0,0,0,0],
["Printf","$Sek4","$StringFormat", "$Sek4str"],
["Printf","$Min4","$StringFormat", "$Min4str"],
["Printf","$Hour4","$StringFormat", "$Hour4str"],
["Concat",["$Sek4str","$Empty","$Min4str","$Empty","$Hour4str","$Empty","$Stern","$Empty","$Stern","$Empty","$Stern"], "$Cron4"],
["Cron","$true","-$Result4",0,"$Cron4"],
["SendExplicit","-$Result4","$Result4",1] // -> sendet 0 (false)
],
"Input": [
["INPUT","Verbunden mit 0/1/2","$input","ai"],
["Korrektur1 EIN","Zeit in sec (positiv oder negativ)","$Korrektur1","u"],
["Korrektur1 AUS","Zeit in sec (positiv oder negativ)","$Korrektur4","u"],
["Inhibit","INHIBIT","$VAR<Inhibit?>","u"]
],
"Output": [
["ZENTRAL AUS","Verbunden mit 0/1/1","$zentral_out","x"],
["EINSCHALTEN 1","Schaltereignis 1","$Result1","x"],
["AUSSCHALTEN 1","Schaltereignis 4","$Result4","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. */