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]
]
}