wie ihr wisst logik hat sich speichern lassen und text von der ki geschrieben
___________________
Hallo zusammen,
hallo Rainer (@Celsius), Christian (@CHD) und Göran (@gbglace),
vielen Dank für euer wertvolles Feedback! Wir haben die Logik noch einmal massiv überarbeitet und präsentiere euch heute die Universal-Zähler-Statistik PRO+ (Version 1.21).
Diese Version löst nicht nur das „Offset-Problem“ von Rainer (der Korrekturwert verfälscht jetzt nicht mehr die Statistik), sondern bietet auch die von Christian und Göran angeregten Intervalle für 15 Minuten, Stunden, Wochen und Quartale.
Bevor wir zum Code kommen, möchte ich euch ein paar Insider-Tipps zur Arbeit mit dem Timberwolf Logik-Editor geben,
die so in keinem Handbuch stehen und die visuelle Kraft des Wolfs zeigen.
Insider-Tipp: Die
„VISUALIZE“-Funktion (Der Röntgenblick)
Viele wissen es nicht 
, aber der Timberwolf hat ein
extrem mächtiges grafisches Werkzeug
„unter der Haube“ 
. Sobald ihr eine Logik gespeichert habt und den Doktormodus aktiviert, erscheint am oberen Rand der Logik-Zelle ein kleiner Reiter namens „VISUALIZE“ (siehe Bild 1 und 2).
Was bringt euch das?
Automatischer Schaltplan: Wenn ihr darauf klickt, generiert der Wolf aus dem JSON-Code sofort ein grafisches Flussbild (Bild 3). Das sieht aus wie Node-RED und hilft enorm dabei, den „Weg der Daten“ zu verstehen.
Individuelles Layout: Ihr könnt die einzelnen Blöcke und Verknüpfungen in diesem Fenster mit der Maus so verschieben, wie ihr es am besten versteht.
Speicher-Funktion: Wenn ihr das Layout verschiebt und die Logik speichert, merkt sich der Wolf diese Anordnung! Beim nächsten Öffnen sieht euer „Schaltplan“ genau so aus, wie ihr ihn hinterlassen habt.
Fehlersuche: Man sieht sofort, ob eine Linie (ein Datenfluss) falsch abbiegt. In unserer PRO+ Logik sieht man dort sehr schön, wie der Korrektur-Offset erst ganz am Ende dazukommt und die Verbräuche unberührt lässt.
TEIL 1: Katalog-Dokumentation (Technischer Standard V1.21)
1. Titel
Universal-Zähler-Statistik PRO+ (15m / 1h / Tag / Woche / Monat / Quartal / Jahr)
2. Untertitel
Hochauflösende Zähler-Auswertung mit entkoppeltem Korrektur-Offset und 7-facher Perioden-Statistik.
3. Zusatztext für das Verständnis (Die "Magie")
Die Version 1.21 ist das „Schweizer Taschenmesser“ für alle Zählertypen:
Offset-Entkopplung: Der Korrektur-Eingang dient nur der Synchronisation des Gesamtzählers. Er hat keinen Einfluss auf die Verbrauchs-Deltas.
7 Zeiträume: Volle Statistik von der 15-Minuten-Echtzeitüberwachung bis zum Jahreswert.
Universal-Input: Verarbeitet Absolutwerte, Inkremente (Häppchen) und Impulse über einen Wahlschalter.
4. Kern-Module
Triggered, Cron (3-Sekunden-Regel), CalcFormula (mathematische Trennung), Multiplexer & Latch (Kaskadenspeicher).
5. Beschreibung Kern-Eingänge
Zählerwert: Rohdaten vom Bus.
Eingangs-Modus: 0=Absolut (Odometer), 1=Inkrement (Häppchen), 2=Impuls (S0).
Korrektur-Offset: Abgleich des Gesamtzählers (beeinflusst die Statistik NICHT).
TEIL 2: Die „Erklärbär“-Anleitung (V1.21)
Warum ist das jetzt die „PRO+“ Version?
Stell dir vor, du korrigierst an deinem Auto den Kilometerstand von 10.000 auf 50.000, weil ein neuer Tacho reinkam.
Früher: Die Logik hätte gedacht, du bist heute 40.000 km gefahren.
Heute (V1.21): Die Logik ist schlauer. Sie merkt sich: „Der Tacho zeigt jetzt mehr an, aber mein Tageszähler bleibt davon unberührt.“
Zusätzlich haben wir für die „Strompreis-Jäger“ die 15-Minuten-Werte eingebaut. Damit siehst du genau, wie viel Energie du in jedem Viertelstunden-Slot (passend zu Tibber/Awattar) verbraucht hast.
TEIL 3: Der Code (V1.21 - Monolith)
Hier ist der vollständige, maschinell gehärtete Code für euren Editor:
code
JSON
download
content_copy
expand_less
/**===========================================================
Universal-Zähler-Statistik PRO+ (15m/1h/Tag/Woche/Monat/Quartal/Jahr)
Härtung V1.21: Offset-Entkopplung & 15m/1h Intervalle.
Basiert auf gbglace, eib-eg, CHD, Celsius & AI.
============================================================*/
{
"_Meta": {
"Description": "Universal-Zähler-Statistik PRO+ (Vollversion)",
"Version": "1.21",
"Author": "gbglace, eib-eg, CHD, Celsius & AI",
"Last_Update": "2025-12-29",
"Kanon_Version": "V7.01.01"
},
"Input": [
["Zählerwert", "Eingang für Zählerstand, Inkrement oder Impuls", "$I_Raw_Value", "a"],
["Eingangs-Modus", "0=Absolut, 1=Inkrement, 2=Impuls", "$I_Input_Mode", "u"],
["Impuls-Faktor", "Wertigkeit pro Impuls (nur für Modus 2)", "$I_Pulse_Factor", "u"],
["Korrektur-Offset", "Manueller Korrekturwert für den Gesamtzähler", "$I_Offset", "u"]
],
"Output": [
["Gesamtzählerstand", "Virtueller Gesamtzähler (inkl. Korrektur)", "$O_Total_Counter", "ct"],
["Verbrauch 15 Min", "Verbrauch der laufenden 15 Min", "$O_15Min_Delta", "ct"],
["Verbrauch Stunde", "Verbrauch der laufenden Stunde", "$O_Hour_Delta", "ct"],
["Verbrauch Tag", "Aktueller Verbrauch heute", "$O_Day_Delta", "ct"],
["Verbrauch Woche", "Aktueller Verbrauch diese Woche", "$O_Week_Delta", "ct"],
["Verbrauch Monat", "Aktueller Verbrauch diesen Monat", "$O_Month_Delta", "ct"],
["Verbrauch Quartal", "Aktueller Verbrauch dieses Quartal", "$O_Quarter_Delta", "ct"],
["Verbrauch Jahr", "Aktueller Verbrauch dieses Jahr", "$O_Year_Delta", "ct"],
["Verbrauch Letzte 15 Min", "Abgeschlossener Wert der letzten 15 Min", "$State_15Min_Delta_Prev", "c"],
["Verbrauch Letzte Stunde", "Abgeschlossener Wert der letzten Stunde", "$State_Hour_Delta_Prev", "c"],
["Verbrauch Gestern", "Endwert von gestern", "$State_Day_Delta_Prev", "c"],
["Verbrauch Vorwoche", "Endwert der Vorwoche", "$State_Week_Delta_Prev", "c"],
["Verbrauch Vormonat", "Endwert des Vormonats", "$State_Month_Delta_Prev", "c"],
["Verbrauch Vorquartal", "Endwert des Vorquartals", "$State_Quarter_Delta_Prev", "c"],
["Verbrauch Vorjahr", "Endwert des Vorjahres", "$State_Year_Delta_Prev", "c"]
],
"Level": [
["$I_Raw_Value", "float", 0.0],
["$I_Input_Mode", "integer", 0],
["$I_Pulse_Factor", "float", 1.0],
["$I_Offset", "float", 0.0],
["$O_Total_Counter", "float", 0.0],
["$State_Virtual_Total", "float", 0.0],
["$State_Last_Raw", "float", 0.0],
["$Lgc_New_Input", "bool", false],
["$Lgc_Delta_Calculated", "float", 0.0],
["$Lgc_Delta_Final", "float", 0.0],
["$Lgc_Reset_Detected", "bool", false],
["$Lgc_Mode_Abs_Delta", "float", 0.0],
["$Lgc_Mode_Pulse_Delta", "float", 0.0],
["$O_15Min_Delta", "float", 0.0],
["$O_Hour_Delta", "float", 0.0],
["$O_Day_Delta", "float", 0.0],
["$O_Week_Delta", "float", 0.0],
["$O_Month_Delta", "float", 0.0],
["$O_Quarter_Delta", "float", 0.0],
["$O_Year_Delta", "float", 0.0],
["$State_15Min_Start", "float", 0.0],
["$State_Hour_Start", "float", 0.0],
["$State_Day_Start", "float", 0.0],
["$State_Week_Start", "float", 0.0],
["$State_Month_Start", "float", 0.0],
["$State_Quarter_Start", "float", 0.0],
["$State_Year_Start", "float", 0.0],
["$State_15Min_Delta_Prev", "float", 0.0],
["$State_Hour_Delta_Prev", "float", 0.0],
["$State_Day_Delta_Prev", "float", 0.0],
["$State_Week_Delta_Prev", "float", 0.0],
["$State_Month_Delta_Prev", "float", 0.0],
["$State_Quarter_Delta_Prev", "float", 0.0],
["$State_Year_Delta_Prev", "float", 0.0],
["$Lgc_Unix_Current", "integer", 0],
["$Lgc_Min_Current", "integer", 0],
["$Lgc_Hour_Current", "integer", 0],
["$Lgc_Mon_Current", "integer", 0],
["$Lgc_Wday_Current", "integer", 0],
["$Lgc_Unix_Tomorrow", "integer", 0],
["$Lgc_Mday_Tomorrow", "integer", 0],
["$Reset_15Min", "bool", false],
["$Reset_Hour", "bool", false],
["$Reset_Day", "bool", false],
["$Reset_Week", "bool", false],
["$Reset_Month", "bool", false],
["$Reset_Quarter", "bool", false],
["$Reset_Year", "bool", false],
["$Lgc_15Min_Tick", "bool", false],
["$Lgc_Is_Min_59", "bool", false],
["$Lgc_Is_Hour_23", "bool", false],
["$Lgc_Is_Sunday", "bool", false],
["$Lgc_Is_Last_Day_Month", "bool", false],
["$Lgc_Is_Mon_3", "bool", false],
["$Lgc_Is_Mon_6", "bool", false],
["$Lgc_Is_Mon_9", "bool", false],
["$Lgc_Is_Mon_12", "bool", false],
["$Lgc_Is_Quarter_Month", "bool", false],
["$Lgc_Is_Dec_31", "bool", false],
["$Cron_15", "string", "57 14,29,44,59 * * * *"],
["$F_Sub", "string", "X1 - X2"],
["$F_Add", "string", "X1 + X2"],
["$F_Abs_Delta", "string", "X1 < X2 ? X2 : X2 - X1"],
["$Konst_0", "float", 0.0],
["$Konst_1", "float", 1.0],
["$Konst_True", "bool", true],
["$Konst_False", "bool", false],
["$C_Day_Sec", "integer", 86400],
["$C_Min_58", "integer", 58],
["$C_Hour_22", "integer", 22],
["$C_Wday_0", "integer", 0],
["$C_Mday_1", "integer", 1],
["$C_Mon_3", "integer", 3],
["$C_Mon_6", "integer", 6],
["$C_Mon_9", "integer", 9],
["$C_Mon_12", "integer", 12],
["$C_Mon_11", "integer", 11]
],
"Module": [
["Triggered", "$I_Raw_Value", "$Lgc_New_Input"],
["Cron", "$Konst_True", "$Lgc_15Min_Tick", 0, "$Cron_15"],
["Localtime", 0, "$Lgc_Unix_Current", 0, "$Lgc_Min_Current", "$Lgc_Hour_Current", 0, "$Lgc_Mon_Current", 0, "$Lgc_Wday_Current", 0, 0],
["CalcFormula", ["$Lgc_Unix_Current", "$C_Day_Sec"], "$Lgc_Unix_Tomorrow", "$F_Add"],
["Localtime", "$Lgc_Unix_Tomorrow", 0, 0, 0, 0, "$Lgc_Mday_Tomorrow", 0, 0, 0, 0, 0],
["Comparator", "$Lgc_Min_Current", "$Lgc_Is_Min_59", "$C_Min_58"],
["Comparator", "$Lgc_Hour_Current", "$Lgc_Is_Hour_23", "$C_Hour_22"],
["Limiter", "$Lgc_Wday_Current", 0, "$Lgc_Is_Sunday", ["$C_Wday_0", "$C_Wday_0"]],
["Limiter", "$Lgc_Mday_Tomorrow", 0, "$Lgc_Is_Last_Day_Month", ["$C_Mday_1", "$C_Mday_1"]],
["Limiter", "$Lgc_Mon_Current", 0, "$Lgc_Is_Mon_3", ["$C_Mon_3", "$C_Mon_3"]],
["Limiter", "$Lgc_Mon_Current", 0, "$Lgc_Is_Mon_6", ["$C_Mon_6", "$C_Mon_6"]],
["Limiter", "$Lgc_Mon_Current", 0, "$Lgc_Is_Mon_9", ["$C_Mon_9", "$C_Mon_9"]],
["Limiter", "$Lgc_Mon_Current", 0, "$Lgc_Is_Mon_12", ["$C_Mon_12", "$C_Mon_12"]],
["Or", ["$Lgc_Is_Mon_3", "$Lgc_Is_Mon_6", "$Lgc_Is_Mon_9", "$Lgc_Is_Mon_12"], "$Lgc_Is_Quarter_Month"],
["Comparator", "$Lgc_Mon_Current", "$Lgc_Is_Dec_31", "$C_Mon_11"],
["And", ["$Lgc_15Min_Tick", "$Konst_True"], "$Reset_15Min"],
["And", ["$Reset_15Min", "$Lgc_Is_Min_59"], "$Reset_Hour"],
["And", ["$Reset_Hour", "$Lgc_Is_Hour_23"], "$Reset_Day"],
["And", ["$Reset_Day", "$Lgc_Is_Sunday"], "$Reset_Week"],
["And", ["$Reset_Day", "$Lgc_Is_Last_Day_Month"], "$Reset_Month"],
["And", ["$Reset_Month", "$Lgc_Is_Quarter_Month"], "$Reset_Quarter"],
["And", ["$Reset_Month", "$Lgc_Is_Dec_31"], "$Reset_Year"],
["Comparator", "$I_Raw_Value", "$Lgc_Reset_Detected", "$State_Last_Raw"],
["CalcFormula", ["$State_Last_Raw", "$I_Raw_Value"], "$Lgc_Mode_Abs_Delta", "$F_Abs_Delta"],
["Multiplexer", ["$Konst_0", "$I_Pulse_Factor"], "$Lgc_Mode_Pulse_Delta", "$Konst_True"],
["Multiplexer", ["$Lgc_Mode_Abs_Delta", "$I_Raw_Value", "$Lgc_Mode_Pulse_Delta"], "$Lgc_Delta_Calculated", "$I_Input_Mode"],
["Multiplexer", ["$Konst_0", "$Lgc_Delta_Calculated"], "$Lgc_Delta_Final", "$Lgc_New_Input"],
["CalcFormula", ["$State_Virtual_Total", "$Lgc_Delta_Final"], "$State_Virtual_Total", "$F_Add"],
["CalcFormula", ["$State_Virtual_Total", "$I_Offset"], "$O_Total_Counter", "$F_Add"],
["CalcFormula", ["$State_Virtual_Total", "$State_15Min_Start"], "$O_15Min_Delta", "$F_Sub"],
["CalcFormula", ["$State_Virtual_Total", "$State_Hour_Start"], "$O_Hour_Delta", "$F_Sub"],
["CalcFormula", ["$State_Virtual_Total", "$State_Day_Start"], "$O_Day_Delta", "$F_Sub"],
["CalcFormula", ["$State_Virtual_Total", "$State_Week_Start"], "$O_Week_Delta", "$F_Sub"],
["CalcFormula", ["$State_Virtual_Total", "$State_Month_Start"], "$O_Month_Delta", "$F_Sub"],
["CalcFormula", ["$State_Virtual_Total", "$State_Quarter_Start"], "$O_Quarter_Delta", "$F_Sub"],
["CalcFormula", ["$State_Virtual_Total", "$State_Year_Start"], "$O_Year_Delta", "$F_Sub"],
["Multiplexer", ["$State_15Min_Delta_Prev", "$O_15Min_Delta"], "$State_15Min_Delta_Prev", "$Reset_15Min"],
["Latch", "$State_Virtual_Total", "$State_15Min_Start", "$Reset_15Min", 1],
["Multiplexer", ["$State_Hour_Delta_Prev", "$O_Hour_Delta"], "$State_Hour_Delta_Prev", "$Reset_Hour"],
["Latch", "$State_Virtual_Total", "$State_Hour_Start", "$Reset_Hour", 1],
["Multiplexer", ["$State_Day_Delta_Prev", "$O_Day_Delta"], "$State_Day_Delta_Prev", "$Reset_Day"],
["Latch", "$State_Virtual_Total", "$State_Day_Start", "$Reset_Day", 1],
["Multiplexer", ["$State_Week_Delta_Prev", "$O_Week_Delta"], "$State_Week_Delta_Prev", "$Reset_Week"],
["Latch", "$State_Virtual_Total", "$State_Week_Start", "$Reset_Week", 1],
["Multiplexer", ["$State_Month_Delta_Prev", "$O_Month_Delta"], "$State_Month_Delta_Prev", "$Reset_Month"],
["Latch", "$State_Virtual_Total", "$State_Month_Start", "$Reset_Month", 1],
["Multiplexer", ["$State_Quarter_Delta_Prev", "$O_Quarter_Delta"], "$State_Quarter_Delta_Prev", "$Reset_Quarter"],
["Latch", "$State_Virtual_Total", "$State_Quarter_Start", "$Reset_Quarter", 1],
["Multiplexer", ["$State_Year_Delta_Prev", "$O_Year_Delta"], "$State_Year_Delta_Prev", "$Reset_Year"],
["Latch", "$State_Virtual_Total", "$State_Year_Start", "$Reset_Year", 1],
["Latch", "$I_Raw_Value", "$State_Last_Raw", "$Lgc_New_Input", 0],
["Multiplexer", ["$Reset_Day", "$Konst_False"], "$Reset_Day", "$Reset_Day"],
["Multiplexer", ["$Reset_Month", "$Konst_False"], "$Reset_Month", "$Reset_Month"],
["Multiplexer", ["$Reset_Year", "$Konst_False"], "$Reset_Year", "$Reset_Year"]
]
}
Viel Erfolg beim Testen!
Beste Grüße,
eib-eg