Seite 2 von 2

Re: [V4.5 IP1] Fehlende Aussendung Cron/SendExplizit bei zweiter (manueller) Logikaktivierung

Verfasst: Sa Nov 23, 2024 10:55 pm
von jensgulow
Hallo Robert,
Deswegen: viewtopic.php?t=4529#p50306

wakeup triggert sich auch bei vergangenen Zeitpunkten erneut. Das will ich ja explizit nicht.

Re: [V4.5 IP1] Fehlende Aussendung Cron/SendExplizit bei zweiter (manueller) Logikaktivierung

Verfasst: Sa Nov 23, 2024 11:58 pm
von Robert_Mini
Ok.
Aber das trifft ja in dieser Logik nicht zu, da du ja mit dem Trigger immer eine Zeit in der Zukunft setzt.

Aber vielleicht ich hab dein Ziel noch nicht verstanden…
Für die Beschreibung im Eingangspost passt es jedenfalls auch mit dem WakeUp, weil ja nur die steigende Flanke berücksichtigt ist = Weckzeit.

Lg
Robert

Re: [V4.5 IP1] Fehlende Aussendung Cron/SendExplizit bei zweiter (manueller) Logikaktivierung

Verfasst: So Nov 24, 2024 12:09 am
von jensgulow
Funktionell sollte das so schon gehen.... Nun nehmen wir mal an ich definiere 4 Schaltpunkte und somit nehme ich 4 wakeup Module. Zum ersten Zeitpunkt wird nur wakeup1 ausgeführt. Bei Erreichen von Zeitpunkt 2 wird wakeup2 ausgeführt.... UND wakeup1 (dieser Zeitpunkt liegt jetzt in der Vergangenheit bezüglich Schaltpunkt2) usw...
Das führt halt zum mehrfachen Senden auf dem entsprechenden Ausgang......

PS: Aber Du hast Recht, durch ein sendexplizit auf positive Flanke sollte dies ja abgefangen werden.
Ich werde das morgen mal umbauen.

Re: [V4.5 IP1] Fehlende Aussendung Cron/SendExplizit bei zweiter (manueller) Logikaktivierung

Verfasst: So Nov 24, 2024 8:33 am
von Robert_Mini
Hy!
Ist hier schon umgebaut: viewtopic.php?t=5555#p59180

Was ich nicht sicher weiß: ob man beim SendExplicit den Ausgang invertieren kann, nach meinem Verständnis referenziert man da nur welcher Ausgang gemeint ist. Daher hab ich ein latch zum invertieren vorgeschaltet.

TIPP zum wakeup: auch ohne SendExplicit kann man mit einem Latch die steigende Flanke des Wakeup abgreifen und in der Logik weiterverarbeiten..

Lg
Robert

Re: [V4.5 IP1] Fehlende Aussendung Cron/SendExplizit bei zweiter (manueller) Logikaktivierung

Verfasst: So Nov 24, 2024 11:18 am
von jensgulow
Hallo Robert,

danke nochmal für die gedankliche Unterstützung und den "Stupser" in die richtige Richtung.
Habe den oben verlinkten Code nochmal etwas angepasst - aktuell läuft es damit für mich wie erwartet - Super !
(Den Latch in der Auswertung [und damit $ResultOut4] habe ich somit eingespaart.

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],
	["$true_ext","bool",true],
	["$false","bool",false],
	["$input_trig","bool",false],
	["$time","int",0],
	["$utime","int",0],
	["$Cron1","string","0"],
	["$Cron4","string","0"],

	["$Out1","int",0],
	["$Out4","int",0],
	["$Formula","string","X1+X2"],

    ["$test","bool",true],
    ["$next1","int",0],
    ["$next4","int",0],

	// 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"],

	// wakeup zum Zeitpunkt $Out1
	["Wakeup","$Out1","$Result1"],
	// senden aber nur , wenn $Result1 gerade auf true gewechselt hat
	["SendExplicit","$Result1","$Result1",1], // -> sendet 1 (true)
    
        // hier das ganze Kontrukt wenn man ausschalten möchte
	["CalcFormula",["$utime","$Korrektur4"], "$Out4", "$Formula"],
	["Wakeup","$Out4","-$Result4"],
	["SendExplicit","-$Result4","$Result4",1] // -> sendet 0 (false)

	], 

	"Input": [ 
	["INPUT","Verbunden mit 0/1/2","$input","a"],    
	["Korrektur1 EIN","Zeit in sec (positiv oder negativ)","$Korrektur1","u"],
	["Korrektur1 AUS","Zeit in sec (positiv oder negativ)","$Korrektur4","u"],
	["Test","xxx","$test","a"],   
	["True","xxx","$true_ext","a"],   
	["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"],
	["utime","Zeit","$utime","a"],
	["out1","Schaltereignis 4","$Out1","a"],
	["out4","Schaltereignis 4","$Out4","a"]
	] 
} 
/**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. */ 
Bleibt aber immer noch das etwas merkwürdige Verhalten des cron-Bausteines .....

Zum jetzigen Zeitpunkt habe ich aber hiermit eine funktionierende Lösung gefunden. Sehr schön!

Re: [V4.5 IP1] Fehlende Aussendung Cron/SendExplizit bei zweiter (manueller) Logikaktivierung

Verfasst: So Nov 24, 2024 11:57 am
von Robert_Mini
Hallo Jens!

Danke für die Rückmeldung, freut mich wenn's damit klappt.

Zum Cron muss ich mich mal in einer kleinen Testlogik hinsetzen. Ich versteh es nämlich auch überhaupt nicht, warum dein Ansatz nicht funktioniert.

lg
Robert