NEU! UPGRADE IP 10 verfügbar!
Optimierte Darstellung von VISU Editor und VISU Client - sowie viele weitere Verbesserungen
Infos im Wiki: https://elabnet.atlassian.net/l/cp/8HzePCm3

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 IP 10
Jetzt werden alle Fragen beantwortet. Das Video: https://youtu.be/_El-zaC2Rrs

[TOP TIPP] [4.0 IP3] Anwendungsbeispiel Logik-Modul freie Formel

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
gbglace
Reactions:
Beiträge: 3604
Registriert: So Aug 12, 2018 10:20 am
Hat sich bedankt: 1266 Mal
Danksagung erhalten: 1672 Mal

[4.0 IP3] Anwendungsbeispiel Logik-Modul freie Formel

#1

Beitrag von gbglace »

Hallo zusammen,

Hier mal ein Beispiel was man mit dem Modul freie Formel und den Texten dazu im TWS-Wiki machen kann.

Warum das Ganze?
Ich bin ja immer noch dabei mir meine Statistiken der PV-Anlage und meines Dashboards für den Stromverbrauch aufzuhübschen.
Da ich bei mir im Haus auch einige der L&J KNX-Stromzähler habe, ist mir natürlich dieser Beitrag hier KNX-UF Beitrag L&J Zahlenwert Überlauf im KNX-UF nicht entgangen.
Also dachte ich mir da will ich doch mal direkt vorsorgen, bevor mir das später die Werte im Dashboard zerwürfelt.
Außerdem hat es mich, bei der auf kWh basierenden Auswertung des PV-Abdeckungsgrades, sehr gestört keine Nachkommastellen, sondern nur volle kWh ungerundet hart abgeschnitten, zu haben. Was bei einem Gesamttagesverbrauch von < 5kWh einfach zu ungenaue %-Werte ergibt

Die Lösung sollte also den vom Zähler gelieferten Wh Betrag so mit dem gelieferten kWh Betrag verheiraten, dass der kWh Betrag mit 3 Nachkommastellen daherkommt und es dabei egal ist wenn der Wh-Betrag irgendwann mal einige kWh verliert, wegen Überlauf des Wertebereiches für den Zählerstand.

Also gedanklich nehme ich den Wh Betrag Teile ihn durch 1000 (kWh mit 3 Nachkommastellen), und schneide die Vorkommastellen ab und addiere die 0,xxx kWh auf den angelieferten kWh Betrag drauf.

Das Logik-Modul freie Formel bietet dafür die Möglichkeit mit If/then/else Ausdrücken zu arbeiten und kann eine Rundungsfunktion.

Soweit hergeleitet habe ich mir das vorab im xls mit dem Wenn/dann und der richtigen Addition der Werte.
Zu beachten ist das es keine native Funktion gibt die hart abrundet sondern nur Runden auf vollen Integer mit 0 Nachkommastellen, was die IF-Auswertung erforderlich machte.

Das ergab dann folgende zwei Berechnungen:

Je nach dem ob Wh/1000 gerundet abzgl. Wh/1000 negativ oder positiv ist, also ob es gerade kleiner oder größer 500Wh auf dem Zähler sind.

a) bei negativ: kWh Betrag + (1 + Wh/1000 - Wh/1000 gerundet)
b) bei positiv: kWh Betrag + (Wh/1000 - Wh/1000 gerundet)

In der Syntax des Formelparameters in der freien Formel schaut das dann so aus:

X2+((X1/1000)-rint(X1/1000)<0?1+(X1/1000)-rint(X1/1000):(X1/1000)-rint(X1/1000))

Dabei gilt:
X2 ist der kWh Betrag auf dem etwas dynamisch ermittelt drauf addiert werden soll
X1 ist der Wh Betrag
rint() ist die Rundungsfunktion auf den nächsten ganzen Integer
(X1/1000)-rint(X1/1000)<0? ist die IF-Bedingung ob denn die Differenz errechneter kWh - gerundeter errechneter kWh negativ ist
1+(X1/1000)-rint(X1/1000) alles zwischen dem ? und dem : ist die Dann-Aktion
(X1/1000)-rint(X1/1000) alles hinter dem : ist die Sonst-Aktion

Das ganze Wenn-Dann-Sonst ist in einer Klammer gefasst ().

Damit habe ich mit einem Standard-Modul mir einen kWh Betrag mit Nachkommastellen und ohne Wertverlust, wenn der Wh Betrag einen Zahlenüberlauf bekommt und im KNX-Telegramm kWh verloren gehen.

Im Logikeditor schaut das dann so aus.
(Mein originaler Baustein hat noch ein paar weitere Additionen, aber das ist hier jetzt nicht Thema, daher einmal das ganze als Dummy mit manuellen Werten per Doc-Mode).
Screenshot 2023-04-03 191859.jpg

@StefanW
Die Formel ist ja schon recht lang geworden und gerät damit deutlich über die mögliche Feldbreite des Parameter-Eingabefeldes.
Ggf kann man das ja mal noch etwas vergrößern, auf meinem Bildschirm wäre noch reichlich Platz 8-) .
Wobei man das eh besser in einem Bereich zusammentippt wo alles komplett in eine Zeile passt und dann kopiert man es rein.

Probiert es aus und werdet Kreativ. Ich mag das Modul freie Formel, das war doch schon eine deutliche Ausweitung der Möglichkeiten des LE.
Und das Modul lässt sich auch sehr gut in Customlogiken verwenden, wer also mit nummerischen Aktionen viel If/Then/Else zu berücksichtigen hat, kann das sehr gut verwenden. Hinweis dazu am Rande für den LE kann ein boolsches 0/1 TWS-Objekt auch einfach nur 0/1 als Zahl daherkommen und in diesem Modul verwendet werden.
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
Grüße
Göran

#1 Timberwolf 2600 Velvet Red TWS #225 / VPN aktiv / Reboot OK
#2 Timberwolf 2600 Organic Silver TWS #438 / VPN aktiv / Reboot OK
#3 PBM 3 Kanäle, #4 Modbus-Extension

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

#2

Beitrag von StefanW »

Hi Göran,

das ist eine super Beschreibung. Ich habe dafür das Prädikat "TOP TIPP" verliehen.

Wir müssen noch sehen, wie wir das besser auffindbar machen. Habe es mal Sticky gemacht

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.
Antworten

Zurück zu „Logikengine & Logik-Editor“