UPGRADE IP 9 verfügbar!
Timberwolf VISU jetzt mit NEUEM Layout Editor
Freie Anordnung, Reihenfolge und Größe der Widgets - viele weitere Verbesserungen
Infos im Wiki: https://elabnet.atlassian.net/l/cp/06SeuHRJ

NEU! Insider & Leistungsmerkmale FÜR ALLE freigeschaltet
Damit kann nun jeder das Upgrade vornehmen und VISU & IFTTT testen. Alle Info hier: viewtopic.php?f=8&t=5074

[TIPP] Zähler Universalbaustein

Hier stellen Foristen und Kunden Ihre EIGENEN Logikbausteine vor. Diese Logikbausteine stehen jedem im Rahmen der vom Autor eingeräumten / genannten Lizenz zur Verfügung.
Forumsregeln
  • Denke bitte an aussagekräftige Titel und gebe dort auch die [Firmware] an. Wenn ETS oder CometVisu beteiligt sind, dann auch deren Version
  • Bitte mache vollständige Angaben zu Deinem Server, dessen ID und dem Online-Status in Deiner Signatur. Hilfreich ist oft auch die Beschreibung der angeschlossener Hardware sowie die verwendeten Protokolle
  • Beschreibe Dein Projekt und Dein Problem bitte vollständig. Achte bitte darauf, dass auf Screenshots die Statusleiste sichtbar ist
  • Bitte sei stets freundlich und wohlwollend, bleibe beim Thema und unterschreibe mit deinem Vornamen. Bitte lese alle Regeln, die Du hier findest: https://wiki.timberwolf.io/Forenregeln

Ersteller
Robosoc
Reactions:
Beiträge: 1876
Registriert: Di Okt 09, 2018 9:26 am
Hat sich bedankt: 635 Mal
Danksagung erhalten: 775 Mal

#21

Beitrag von Robosoc »

Okay, jetzt habe ich es verstanden. Danke und sorry.

Muss ich mal drüber nachgrübeln. An sich finde ich die Idee mit zwei Ausgängen je Wert okay, aber das werden die meisten Einsteiger vermutlich nicht so schnell nachvollziehen können bzw. eine eindeutige Erklärung könnte noch immer verwirren. Optionale Ausgänge machen es da auf den ersten Blick auch nicht besser, denn auch die muss man erklären.
VG, Sven - TWS 950Q ID:335 & 291, VPN offen, Reboot OK

Robert_Mini
Reactions:
Beiträge: 3741
Registriert: So Aug 12, 2018 8:44 am
Hat sich bedankt: 1164 Mal
Danksagung erhalten: 2058 Mal

#22

Beitrag von Robert_Mini »

Hy Sven!

Bitte kein sorry, ist ja nicht alles so einfach und selbsterklärend.

Zum Thema: Ich vermute/befürchte, dass hier kein Weg an optionalen Ausgängen, die auch zyklisch senden, vorbei führt.
Das Risiko der Verwirrung verstehe ich gut, da mangels optionalen Eingängen dann Eingänge vorliegen, die auf Ausgänge wirken, die man gar nicht sieht.

Ich möchte am Ende so schöne Balkendiagramme in Grafana, weiß aber nicht, wie störend da mehrfache Einträge wirklich sind?

lg
Robert
Timberwolf Server 2500 / #117 (VPN offen + reboot nach Rückfrage) / zusätzlich: 3500M/#935, 3500L/#1297

Ersteller
Robosoc
Reactions:
Beiträge: 1876
Registriert: Di Okt 09, 2018 9:26 am
Hat sich bedankt: 635 Mal
Danksagung erhalten: 775 Mal

#23

Beitrag von Robosoc »

Habe mich noch ein wenig mit dem Thema zumindest im Kopf beschäftigt. Inzwischen tendiere ich dazu eine Zwei-Logikzellen- Lösung zu realisieren , so wie Du, Robert, es bei der "Senden nach Reboot" Lösung gemacht hast.

Aber genau das hat bei mir dann die Frage aufgeworfen, warum Du diese von Dir entworfe Lösung nicht auch für Zählerstände nutzt...dann wäre das zyklische Senden doch garnicht mehr notwendig...oder?
VG, Sven - TWS 950Q ID:335 & 291, VPN offen, Reboot OK

Ersteller
Robosoc
Reactions:
Beiträge: 1876
Registriert: Di Okt 09, 2018 9:26 am
Hat sich bedankt: 635 Mal
Danksagung erhalten: 775 Mal

#24

Beitrag von Robosoc »

Habe jetzt eine Logik geschrieben, die jeweils am Ende eines Tages nur einmal triggert und dann ermittelt, welche Werte geschrieben werden sollen. So wie sie jetzt ist, kann sie die ersten 8 Werte noch nicht zyklisch schreiben. Da bin ich mir noch immer nicht ganz sicher ob das eine gute Idee ist, weil man dann ja auch immer in eine angeschlossene Zeitreihe schreibt.

Die folgende Logik sollte Folgendes besser machen:
- Schreibt Wochenwerte am Sonntagabend
- Korrektes Verhalten in Schaltjahren (es wird am 29ten geschrieben und nicht am 28ten)
- Nur einmaliges Triggern an jedem Kalender-Tag (egal ob Jahresende, Monatsende, Wochen-Ende oder nur ein beliebiger Tag im Jahr).
- sie schreibt aktuell um 23:59:59...das könnte bei Verwendung mit vielen Zählern dazu führen, dass ein Wert auch mal nach Mitternacht in eine Zeitreihe geschrieben wird.

Code: Alles auswählen

/**
* Zähler Universalbaustein V2
* 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"],
	["$Formula_End_of","string","X1=1?1:0"],
	["$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",1],
	["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",1],
	["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",1],
	["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",1],
	["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",1],
	["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",1],
	["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",1],
	["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",1],
	["SendExplicit","$SendCond_Y","$Consumption_PrevY",0]
  ]
}
Zuletzt geändert von Robosoc am Fr Okt 21, 2022 8:12 am, insgesamt 3-mal geändert.
VG, Sven - TWS 950Q ID:335 & 291, VPN offen, Reboot OK

Ersteller
Robosoc
Reactions:
Beiträge: 1876
Registriert: Di Okt 09, 2018 9:26 am
Hat sich bedankt: 635 Mal
Danksagung erhalten: 775 Mal

#25

Beitrag von Robosoc »

Habe gestern mal meinen Log angeschaut und festgestellt, dass die Logik noch nicht das macht, was ich will.
Habe jetzt recht lange daran geforscht und festgestellt, dass der Custom-Baustein SendExplicit noch etwas tückisch ist. Man darf das X in der INPUT-Deklaration nicht groß ("X") schreiben, sondern muss es wohl klein ("x") schreiben (RC-Version V 3.5.1)!

Das ist aus mehreren Gründen tückisch und sollte meiner Meinung nach möglichst geändert werden (habe dazu aber ein eigenes Improvement-Topic angelegt):
  • Alle anderen Verhaltenstypen sind meines Erachtens nicht Case-Sensitiv!
  • In der GUI wird es als großes X dargestellt, man muss es im Custom-Code-Text aber klein schreiben.
Hier nun also die Version 3, allerdings befürchte ich, habe ich noch einen Fehler im Code, den ich noch nicht gefunden habe. Also es bleibt eine Testversion, daher korrigiere ich den Beitrag 1 noch nicht.

Code: Alles auswählen

/**
* Zähler Universalbaustein V3
* 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"],
	["$Formula_End_of","string","X1=1?1:0"],
	["$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",1],
	["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",1],
	["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",1],
	["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",1],
	["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",1],
	["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",1],
	["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",1],
	["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",1],
	["SendExplicit","$SendCond_Y","$Consumption_PrevY",0]
  ]
}

Zuletzt geändert von Robosoc am Mi Okt 26, 2022 3:33 pm, insgesamt 3-mal geändert.
VG, Sven - TWS 950Q ID:335 & 291, VPN offen, Reboot OK

Ersteller
Robosoc
Reactions:
Beiträge: 1876
Registriert: Di Okt 09, 2018 9:26 am
Hat sich bedankt: 635 Mal
Danksagung erhalten: 775 Mal

#26

Beitrag von Robosoc »

So, habe auch eine weitere Quelle für einen Fehler gefunden und die Sendeverhalten der Latch-Bausteine von 1 auf 0 geändert.

Am Dienstag kommender Woch kann ich mal überprüfen, ob der Wochen- und Monatswechsel funktioniert hat.

Code: Alles auswählen

/**
* Zähler Universalbaustein V4
* 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"],
	["$Formula_End_of","string","X1=1?1:0"],
	["$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]
  ]
}
Zuletzt geändert von Robosoc am So Dez 04, 2022 11:14 am, insgesamt 1-mal geändert.
VG, Sven - TWS 950Q ID:335 & 291, VPN offen, Reboot OK

haeuslebauer
Reactions:
Beiträge: 9
Registriert: Di Feb 05, 2019 9:17 pm
Hat sich bedankt: 1 Mal
Danksagung erhalten: 1 Mal

#27

Beitrag von haeuslebauer »

Hallo Zusammen,
vielen Dank für den Baustein. Gibt es irgendeine Möglichkeit, die Wertigkeit eines impulses einzustellen? Bei mir ist 1 Impuls = 0,01m³

Vielen Dank schon mal.

Heiko
Timberwolf 950 #337, V3.0 RC8

StefanW
Elaborated Networks
Reactions:
Beiträge: 9689
Registriert: So Aug 12, 2018 9:27 am
Wohnort: Frauenneuharting
Hat sich bedankt: 4831 Mal
Danksagung erhalten: 7633 Mal
Kontaktdaten:

#28

Beitrag von StefanW »

Hallo Heiko,

ich kann die Frage nicht für diesen Zählerbaustein beantworten, aber ich kann Dir sagen, das wir beim Thema "Energiemanagement" genau an dieser Thematik arbeiten, d.h. es wird dort entsprechende Zählermodule geben und dort wird man dann auch die Wertigkeit pro Impuls einstellen können.

Hier und jetzt könntest Du den Ausgang dieses Bausteines über einen Formelbaustein legen und damit an dessen Ausgang den Gesamtwert anzeigen.

lg

Stefan
Stefan Werner
Product Owner für Timberwolf Server, 1-Wire und BlitzART
Bitte WIKI lesen. Allg. Support nur im Forum. Bitte keine PN
Zu Preisen, Lizenzen, Garantie, HW-Defekt an service at elabnet dot de

Link zu Impressum und Datenschutzerklärung oben.

Robert_Mini
Reactions:
Beiträge: 3741
Registriert: So Aug 12, 2018 8:44 am
Hat sich bedankt: 1164 Mal
Danksagung erhalten: 2058 Mal

#29

Beitrag von Robert_Mini »

Hallo Heiko!

Dieser Baustein hat als Eingang bereits einen Zählerwert keinen Impuls.

Das was du suchst gibt es hier:
viewtopic.php?f=65&t=1641

lg
Robert
Timberwolf Server 2500 / #117 (VPN offen + reboot nach Rückfrage) / zusätzlich: 3500M/#935, 3500L/#1297

zaphood
Reactions:
Beiträge: 90
Registriert: Sa Mai 14, 2022 10:15 am
Hat sich bedankt: 38 Mal
Danksagung erhalten: 79 Mal

#30

Beitrag von zaphood »

StefanW hat geschrieben: Sa Nov 12, 2022 10:43 am
ich kann die Frage nicht für diesen Zählerbaustein beantworten, aber ich kann Dir sagen, das wir beim Thema "Energiemanagement" genau an dieser Thematik arbeiten, d.h. es wird dort entsprechende Zählermodule geben und dort wird man dann auch die Wertigkeit pro Impuls einstellen können.
Da würde ich dann das Team bitten, auch an die zweite Variante zu denken, bei dem keine Pulse sondern Floatwerte als Input zur Verfügung stehen (geht mit nem Wemos D1 mit Tasmota und einem IR Lesekopf).

Gruss
Frank
Timberwolf 3500L #950 - VPN geschlossen - Reboot nach Absprache
Antworten

Zurück zu „Zusätzliche Logikbausteine“