NEU! UPGRADE IP 11 verfügbar!
NEU! LICHTWIDGET - DPT 7.600 - Logik Manager Update - sowie viele weitere Verbesserungen
Infos im Wiki: https://elabnet.atlassian.net/l/cp/B9MUEJj2

Insider & Leistungsmerkmale FÜR ALLE freigeschaltet
Ab sofort kann jeder die neue VISU & IFTTT testen. Info: viewtopic.php?f=8&t=5074

Release V 4 am 15. Juni 2024
Es gibt nun einen fixen Termin. Info: viewtopic.php?f=8&t=5117

NEU! Ausführliches Video Tutorial zur VISU
Jetzt werden alle Fragen beantwortet. Das Video: https://youtu.be/_El-zaC2Rrs

Logik für Delta-Berechnung aus Zähler

Informationen und Diskussionen über Logik-Engine und Logik-Editor
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
Antworten

Ersteller
danik
Reactions:
Beiträge: 392
Registriert: Mo Sep 10, 2018 8:40 pm
Hat sich bedankt: 267 Mal
Danksagung erhalten: 266 Mal

Logik für Delta-Berechnung aus Zähler

#1

Beitrag von danik »

Hi

Ich habe mehrere KNX-Geräte welche Zählwerte senden (z.B. Regenmenge, Wasserverbrauch, ..). Ich würde da gerne das Delta zwischen zwei Zeitpunkten berechnen und den Zählerwert ggf. Umrechnen mit einem Faktor. Das umrechnen klappt mit dem Statistik-Baustein, aber wie kann ein Delta aus zwei Objekten ermittelt werden?

Ich stelle mir dies wie folgt vor:
- Trigger z.B. jede Stunde (einstellbar)
- Input: Wert von Zähler aktuell + Zählerstand vom letzten Aufruf (gespeichert)
- output: Ergebnis (Differenz) + aktueller Zählerstand (speichern)
- Faktor (optional, um z.B. Ergebnis gleich umzurechnen)

Problem wo ich da im Moment noch sehe: wenn der TW neu gestartet werden muss und der zwischengespeicherte Wert dann weg ist (Funktion zum persistenten Speichern gibt es im Moment ja noch nicht).

Ein anderer Weg wäre eine Logik um die Datenbankeinträge aus der Timeserie zu lesen und da das Delta zu berechnen. Aber ich stelle mir dies um einiges komplexer vor.

Danke und Gruss
Dani
TW 3500L (#882) + TW 950Q (#321, im Moment inaktiv), VPN offen, Reboot nach Rücksprache

S. Kolbinger
Elaborated Networks
Reactions:
Beiträge: 588
Registriert: Mi Aug 15, 2018 11:34 am
Hat sich bedankt: 82 Mal
Danksagung erhalten: 559 Mal

#2

Beitrag von S. Kolbinger »

Hallo Dani,
danik hat geschrieben: Do Mai 30, 2019 11:13 pm Ich würde da gerne das Delta zwischen zwei Zeitpunkten berechnen und den Zählerwert ggf. Umrechnen mit einem Faktor.
Das sollte mit folgender Custom-Logik möglich sein:

Code: Alles auswählen

{
	"Level": [
		["$Eingang","float",0.0],
		["$Ergebnis","float",0.0],
		["$Gemerkt","float",0.0],
		["$Delta","float",0.0],
		["$GemNull","bool",true],
		["$KonstNull","int",0],
		["$KonstEins","int",1],
		["$Autostart","bool",true],
		["$Clock","bool",true],
		["$Intervall","float",300.0],
		["$Faktor","float",1.0],
		["$VAR<Inhibit?>", "bool", false]
	],
	"Module": [
		["Break", ["$VAR<Inhibit?>"]],
		["Limiter","$Gemerkt",0,"$GemNull",["$KonstNull","$KonstNull"]],
		["Multiplexer",["$Gemerkt","$Eingang"],"$Gemerkt","$GemNull"],
		["Polynomial","$Eingang","$Delta",["-$Gemerkt","$KonstEins"]],
		["Polynomial","$Delta","$Ergebnis",["$KonstNull","$Faktor"]],
		["Clocksignal","$Autostart","$Clock","$Intervall"],
		["Latch","$Eingang","$Gemerkt","$Clock",3]
	],
	"Input": [
		["In", "Eingang", "$Eingang", "a"],
		["Intervall", "Abfrage-Intervall", "$Intervall", "u"],
		["Faktor", "Normierungsfaktor", "$Faktor", "u"],
		["Inhibit", "INHIBIT", "$VAR<Inhibit?>", "u"]
	],
	"Output": [
		["Out","zeitlich Veränderung","$Ergebnis","t"]
	]
}
Bild
danik hat geschrieben: Do Mai 30, 2019 11:13 pm Problem wo ich da im Moment noch sehe: wenn der TW neu gestartet werden muss und der zwischengespeicherte Wert dann weg ist (Funktion zum persistenten Speichern gibt es im Moment ja noch nicht).
Bei der obigen Logik wird erst nach Ablauf eines Intervalls der erste Wert rausgeschickt.
Als Basiswert für das erste Delta dient der allererste Wert der nach dem Start der Logik reinkommt.
Diese Logik setzt voraus, dass alle eingehenden Werte ungleich 0 sind, wegen der Erkennung eines nicht initialisierten Basis-Wertes.
Die sollte bei deinen Zählern aber der Fall sein. Andernfalls müsste man die Initialwerterkennung anpassen.
danik hat geschrieben: Do Mai 30, 2019 11:13 pm Ein anderer Weg wäre eine Logik um die Datenbankeinträge aus der Timeserie zu lesen und da das Delta zu berechnen. Aber ich stelle mir dies um einiges komplexer vor.
Das ist die Variante, die wir im Hinterkopf haben.
Geplant sind Objekte, die durch zyklische Abfragen aus der Zeitserien-DB erzeugt werden.

Ganz allgemein gilt zu sagen, dass solche Abfragen zu reinen Anzeigezwecken schon jetzt mit Grafana möglich sind.
Die obige Logik braucht man daher eigentlich nur, wenn man diese Delta-Werte in anderen KNX-Geräten oder in weiteren Logiken verwenden will.

Viel Spaß beim ausprobieren.
Gruß,
Stefan K.

Ersteller
danik
Reactions:
Beiträge: 392
Registriert: Mo Sep 10, 2018 8:40 pm
Hat sich bedankt: 267 Mal
Danksagung erhalten: 266 Mal

#3

Beitrag von danik »

S. Kolbinger hat geschrieben: Fr Mai 31, 2019 3:58 pm Das sollte mit folgender Custom-Logik möglich sein:
Danke, läuft und. Werde es jetzt mal noch über längere Zeit beobachten. Aber wie ich verstanden habe stimmen die Werte nach einem TW-Neustart nicht mehr (müsste wohl der Zähler vorher zurückgesetzt werden)
S. Kolbinger hat geschrieben: Fr Mai 31, 2019 3:58 pm
Ganz allgemein gilt zu sagen, dass solche Abfragen zu reinen Anzeigezwecken schon jetzt mit Grafana möglich sind.
Die obige Logik braucht man daher eigentlich nur, wenn man diese Delta-Werte in anderen KNX-Geräten oder in weiteren Logiken verwenden will.
Ja, ist mir bekannt. Wobei ich es um einiges einfacher finde, die Werte z.B. alle Stunde absolut in der DB zu haben und so Auswertungen zu machen als immer die Differenz berechnen zu müssen, speziell für die längere Archivierung. Zudem ist dies dann auch einfacher, falls mal der Zähler zurückgesetzt werden muss (dann passt es mit Zählwerten gar nicht mehr).

Danke und Gruss
Dani
TW 3500L (#882) + TW 950Q (#321, im Moment inaktiv), VPN offen, Reboot nach Rücksprache

gospelrock
Reactions:
Beiträge: 193
Registriert: Mo Sep 24, 2018 3:40 pm
Wohnort: Wildau
Hat sich bedankt: 34 Mal
Danksagung erhalten: 64 Mal

#4

Beitrag von gospelrock »

Ich würde diese Logik gerne für die Berechnung des Wasserverbrauchs pro Tag für meine Gartenbewässerung nutzen.
In welcher Zeiteinheit erwartet die Logik die Angabe des Zeitintervalls?
Ich würde gerne einmal am Tag zu einem bestimmten Zeitpunkt die Abfrage starten und die Differenz berechnen lassen.

Mittlerweile kann man ja die Persistenz für die Logik aktivieren um den Zählerstand nach einem Neustart nicht zu verlieren.

Vielen Dank und Grüße,
Peter
Wiregate1784
Timberwolf 950Q #265, Wartungs VPN offen; Restart jederzeit möglich
Timberwolf 3500XL #1405, 2x PBM 3x40, Wartungs VPN offen; Restart jederzeit möglich

Ersteller
danik
Reactions:
Beiträge: 392
Registriert: Mo Sep 10, 2018 8:40 pm
Hat sich bedankt: 267 Mal
Danksagung erhalten: 266 Mal

#5

Beitrag von danik »

Hi

Es sind Sekunden. Ich selber nutze die Logik nicht mehr. Habe jetzt die Möglichkeiten mit Grafana begriffen, wie ich da aus kumulierten Zählerwerten die Differenz errechnen kann. So bin ich flexibel ob ich die Verbrauchswerte nach Stunden, Tage oder was auch immer ermitteln und grafisch darstellen kann. Finde ich echt cool. Kann gerne noch Screenshots nachreichen wenn gewünscht.

Das einzige was noch fehlt ist der aggregierte Zugriff auf werte für Logiken. Ich habe da im Moment aber keine Notwendigkeit.

Gruss
Dani
TW 3500L (#882) + TW 950Q (#321, im Moment inaktiv), VPN offen, Reboot nach Rücksprache

gospelrock
Reactions:
Beiträge: 193
Registriert: Mo Sep 24, 2018 3:40 pm
Wohnort: Wildau
Hat sich bedankt: 34 Mal
Danksagung erhalten: 64 Mal

#6

Beitrag von gospelrock »

Hallo Dani,
über Screenshots würde ich mich freuen und vielleicht kann es ja sonst auch noch jemand gebrauchen.

Vielen Dank!
Wiregate1784
Timberwolf 950Q #265, Wartungs VPN offen; Restart jederzeit möglich
Timberwolf 3500XL #1405, 2x PBM 3x40, Wartungs VPN offen; Restart jederzeit möglich

Ersteller
danik
Reactions:
Beiträge: 392
Registriert: Mo Sep 10, 2018 8:40 pm
Hat sich bedankt: 267 Mal
Danksagung erhalten: 266 Mal

#7

Beitrag von danik »

Hi

Hier mal ein Bild und die Formel dazu.

Grafana_Wasserverbrauch.png
Einstellung für Verbrauch pro Stunde (Chart oben links)

Diagram_Verbauch pro Stunde.png
Und hier mal noch eine Grafana-Formel aus einem anderen Chart (Daten vom letzten Monat)

Formel letzten Monat.png
Gruss
Dani
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
TW 3500L (#882) + TW 950Q (#321, im Moment inaktiv), VPN offen, Reboot nach Rücksprache

gospelrock
Reactions:
Beiträge: 193
Registriert: Mo Sep 24, 2018 3:40 pm
Wohnort: Wildau
Hat sich bedankt: 34 Mal
Danksagung erhalten: 64 Mal

#8

Beitrag von gospelrock »

Super! Vielen Dank!
In Grafana bin ich auch gerade erst dabei mich ein bischen einzuarbeiten. Dein Tip wird mich bestimmt weiterhelfen.

Gruß,
Peter
Wiregate1784
Timberwolf 950Q #265, Wartungs VPN offen; Restart jederzeit möglich
Timberwolf 3500XL #1405, 2x PBM 3x40, Wartungs VPN offen; Restart jederzeit möglich
Antworten

Zurück zu „Logikengine & Logik-Editor“