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

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
cheater
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

#1

Beitrag von cheater »

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
Grüße, Dominic

Timberwolf 2400 #126, VPN offen, Reboot nach Absprache

gbglace
Reactions:
Beiträge: 4088
Registriert: So Aug 12, 2018 10:20 am
Hat sich bedankt: 1415 Mal
Danksagung erhalten: 1901 Mal

#2

Beitrag von gbglace »

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

gbglace
Reactions:
Beiträge: 4088
Registriert: So Aug 12, 2018 10:20 am
Hat sich bedankt: 1415 Mal
Danksagung erhalten: 1901 Mal

#3

Beitrag von gbglace »

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

Ersteller
cheater
Reactions:
Beiträge: 695
Registriert: Sa Aug 11, 2018 11:16 pm
Hat sich bedankt: 449 Mal
Danksagung erhalten: 309 Mal

#4

Beitrag von cheater »

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:

Code: Alles auswählen

(X1 > 0) ? X1 : 0
bei negativem Eingang:

Code: Alles auswählen

(X1 > 0) ? 0 : -X1
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.
Grüße, Dominic

Timberwolf 2400 #126, VPN offen, Reboot nach Absprache

Franky
Reactions:
Beiträge: 175
Registriert: Di Dez 24, 2024 1:24 pm
Hat sich bedankt: 78 Mal
Danksagung erhalten: 93 Mal

#5

Beitrag von Franky »

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.

Bild

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.
  ]
}
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 :lol:

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.

gbglace
Reactions:
Beiträge: 4088
Registriert: So Aug 12, 2018 10:20 am
Hat sich bedankt: 1415 Mal
Danksagung erhalten: 1901 Mal

#6

Beitrag von gbglace »

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

Franky
Reactions:
Beiträge: 175
Registriert: Di Dez 24, 2024 1:24 pm
Hat sich bedankt: 78 Mal
Danksagung erhalten: 93 Mal

#7

Beitrag von Franky »

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
Timberwolf 3500L ID:1642; Support-VPN für ElabNET ist an.

Robert_Mini
Reactions:
Beiträge: 3903
Registriert: So Aug 12, 2018 8:44 am
Hat sich bedankt: 1263 Mal
Danksagung erhalten: 2213 Mal

#8

Beitrag von Robert_Mini »

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
Timberwolf Server 2500 / #117 (VPN offen + reboot nach Rückfrage) / zusätzlich: 3500M/#935, 3500L/#1297

Franky
Reactions:
Beiträge: 175
Registriert: Di Dez 24, 2024 1:24 pm
Hat sich bedankt: 78 Mal
Danksagung erhalten: 93 Mal

#9

Beitrag von Franky »

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

Robert_Mini
Reactions:
Beiträge: 3903
Registriert: So Aug 12, 2018 8:44 am
Hat sich bedankt: 1263 Mal
Danksagung erhalten: 2213 Mal

#10

Beitrag von Robert_Mini »

Ich glaube du kannst einfach -$Leistung_In verwenden.
Timberwolf Server 2500 / #117 (VPN offen + reboot nach Rückfrage) / zusätzlich: 3500M/#935, 3500L/#1297
Antworten

Zurück zu „Logikengine & Logik-Editor“