Nachdem alexbeer mich auf eine unnötige Variablendeklaration aufmerksam gemacht hat, habe ich eine Zeile im Code gelöscht.
Keine Funktionsänderung gegenüber V4, aber der Code könnte in zukünftigen TWS-Versionen >V3.5.1 in Fehler laufen. Daher rate ich jedem Nutzer meiner Logik V4 die neue Version V5 zu nutzen (einfach Code austauschen).
Code: Alles auswählen
/**
* Zähler Universalbaustein V5
* 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]
  ]
}