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] [V4.5 IP3] Suche Customlogik für Zerlegung von Datensatz mit pos./neg. Werten in zwei pos. Datensätze
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
-
- Reactions:
- Beiträge: 695
- Registriert: Sa Aug 11, 2018 11:16 pm
- Hat sich bedankt: 449 Mal
- Danksagung erhalten: 309 Mal
[V4.5 IP3] Suche Customlogik für Zerlegung von Datensatz mit pos./neg. Werten in zwei pos. Datensätze
Hallo zusammen,
ich bin gerade vor eine kleine Aufgabe gestellt, da ich meinen Tibber Lesekopf durch einen Hitchi Lesekopf ersetze.
Der Tibber Lesekopf gibt mir die Leistung für Bezug und Einspeisung getrennt mit positiven Werten aus (über Ndoe Red).
Der Hitchi Lesekopf hat nur einen Datensatz für die Leistung --> Positiv = Bezug und Negativ = Einspeisung.
Jetzt ist der Tibber Lesekopf schon mit verschiedenen Zeitserien und Logiken verknüpft.
Gibt es hier schon eine Customlogik, die mir den ankommenden Datensatz mit pos. und neg. Werten in zwei Datensätze mit nur pos. Werten zerlegt?
Wenn nicht könnte sich das bitte jemand mal ansehen.
Grüße, Dominic
ich bin gerade vor eine kleine Aufgabe gestellt, da ich meinen Tibber Lesekopf durch einen Hitchi Lesekopf ersetze.
Der Tibber Lesekopf gibt mir die Leistung für Bezug und Einspeisung getrennt mit positiven Werten aus (über Ndoe Red).
Der Hitchi Lesekopf hat nur einen Datensatz für die Leistung --> Positiv = Bezug und Negativ = Einspeisung.
Jetzt ist der Tibber Lesekopf schon mit verschiedenen Zeitserien und Logiken verknüpft.
Gibt es hier schon eine Customlogik, die mir den ankommenden Datensatz mit pos. und neg. Werten in zwei Datensätze mit nur pos. Werten zerlegt?
Wenn nicht könnte sich das bitte jemand mal ansehen.
Grüße, Dominic
Grüße, Dominic
Timberwolf 2400 #126, VPN offen, Reboot nach Absprache
Timberwolf 2400 #126, VPN offen, Reboot nach Absprache
-
- Reactions:
- Beiträge: 4088
- Registriert: So Aug 12, 2018 10:20 am
- Hat sich bedankt: 1415 Mal
- Danksagung erhalten: 1901 Mal
Na das schaffst doch auch selber ganz ohne Customlogik.
Es geht ja um die Momentanleistungswerte.
Dafür je Richtung eine Logik freie Formel. Beide bekommen den +/- Wert in W als Eingang und die eine Formel mach mit der IF Funktion eine Prüfung ob das kleiner 0 ist und rechnet dann -1*Eingang sonst 0.
Die andere Logik prüft auf positiv und rechnet dann 1*Eingang sonst 0.
Beide Logiken am Ausgang per C oder CT.
Beispiele für Freie Formeln mit Logik sind im Wiki zu dem Logikmodule gut beschrieben.
Ich bin hier jetzt nur am Handy sonst hätte ich das direkt rausgesucht. 100% freihändig habe ich die Formelsyntax nicht im Kopf, aber schon einige davon in meinem Wolf.
Es geht ja um die Momentanleistungswerte.
Dafür je Richtung eine Logik freie Formel. Beide bekommen den +/- Wert in W als Eingang und die eine Formel mach mit der IF Funktion eine Prüfung ob das kleiner 0 ist und rechnet dann -1*Eingang sonst 0.
Die andere Logik prüft auf positiv und rechnet dann 1*Eingang sonst 0.
Beide Logiken am Ausgang per C oder CT.
Beispiele für Freie Formeln mit Logik sind im Wiki zu dem Logikmodule gut beschrieben.
Ich bin hier jetzt nur am Handy sonst hätte ich das direkt rausgesucht. 100% freihändig habe ich die Formelsyntax nicht im Kopf, aber schon einige davon in meinem Wolf.
Zuletzt geändert von gbglace am So Apr 27, 2025 9:06 am, insgesamt 1-mal geändert.
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
#PV 43,2 kWh Akku; 3x VE MP2 5000; 6,7 kWp > 18 Panele an 4x HM1500 + 1 HM800 WR; Open-DTU
#1 Timberwolf 2600 Velvet Red TWS #225 / VPN aktiv / Reboot OK
#2 Timberwolf 2600 Organic Silver TWS #438 / VPN aktiv / Reboot OK
#PV 43,2 kWh Akku; 3x VE MP2 5000; 6,7 kWp > 18 Panele an 4x HM1500 + 1 HM800 WR; Open-DTU
-
- Reactions:
- Beiträge: 4088
- Registriert: So Aug 12, 2018 10:20 am
- Hat sich bedankt: 1415 Mal
- Danksagung erhalten: 1901 Mal
PS: wenn Du das am Laufen hast kannst diese beiden auch in eine Customlogik packen.
Eine Eingangsvariable definieren, zwei Module freie Formel siehe oben. Und zwei Ausgangsvariablen definieren. Dann hast das auch alles in einer Logik.
Ein gutes einfach Übungsobjekt denke ich.
Eine Eingangsvariable definieren, zwei Module freie Formel siehe oben. Und zwei Ausgangsvariablen definieren. Dann hast das auch alles in einer Logik.
Ein gutes einfach Übungsobjekt denke ich.
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
#PV 43,2 kWh Akku; 3x VE MP2 5000; 6,7 kWp > 18 Panele an 4x HM1500 + 1 HM800 WR; Open-DTU
#1 Timberwolf 2600 Velvet Red TWS #225 / VPN aktiv / Reboot OK
#2 Timberwolf 2600 Organic Silver TWS #438 / VPN aktiv / Reboot OK
#PV 43,2 kWh Akku; 3x VE MP2 5000; 6,7 kWp > 18 Panele an 4x HM1500 + 1 HM800 WR; Open-DTU
-
- Reactions:
- Beiträge: 695
- Registriert: Sa Aug 11, 2018 11:16 pm
- Hat sich bedankt: 449 Mal
- Danksagung erhalten: 309 Mal
Servus Göran,
mit Chat GPT hab ich es schon mal geschafft die freien Formeln für die beiden Standardbausteine zu erstellen:
bei positivem Eingang:
bei negativem Eingang:
Wenn jetzt jemand noch Lust hätte dies in einer Customlogik zusammenzufassen wäre das richtig cool.Ich habe es probiert, aber das übersteigt meine Fähigkeiten leider.
mit Chat GPT hab ich es schon mal geschafft die freien Formeln für die beiden Standardbausteine zu erstellen:
bei positivem Eingang:
Code: Alles auswählen
(X1 > 0) ? X1 : 0
Code: Alles auswählen
(X1 > 0) ? 0 : -X1
Grüße, Dominic
Timberwolf 2400 #126, VPN offen, Reboot nach Absprache
Timberwolf 2400 #126, VPN offen, Reboot nach Absprache
-
- Reactions:
- Beiträge: 175
- Registriert: Di Dez 24, 2024 1:24 pm
- Hat sich bedankt: 78 Mal
- Danksagung erhalten: 93 Mal
mal gucken, ob mein unser Frankenstein aus Nutzung von KI (LLM) für Dokumentation und Custom-Logiken das hinbekommt. Ich habe dem Prompt einfach die Forendiskussion aus dem Browser ins Chatfenster kopiert. By the way: Gemini 2.5 Pro (https://aistudio.google.com/) KOSTENFREI, nicht ChatGPT. Google hat momentan nicht nur die Nase, sondern einen ganzen Intercity-Zug Vorsprung.

Nach Eingabe von Ja:
Funzt das? (hab jetzt nur die Syntax überprüfen lassen). Wenn das stimmt hätten wir den ersten Pass des Prompts für eine neue Custom-Logik und könnten in der Doku zum Experimentieren mit dem Prompt einladen. Erkenntnisse der User würde ich gerne in die Optimierung des Prompts stecken.
Wenn es nicht stimmt, habe ich wieder was zu optimieren.
Sorry für being faul und not testing
Franky

Nach Eingabe von Ja:
Code: Alles auswählen
{
"Module": [
// Version: v1.00 (2025-04-27) - Leistungsaufteilung (Bezug/Einspeisung)
// --- START: Berechnung Bezug (Positiv) ---
// Formel: (X1 > 0) ? X1 : 0
["CalcFormula", ["$in_LeistungGesamt"], "$out_LeistungBezug", "$Const_Formula_Bezug"],
// --- END: Berechnung Bezug (Positiv) ---
// --- START: Berechnung Einspeisung (Negativ -> Positiv) ---
// Formel: (X1 > 0) ? 0 : -X1
["CalcFormula", ["$in_LeistungGesamt"], "$out_LeistungEinspeisung", "$Const_Formula_Einspeisung"]
// --- END: Berechnung Einspeisung (Negativ -> Positiv) ---
],
"Level": [
// Konstanten
["$ConstTrue", "bool", true],
["$ConstFalse", "bool", false],
// Die Formeln werden als Konstanten definiert, um die Lesbarkeit im Module-Array zu verbessern.
["$Const_Formula_Bezug", "string", "(X1 > 0) ? X1 : 0"],
["$Const_Formula_Einspeisung", "string", "(X1 > 0) ? 0 : -X1"],
// Input
// Beispielwert: 1500 W Bezug
["$in_LeistungGesamt", "float", 1500.0],
// Outputs (werden durch CalcFormula initialisiert)
["$out_LeistungBezug", "float", 0.0],
["$out_LeistungEinspeisung", "float", 0.0]
],
"Input": [
["Leistung Gesamt", "Leistung vom Zähler (Positiv=Bezug, Negativ=Einspeisung) [W]", "$in_LeistungGesamt", "c"]
],
"Output": [
["Leistung Bezug", "Leistung Bezug (nur positive Werte) [W]", "$out_LeistungBezug", "c"],
["Leistung Einspeisung", "Leistung Einspeisung (nur positive Werte) [W]", "$out_LeistungEinspeisung", "c"]
// --- Lizenz ---
// 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.
]
}
Wenn es nicht stimmt, habe ich wieder was zu optimieren.
Sorry für being faul und not testing

Franky
Zuletzt geändert von Franky am Mo Apr 28, 2025 11:44 am, insgesamt 10-mal geändert.
Timberwolf 3500L ID:1642; Support-VPN für ElabNET ist an.
-
- Reactions:
- Beiträge: 4088
- Registriert: So Aug 12, 2018 10:20 am
- Hat sich bedankt: 1415 Mal
- Danksagung erhalten: 1901 Mal
Die Reihenfolge der groben Struktur verwirrt mich. Ich würde immer erst level dann input / output definieren und als letztes den Part der Module, weil dass das doing der Logik ist.
Die Versionierungskommentare kommen nicht in den Module Block. Und die Konstanten true/false braucht es auch nicht in diesem fall hier.
Die Versionierungskommentare kommen nicht in den Module Block. Und die Konstanten true/false braucht es auch nicht in diesem fall hier.
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
#PV 43,2 kWh Akku; 3x VE MP2 5000; 6,7 kWp > 18 Panele an 4x HM1500 + 1 HM800 WR; Open-DTU
#1 Timberwolf 2600 Velvet Red TWS #225 / VPN aktiv / Reboot OK
#2 Timberwolf 2600 Organic Silver TWS #438 / VPN aktiv / Reboot OK
#PV 43,2 kWh Akku; 3x VE MP2 5000; 6,7 kWp > 18 Panele an 4x HM1500 + 1 HM800 WR; Open-DTU
-
- Reactions:
- Beiträge: 175
- Registriert: Di Dez 24, 2024 1:24 pm
- Hat sich bedankt: 78 Mal
- Danksagung erhalten: 93 Mal
super, danke für die Info, muss ich noch mal überlegen.
Die Reihenfolge der Blöcke ist aber bewusst so gewählt: Level ist recht fix. Ein Betrachter oder Editierer wird schnell Modulblock annavigieren/ändern wollen. Variablennamen fordere ich sprechend ein, somit kein Bedarf erstmal Leven zu durchforsten / wegzuscrollen / dort Kommentare zu lesen.
Und Kommentare (Versionshinweis) sind (json-konformität) angeblich erst innerhalb eines Blocks erlaubt, deshalb im Modulblock. Das stimmt aber vielleicht nicht, da müsste ich nochmal googlen.
LGruß
Frankly
Die Reihenfolge der Blöcke ist aber bewusst so gewählt: Level ist recht fix. Ein Betrachter oder Editierer wird schnell Modulblock annavigieren/ändern wollen. Variablennamen fordere ich sprechend ein, somit kein Bedarf erstmal Leven zu durchforsten / wegzuscrollen / dort Kommentare zu lesen.
Und Kommentare (Versionshinweis) sind (json-konformität) angeblich erst innerhalb eines Blocks erlaubt, deshalb im Modulblock. Das stimmt aber vielleicht nicht, da müsste ich nochmal googlen.
LGruß
Frankly
Timberwolf 3500L ID:1642; Support-VPN für ElabNET ist an.
-
- Reactions:
- Beiträge: 3903
- Registriert: So Aug 12, 2018 8:44 am
- Hat sich bedankt: 1263 Mal
- Danksagung erhalten: 2213 Mal
Hy!
Ich würde das im übrigen mittels Comperator und Multiplexer lösen. Ob Custom oder 2 einzelne sei dann dem einzelnen überlassen.
Lg Robert
Ich würde das im übrigen mittels Comperator und Multiplexer lösen. Ob Custom oder 2 einzelne sei dann dem einzelnen überlassen.
Lg Robert
Timberwolf Server 2500 / #117 (VPN offen + reboot nach Rückfrage) / zusätzlich: 3500M/#935, 3500L/#1297
-
- Reactions:
- Beiträge: 175
- Registriert: Di Dez 24, 2024 1:24 pm
- Hat sich bedankt: 78 Mal
- Danksagung erhalten: 93 Mal
Hallo Robert,
meinst Du Comparator, um zu prüfen, ob der Eingangswert größer als 0 ist?
aber was ist mit Einspeisung? Dann mit Polynomial mal -1 rechnen, um das Vorzeichen zu ändern?
["Comparator", "$Leistung_In", "$IstPositiv", 0]
["Multiplexer", [0, "$Leistung_In"], "$Leistung_Bezug", "$IstPositiv"]
["Polynomial", "$Leistung_In", "$Leistung_Neg_Positiv", [0, -1]] (Berechnet 0 + (-1) * $Leistung_In)
["Multiplexer", ["$Leistung_Neg_Positiv", 0], "$Leistung_Einspeisung", "$IstPositiv"]
Gruß
Franky
(dieser Text enthält Spuren von LLM-Nutzung)
meinst Du Comparator, um zu prüfen, ob der Eingangswert größer als 0 ist?
aber was ist mit Einspeisung? Dann mit Polynomial mal -1 rechnen, um das Vorzeichen zu ändern?
["Comparator", "$Leistung_In", "$IstPositiv", 0]
["Multiplexer", [0, "$Leistung_In"], "$Leistung_Bezug", "$IstPositiv"]
["Polynomial", "$Leistung_In", "$Leistung_Neg_Positiv", [0, -1]] (Berechnet 0 + (-1) * $Leistung_In)
["Multiplexer", ["$Leistung_Neg_Positiv", 0], "$Leistung_Einspeisung", "$IstPositiv"]
Gruß
Franky
(dieser Text enthält Spuren von LLM-Nutzung)
Zuletzt geändert von Franky am Di Apr 29, 2025 5:25 am, insgesamt 1-mal geändert.
Timberwolf 3500L ID:1642; Support-VPN für ElabNET ist an.
-
- Reactions:
- Beiträge: 3903
- Registriert: So Aug 12, 2018 8:44 am
- Hat sich bedankt: 1263 Mal
- Danksagung erhalten: 2213 Mal
Ich glaube du kannst einfach -$Leistung_In verwenden.
Timberwolf Server 2500 / #117 (VPN offen + reboot nach Rückfrage) / zusätzlich: 3500M/#935, 3500L/#1297