Seite 6 von 8

Re: Zähler Universalbaustein

Verfasst: Mo Nov 13, 2023 5:57 pm
von jensgulow
Kurze Anmerkung: in meiner aktuellen Version V4.0 IP4 kann ich den obigen Code nicht direkt einsetzen. Der Editor mahnt die in Großbuchstaben geschriebenen Sendevariablen "Zähler" (A), "Verbrauch Aktueller Tag" (C), "Verbrauch Aktuelle Woche" (C), "Verbrauch Aktueller Monat" (C) sowie "Verbrauch Aktuelles Jahr" (C) an.
Diese müssen in KLEINSCHREIBUNG sein, dann kann man die Logik auch wieder speichern. Hier scheint die aktuelle Version des Logikeditors casesensitiv zu sein.

Nur als Hinweis ....

Re: Zähler Universalbaustein

Verfasst: Mo Nov 13, 2023 6:06 pm
von Robosoc
Danke

Hier mal korrigierte Version als V6

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: Zähler Universalbaustein

Verfasst: So Nov 19, 2023 11:06 am
von murelli146
Hatte auf diese Art die Zähler in Edomi realisiert, war damit aber nicht glücklich.

Habe es dann wie folgt gelöst:

Bild

Die Verbrauchsmessung durch die Speicherung der Zählerstände in der Datenbank und die nachträgliche Berechnung der Verbräuche halte ich für eine solide und praktische Lösung, um potenzielle Fehlerquellen zu minimieren und genaue Verbrauchsdaten zu erhalten.

Durch diese Methode werden potenzielle Fehlerquellen minimiert, da Sie sich auf die ursprünglichen aufgezeichneten Zählerstände verlassen, anstatt den Verbrauch in Echtzeit zu berechnen. Das bedeutet, dass selbst wenn es Probleme mit der Berechnung oder der Datenakquise gibt, die ursprünglichen Zählerstände erhalten bleiben und die Verbräuche nachträglich korrekt berechnet werden können.

Ein Logikbaustein der selektierte Werte aus influx in ein KO schreiben kann würde meiner Ansicht nach viele Türen öffnen.
Sieht da jemand einen Lösungsansatz?

Schöne Grüße
Gernot

Re: Zähler Universalbaustein

Verfasst: So Nov 19, 2023 11:16 am
von murelli146
Wenn ich weiter darüber nachdenke wäre das eigentlich ein Feature der TW Visu!?

Re: Zähler Universalbaustein

Verfasst: So Nov 19, 2023 9:03 pm
von Sebastian104
Ich würde das eher als ein Feature für das zukünftig geplante Energie Management einordnen. Eine Visu ist ja „nur“ eine Anzeige / Bedienoberfläche.

Re: Zähler Universalbaustein

Verfasst: Mo Dez 25, 2023 4:34 pm
von cheater
Hallo Leute,
kurze Frage. Wenn ich den Zählerbaustein soweit fertig konfiguriert habe, warum schreibt er mir noch keine Verbrauchswerte in "Verbrauch aktueller Tag"?

Re: Zähler Universalbaustein

Verfasst: Mo Dez 25, 2023 6:37 pm
von Robert_Mini
cheater hat geschrieben: Mo Dez 25, 2023 4:34 pm kurze Frage. Wenn ich den Zählerbaustein soweit fertig konfiguriert habe, warum schreibt er mir noch keine Verbrauchswerte in "Verbrauch aktueller Tag"?
Wenn ich das richtig gesehen habe:
Das Verhalten ist momentan je Periode so eingestellt (oder sollte so eingestellt sein), dass Werte erst geschrieben werden, sobald eine Vorperiode geendet ist. Also wird man erst Tages-Werte sehen, wenn nach dem Speichern der Logik ein Tag abgeschlossen wurde...also am nachfolgenden Tag.
für längere Perioden entsprechend später.
d.h. morgen früh nochmal nachsehen.
lg
Robert

Re: Zähler Universalbaustein

Verfasst: Mo Dez 25, 2023 6:44 pm
von cheater
Alles klar. Vielen Dank!

Re: Zähler Universalbaustein

Verfasst: Di Dez 26, 2023 8:43 am
von gbglace
Der Jahreswert braucht da halt was länger bis es kommt, wobei jetzt im Dezember hast Glück. Ich hab den Baustein bei mir im Frühjahr gestartet...

Re: Zähler Universalbaustein

Verfasst: Di Dez 26, 2023 1:31 pm
von cheater
Funktioniert wie geplant. :clap: