KNX Data Secure Unterstützung
für KNX Logger und KNX Busmonitor

KNX Diagnose Monitor, Import des ETS Projektes deutlich beschleunigt, Suche in der Navigation
Mehr Informationen dazu hier im Forum

Insider Version 6 zur 4.5 jetzt für alle Mitglieder des Insider Clubs installierbar
Alle Infos zum Update im Timberwolf Wiki

[Beantwortet] Logik zur Werteaggregierung

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

Ersteller
EarlBacid
Reactions:
Beiträge: 379
Registriert: So Aug 26, 2018 5:59 pm
Wohnort: Herborn
Hat sich bedankt: 138 Mal
Danksagung erhalten: 237 Mal

Logik zur Werteaggregierung

#1

Beitrag von EarlBacid »

Hallo zusammen,

wie ich hier beschrieben habe, habe ich nun meinen Smappee Energiemonitor via MQTT mit meinem Wolf verbunden. Allerdings werden die Werte im Sekundentakt geliefert (nicht einstellbar) und ich habe die Befürchtung, dass ich damit früher oder später die InfluxDB oder die Auswertung in Grafana überstrapaziere.

Ich suche nun eine Logik, die diese Werte auf einem Eingang im Sekundentakt annimmt und daraus einen Mittelwert der z.B. letzten 10 Sekunden bildet, und diesen dann alle 10 Sekunden auf den Ausgang gibt.

Hat jemand eine Idee wie man das realisieren könnte? Am liebsten mit einem Standardbaustein, zur Not aber auch mit einer Custom Logik.

VG
Earl
Wiregate#1504 + PBM
Timberwolf 950Q #233
Timberwolf 3500XL #1459 + PBM/ VPN aktiv / Reboot OK
EFH mit KNX, 1-Wire, DMX, MQTT (RTC PV, OpenWB, AWtrix, OpenDTU), HTTP API (Tibber)
Docker: MQTT Broker, Unifi WLAN Controller, NodeJS, CometVisu

Dragonos2000
Reactions:
Beiträge: 2200
Registriert: So Aug 12, 2018 1:38 pm
Wohnort: Karlsruher Raum
Hat sich bedankt: 492 Mal
Danksagung erhalten: 897 Mal

#2

Beitrag von Dragonos2000 »

Wie wäre es mit einem Tiefpass eingangsseitig und senden des Outputs per Timer?
Lg
Jochen
____________________________________________________________
TW 2600 #188
VPN offen, Zugriff jederzeit, Experimente jederzeit, Reboot jederzeit

Ersteller
EarlBacid
Reactions:
Beiträge: 379
Registriert: So Aug 26, 2018 5:59 pm
Wohnort: Herborn
Hat sich bedankt: 138 Mal
Danksagung erhalten: 237 Mal

#3

Beitrag von EarlBacid »

top, funktioniert!

und nach ein wenig Suchen im Forum habe ich auch entsprechende Anleitung gefunden:
viewtopic.php?f=24&t=1524&p=15889&hilit=tiefpass#p15889

VG
Earl
Wiregate#1504 + PBM
Timberwolf 950Q #233
Timberwolf 3500XL #1459 + PBM/ VPN aktiv / Reboot OK
EFH mit KNX, 1-Wire, DMX, MQTT (RTC PV, OpenWB, AWtrix, OpenDTU), HTTP API (Tibber)
Docker: MQTT Broker, Unifi WLAN Controller, NodeJS, CometVisu

terseek
Reactions:
Beiträge: 309
Registriert: Mi Sep 05, 2018 1:09 pm
Hat sich bedankt: 575 Mal
Danksagung erhalten: 128 Mal

#4

Beitrag von terseek »

Dragonos2000 hat geschrieben: Fr Okt 29, 2021 11:24 am Tiefpass
Ob man das so machen kann hängt davon ab, was Du mit den Werten anfangen möchtest. Wenn Du den zeitlichen Verlauf der Leistung beobachten möchtest, ist diese Lösung wahrscheinlich gut genug.

Wenn Du allerdings aus den Leistungswerten Deinen Energieverbrauch bestimmen willst könnte der Tiefpass Fehler verursachen. Dazu würdest Du nämlich genau den Durchnittswert der Einzelwerte benötigen und ob der Tiefpass das liefert ist mindestens fraglich und müsste ggf. geklärt werden.
TWS 2600 ID:186 + 3 PBM, VPN offen, Reboot nach Vereinbarung
TWS 3500L ID:895 + 1 PBM, VPN offen, Reboot nach Vereinbarung

Ersteller
EarlBacid
Reactions:
Beiträge: 379
Registriert: So Aug 26, 2018 5:59 pm
Wohnort: Herborn
Hat sich bedankt: 138 Mal
Danksagung erhalten: 237 Mal

#5

Beitrag von EarlBacid »

@terseek hast du denn eine bessere Idee? So für den Fall, dass ich darüber den Energieverbrauch bestimmen wollte?

VG
Earl
Wiregate#1504 + PBM
Timberwolf 950Q #233
Timberwolf 3500XL #1459 + PBM/ VPN aktiv / Reboot OK
EFH mit KNX, 1-Wire, DMX, MQTT (RTC PV, OpenWB, AWtrix, OpenDTU), HTTP API (Tibber)
Docker: MQTT Broker, Unifi WLAN Controller, NodeJS, CometVisu

Robosoc
Reactions:
Beiträge: 1908
Registriert: Di Okt 09, 2018 9:26 am
Hat sich bedankt: 643 Mal
Danksagung erhalten: 797 Mal

#6

Beitrag von Robosoc »

Ich denke, das wird ohne Customlogik nicht gehen...
Zumindest wenn man annehmen darf dass der Wert wirklich genau 1x je Sekunde geliefert wird. Wenn man jedoch (um die Genauigkeit zu erhöhen) auch Zeitstempel nutzen will, wird es komplizierter...denn ich denke mal der Leistubgszähler liefert keinen Zeitstempel auf einem zweiten GA, oder?
VG, Sven - 3500 XL ID:1369 | 3500 L ID:1355, VPN offen, Reboot OK

terseek
Reactions:
Beiträge: 309
Registriert: Mi Sep 05, 2018 1:09 pm
Hat sich bedankt: 575 Mal
Danksagung erhalten: 128 Mal

#7

Beitrag von terseek »

EarlBacid hat geschrieben: So Okt 31, 2021 1:20 am hast du denn eine bessere Idee?
Leider nein, habe zwar schon ein paar ganz einfache Logiken im Einsatz, aber was Du hier brauchst übersteigt meine Fähigkeiten.
TWS 2600 ID:186 + 3 PBM, VPN offen, Reboot nach Vereinbarung
TWS 3500L ID:895 + 1 PBM, VPN offen, Reboot nach Vereinbarung

Ersteller
EarlBacid
Reactions:
Beiträge: 379
Registriert: So Aug 26, 2018 5:59 pm
Wohnort: Herborn
Hat sich bedankt: 138 Mal
Danksagung erhalten: 237 Mal

#8

Beitrag von EarlBacid »

@Robosoc die Werte kommen über MQTT im Json Format und beinhalten tatsächlich auch jeweils einen Timestamp.
Der update Intervall ist sollte exakt eine Sekunde sein. Da der Timestamp aber eine Genauigkeit von nur einer Sekunde hat, wird die vermutlich nicht sonderlich hilfreich sein.
Von dem her wäre ein durchschnitt über die letzten x Werte hinreichend genau für meinen Anwendungsfall.
Wiregate#1504 + PBM
Timberwolf 950Q #233
Timberwolf 3500XL #1459 + PBM/ VPN aktiv / Reboot OK
EFH mit KNX, 1-Wire, DMX, MQTT (RTC PV, OpenWB, AWtrix, OpenDTU), HTTP API (Tibber)
Docker: MQTT Broker, Unifi WLAN Controller, NodeJS, CometVisu

Robosoc
Reactions:
Beiträge: 1908
Registriert: Di Okt 09, 2018 9:26 am
Hat sich bedankt: 643 Mal
Danksagung erhalten: 797 Mal

#9

Beitrag von Robosoc »

Sollte funktionieren...Du kannst über einen Eingang die Sprungweite einstellen...zum Testen habe ich da mit dem Wert 3 und 5 gearbeitet. Default ist 10, falls Du nichts vorgibst.

Code: Alles auswählen

/**
* Durchschnitt über Anzahl von Werten berechnen / Wert-Aggregation
* https://forum.timberwolf.io/viewtopic.php?f=24&t=3025&sid=879f2f2e9efcd6fc4c2058b515b49af7
*
* Nutzungsrechte:
* 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. 
*/

{
  "Level": [
   	 ["$In","float",0.0],
    	["$Mittel","float",0.0],
	["$Integral","float",0.0],
    	["$Zwischenwert","float",0.0],
    	["$n","integer",10],
	["$counter","integer",0],
	["$counter+1","integer",0],
    	["$Reset","bool",false],
	["$const_1","integer",1],
    	["$VAR<Inhibit?>","bool",false]
  ],
  "Module": [
	["Break", ["$VAR<Inhibit?>"]],
	["Polynomial", "$In", "$Integral",["$Integral", "$const_1"]],
	["Polynomial", "$const_1", "$counter",["$counter", "$const_1"]],
    	["Ratio" , "$Integral" , "$Zwischenwert" , "$counter"],
	["Polynomial", "$const_1", "$counter+1",["$counter", "$const_1"]],
	["Comparator" , "$counter+1" , "$Reset" , "$n"],
	["Latch","$Zwischenwert","$Mittel","$Reset",1],
	["Latch",0,"$counter","$Reset",1],
	["Latch",0,"$Integral","$Reset",1]
  ],  
  "Input": [
    	["Messwert","Eingang, der regelmässig mit einem neuen Wert versorgt wird.","$In","a"],
    	["Anzahl Werte","Anzahl der Werte, über die der Durchschnitt gerechnet werden soll","$n","u"],
    	["Inhibit","Inhibit","$VAR<Inhibit?>","u"]
  ],
  "Output": [
	["Mittelwert","","$Mittel","c"],
	["Zwischenwerte","","$Zwischenwert?","c"]
  ]
}
VG, Sven - 3500 XL ID:1369 | 3500 L ID:1355, VPN offen, Reboot OK

Ersteller
EarlBacid
Reactions:
Beiträge: 379
Registriert: So Aug 26, 2018 5:59 pm
Wohnort: Herborn
Hat sich bedankt: 138 Mal
Danksagung erhalten: 237 Mal

#10

Beitrag von EarlBacid »

@Robosoc besten Dank, die Custom Logik funktioniert einwandfrei.

Hier auch gleich mal ein Screenshot der den Unterschied der Custom Logik (blau) zur Tiefpass Logik (rot) zeigt. Beide sind so eingestellt, dass sie die sekündlich ankommenden Werte (grün) in eine 10 Sekunden Aggregation zusammenfassen.

zum einen läuft die Tiefpass Logik dem zeitlichen Verlauf nochmals mindestens eine Iteration weiter hinter her. Zum anderen scheint der Tiefpass mit der momentanen Einstellung unter Umständen sensibel für sich regelmäßig wiederholende Spitzen zu sein.
Bild
Wiregate#1504 + PBM
Timberwolf 950Q #233
Timberwolf 3500XL #1459 + PBM/ VPN aktiv / Reboot OK
EFH mit KNX, 1-Wire, DMX, MQTT (RTC PV, OpenWB, AWtrix, OpenDTU), HTTP API (Tibber)
Docker: MQTT Broker, Unifi WLAN Controller, NodeJS, CometVisu
Antworten

Zurück zu „Logikengine & Logik-Editor“