Seite 2 von 2

Re: [V4.0 IP4] Verständnisfrage Cron Syntax als Trigger

Verfasst: Mo Sep 18, 2023 5:52 pm
von Cepheus73
Robosoc hat geschrieben: Mo Sep 18, 2023 4:01 pm
Marino hat geschrieben: Mo Sep 18, 2023 9:59 am Logik konnte nicht angelegt werden, da der Code fehlerhaft ist.
Habe es gerade bei mir ausprobiert... Ich bin auf der offiziellen Hauptversion V3.5.1 und konnte problemfrei eine neue Logik mit dem Code aus dem
verlinkten Post (also V5 des Code-Schnipsels) anlegen. Auf welcher TWS Version arbeitest Du?
Mit V4.0 IP4 hat sich die Syntax des Logikeditors geringfügig geändert und zwar müssen die Buchstaben für das standardmäßige Verhalten an den Ein- und Ausgängen nun immer klein geschrieben werden, also z.B. "c" statt "C", "a" statt "A".

Viele Grüße, Bernhard

Re: [V4.0 IP4] Verständnisfrage Cron Syntax als Trigger

Verfasst: Mo Sep 18, 2023 5:57 pm
von Robosoc
Cepheus73 hat geschrieben: Mo Sep 18, 2023 5:52 pm

Mit V4.0 IP4 hat sich die Syntax des Logikeditors geringfügig geändert und zwar müssen die Buchstaben für das standardmäßige Verhalten an den Ein- und Ausgängen nun immer klein geschrieben werden, also z.B. "c" statt "C", "a" statt "A".
:shock: gute zu wissen, danke...für das nächste Update sollte ich dann wohl schon mal in Ruhe was vorbereiten.

Re: [V4.0 IP4] Verständnisfrage Cron Syntax als Trigger

Verfasst: Mo Sep 18, 2023 7:45 pm
von Marino
Ich bin auf V4 IP4.

Die Logik für die stündlichen Werte würde ich wahrscheinlich auch wirklich eher als eigene Logik belassen...


Viele Grüße
Nils

Re: [V4.0 IP4] Verständnisfrage Cron Syntax als Trigger

Verfasst: Mo Sep 18, 2023 8:26 pm
von Robert_Mini
Hallo Nils
Marino hat geschrieben: Mo Sep 18, 2023 9:59 am mich interessiert Stunde/Tag/Monat/Jahr.
Ich habe hier einen Zählerbaustein dafür gepostet (Tag/Monat/Jahr):
viewtopic.php?f=65&t=3782&hilit=Z%C3%A4 ... nde#p42252

Für Stunde müsstest du den Bausteine verwenden, auf den ich schon verlinkt habe.

lg
Robert

Re: [V4.0 IP4] Verständnisfrage Cron Syntax als Trigger

Verfasst: Di Sep 19, 2023 6:19 am
von Robosoc
@Marino : Probiere bitte einmal aus, ob Du diesen Code verwenden kannst:

Code: Alles auswählen

/**
* Zähler Universalbaustein V6
* 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.
*/

{
  "Input":[
    ["Zähler","Kontinuierlicher Zähler","$Counter","a"]  ],
  "Output":[
    ["Zähler Vortag","Zählerstand zum Ende des vorherigen Tages","$End_D","x"],
	["Zähler Vorwoche","Zählerstand zum Ende der vorherigen Woche","$End_W","x"],
	["Zähler Vormonat","Zählerstand zum Ende des vorherigen Monats","$End_M","x"],
    ["Zähler Vorjahr","Zählerstand zum Ende des vorherigen Jahres","$End_Y","x"],
    ["Verbrauch Vortag","Verbrauch des letzten Tages","$Consumption_PrevD","x"],
    ["Verbrauch Vorwoche","Verbrauch der letzten Woche","$Consumption_PrevW","x"],
    ["Verbrauch Vormonat","Verbrauch des letzten Monats","$Consumption_PrevM","x"],
    ["Verbrauch Vorjahr","Verbrauch des letzten Jahres","$Consumption_PrevY","x"],
    ["Verbrauch Aktueller Tag","Verbrauch des aktuellen Tages bisher","$Consumption_CurrD","c"],
    ["Verbrauch Aktuelle Woche","Verbrauch der aktuellen Woche bisher","$Consumption_CurrW","c"],
    ["Verbrauch Aktueller Monat","Verbrauch des aktuellen Monats bisher","$Consumption_CurrM","c"],
    ["Verbrauch Aktuelles Jahr","Verbrauch des aktuellen Jahres bisher","$Consumption_CurrY","c"]
  ],
  "Level":[
	["$Cron_D","string","59 59 23 * * *"],
	["$HalfDayinSec","integer",43200],
	["$Formula_Tomorrow","string","X1+X2"],
	["$Today_Utime","integer",0],
	["$Today_Wday","integer",0],
	["$Tomorrow_Utime","integer",0],
	["$Tomorrow_Mday","integer",0],
	["$Tomorrow_Yday","integer",0],
	["$SendCond_D","bool",false],
	["$SendCond_W","bool",false],
	["$SendCond_M","bool",false],
	["$SendCond_Y","bool",false],
	["$Eins","integer",1],
	["$True","bool",true],	
	
    ["$Counter","float",0.0],
	["$End_D","float",0.0],
	["$End_W","float",0.0],
	["$End_M","float",0.0],
	["$End_Y","float",0.0],
	["$Consumption_PrevD","float",0.0],
	["$Consumption_PrevW","float",0.0],
	["$Consumption_PrevM","float",0.0],
	["$Consumption_PrevY","float",0.0],
	["$Consumption_CurrD","float",0.0],
	["$Consumption_CurrW","float",0.0],
	["$Consumption_CurrM","float",0.0],
	["$Consumption_CurrY","float",0.0],
	["$Formula","string","X2>0?X1-X2:0"],
	["$Gate","bool",true]	
  ],
  "Module":[
  //täglich am Ende des Tages triggern
	["Cron","$True","$SendCond_D",0,"$Cron_D"],

  // Werte des aktuellen Tages bestimmen
	["Localtime",0,"$Today_Utime",0,0,0,0,0,0,"$Today_Wday",0,0],

  // Werte des Folgetages bestimmen
	["CalcFormula",["$Today_Utime","$HalfDayinSec"], "$Tomorrow_Utime", "$Formula_Tomorrow"],
	["Localtime","$Tomorrow_Utime",0,0,0,0,"$Tomorrow_Mday",0,0,0,"$Tomorrow_Yday",0],
	
  //Tageswerte schreiben
	//Berechnung des aktuellen Verbrauches in der Periodenende
	["CalcFormula",["$Counter","$End_D"], "$Consumption_CurrD", "$Formula"],
	
	//Setzen und Senden des Periodenende, wenn Bedingung erfüllt
	["Latch","$Counter","$End_D","$SendCond_D",0],
	["SendExplicit","$SendCond_D","$End_D",0],
	
	//Setzen und Senden des Periodenendverbrauches, wenn Bedingung erfüllt
	["Comparator" , "$End_D" , "$Gate" , 0],
	["And",["$Gate","$SendCond_D"],"$SendCond_D"],
	["Latch","$Consumption_CurrD","$Consumption_PrevD","$SendCond_D",0],
	["SendExplicit","$SendCond_D","$Consumption_PrevD",0],
	
  //Wochenwerte schreiben
	//Berechnung des aktuellen Verbrauches in der Periodenende
	["CalcFormula",["$Counter","$End_W"], "$Consumption_CurrW", "$Formula"],
	
	//Prüfen ob das Ende einer Woche (also Sonntag-Abend) erreicht ist und ob die Logik wegen des Periodenendes getriggert wurde
	["Comparator" , "$Today_Wday" , "-$SendCond_W" , 0],
	["And",["$SendCond_D","$SendCond_W"],"$SendCond_W"],
	
	//Setzen und Senden des Periodenende, wenn Bedingung erfüllt
	["Latch","$Counter","$End_W","$SendCond_W",0],
	["SendExplicit","$SendCond_W","$End_W",0],
	
	//Setzen und Senden des Periodenendverbrauches, wenn Bedingung erfüllt
	["Comparator" , "$End_W" , "$Gate" , 0],
	["And",["$Gate","$SendCond_W"],"$SendCond_W"],
	["Latch","$Consumption_CurrW","$Consumption_PrevW","$SendCond_W",0],
	["SendExplicit","$SendCond_W","$Consumption_PrevW",0],
	
  //Monatswerte schreiben
	//Berechnung des aktuellen Verbrauches in der Periodenende
	["CalcFormula",["$Counter","$End_M"], "$Consumption_CurrM", "$Formula"],
	
	//Prüfen ob das Ende eines Monats erreicht ist und ob die Logik wegen des Periodenendes getriggert wurde
	["Comparator" , "$Tomorrow_Mday" , "-$SendCond_M" , "$Eins"],
	["And",["$SendCond_D","$SendCond_M"],"$SendCond_M"],
	
	//Setzen und Senden des Periodenende, wenn Bedingung erfüllt
	["Latch","$Counter","$End_M","$SendCond_M",0],
	["SendExplicit","$SendCond_M","$End_M",0],
	
	//Setzen und Senden des Periodenendverbrauches, wenn Bedingung erfüllt
	["Comparator" , "$End_M" , "$Gate" , 0],
	["And",["$Gate","$SendCond_M"],"$SendCond_M"],
	["Latch","$Consumption_CurrM","$Consumption_PrevM","$SendCond_M",0],
	["SendExplicit","$SendCond_M","$Consumption_PrevM",0],
	
  //Jahreswerte schreiben
	//Berechnung des aktuellen Verbrauches in der Periodenende
	["CalcFormula",["$Counter","$End_Y"], "$Consumption_CurrY", "$Formula"],
	
	//Prüfen ob das Ende eines Jahres erreicht ist und ob die Logik wegen des Periodenendes getriggert wurde
	["Comparator" , "$Tomorrow_Yday" , "-$SendCond_Y" , "$Eins"],
	["And",["$SendCond_D","$SendCond_Y"],"$SendCond_Y"],
	
	//Setzen und Senden des Periodenende, wenn Bedingung erfüllt
	["Latch","$Counter","$End_Y","$SendCond_Y",0],
	["SendExplicit","$SendCond_Y","$End_Y",0],
	
	//Setzen und Senden des Periodenendverbrauches, wenn Bedingung erfüllt
	["Comparator" , "$End_Y" , "$Gate" , 0],
	["And",["$Gate","$SendCond_Y"],"$SendCond_Y"],
	["Latch","$Consumption_CurrY","$Consumption_PrevY","$SendCond_Y",0],
	["SendExplicit","$SendCond_Y","$Consumption_PrevY",0]
  ]
}


Re: [V4.0 IP4] Verständnisfrage Cron Syntax als Trigger

Verfasst: Di Sep 19, 2023 8:17 am
von Marino
@Cepheus73
Danke für den Hinweis.

@Robosoc
Vielen Dank für den Code. So kann ich ihn nun importieren. Dann kann ich damit ja nun mal testen :)


Viele Grüße
Nils