Seite 1 von 1

[V4.1] Freie Formel - Probleme mit Bool Konvertierung (WD-2633)

Verfasst: Mo Dez 02, 2024 12:40 am
von AndererStefan
Hallo zusammen,

ich habe ein kleines Problem oder einen Fehler (?) mit dem Ergebnis einer freien Formel. Ich halte die Fehlerbeschreibung erst mal kurz und liefere wenn sich das Problem konkretisierte Infos/ Bilder nach.

Ich benutze folgende Formel (vereinfacht): x1 >= 800 ?1 :0
Die Berechnung funktioniert und das Ergebnis ist 1.0 oder 0.0 (Float-Zahl).

Den Output möchte ich an ein KNX Objekt von DTP 1.002 (Bool) senden. Laut Popup Hinweis muss eine Konvertierung stattfinden - gerne, sollte ja klappen. Tut es aber nicht: Der Output der Logik wird rot und die Verknüpfung lässt sich nicht speichern.

Verknüpfe ich das Ergebnis stattdessen an eine weitere Und-Logik und mache damit die Konvertierung (Eingangsfunktion) geht alles.

Nun das komische: Wenn ich die Und-Logik deaktiviere und dem Output meiner freien Formel zusätzlich das Bool KNX-Objekt hinzufüge, funktioniert die implizierte Konvertierung.
Tausche ich die Reihenfolge der Output-Verknüpfungen, also erst das KNX-Objekt dann die deaktivierte UND-Logik, wird die Logik rot und lässt sich nicht speichern.

Mache ich etwas falsch? Klingelt das Problem bei jemanden?

Viele Grüße
Stefan

Re: [v4.1] Freie Formel - Probleme mit Bool Konvertierung

Verfasst: Mo Dez 02, 2024 7:39 am
von blaubaerli
Hallo Stefan,

bitte liefere doch entsprechende Screenshots.

Du schreibst „vereinfacht“. Was genau ist darunter zu verstehen? Im Zweifel kommt es bei der Fehlersuche ja auf jedes einzelne Zeichen an.

Danke.

Beste Grüße
Jens

Re: [v4.1] Freie Formel - Probleme mit Bool Konvertierung

Verfasst: Mo Dez 02, 2024 8:24 am
von AndererStefan
Moin Jens,

„vereinfacht“ heißt, dass die Formel etwas länger ist, aber in der gleichen Struktur. Da die Berechnung funktioniert (Dr. Modus) sollte die Formel keine Rolle spielen.

Doch ich kenne solche Situationen/Fehler… manchmal sind es superoffensichtliche Dinge, manchmal Wechselwirkungen um 2 Ecken.

Ich schaffe Screenshots erst heute abend - sofern bis dahin nicht doch jemanden was offensichtliches auffällt. Ehrlich gesagt rechne ich mit einem Anwenderfehler…

Re: [v4.1] Freie Formel - Probleme mit Bool Konvertierung

Verfasst: Mo Dez 02, 2024 6:13 pm
von Robert_Mini
Hallo Stefan!
Ich denke hier ist dürfte tatsächlich die Logik zu streng sein.
Was in dem Fall als Workaround auch gehen sollte:
- Logik ohne Verknüpfen speichern
- im Objektmanager verknüpfen

Lg
Robert von

Re: [v4.1] Freie Formel - Probleme mit Bool Konvertierung

Verfasst: Mo Dez 02, 2024 7:10 pm
von StefanW
Hi Stefan,
AndererStefan hat geschrieben: Mo Dez 02, 2024 12:40 amDer Output der Logik wird rot und die Verknüpfung lässt sich nicht speichern.
In der neuen IP 1 zur V 4.5 haben wir das Verhalten des Logikmanagers bei komplexeren Einstellungen und Verknüpfungen verbessert.

Hast Du Insider? Dann wäre das einen Test wert und Du hast ein Problem weniger?

lg

Stefan

Re: [V4.1] Freie Formel - Probleme mit Bool Konvertierung

Verfasst: Di Dez 03, 2024 12:19 am
von AndererStefan
Guten Abend zusammen,

aaalso, die Anwendung ist eigentlich sehr übersichtlich. Ich möchte einen Integer-Wert aus einer Wetter-API lesen, gegen ein Intervall prüfen und abhängig von dem Ergebnis Wahr/Falsch auf den KNX-Bus senden.

Saubere, funktionierende Lösung
Zunächst zeige ich die Screenshots einer "sauberen" Umsetzung die funktioniert. Es geht um die Logiken Logic_6 und Logic_7:
Per HTTP-API wird von OpenWeatherMap ein Parameter der Wettervorhersage aus einem json ausgelesen und als Integerwert in Objekt RT2 gespeichert. Im Screenshot unten ist das 500 (Code für leichter Regen).

Bild

Mit der Logic_6 ermittel ich, ob RT2 zwischen 800 oder 801 liegt. Ja, das ginge auch anders, aber evtl. möchte ich das später auf 802, ...803 erweitern. Dazu nutze ich die Formel:

Code: Alles auswählen

(X1 >= 800 && X1<= 801) || (X1 ==0) ?1.0:0.0
Das Ergebnis der Formel ist eine Float-Zahl und entweder 1.0 oder 0.0. Den Ausgang der Logik habe ich mit dem Eingang der Logic_7 verbunden.
Mit einer UND-Verknüpfung mache ich eine (eventuell etwas ungelenke) Konvertierung von Float nach Bool. Das Ergebnis wird in KNX-Objekt KX26 geschrieben, ebenfalls Bool.

Bild

Nach dieser Methode funktioniert alles wie beabsichtigt, ist aber mit 2 Logiken nicht sehr elegant. Meine erste Herangehensweise war folgender Versuch:

Nicht funkionierende, direkte Konvertierung

Bild

Es ist nicht möglich die Logik zu speichern, nachdem ich KX26 verknüpfe. Mir ist auch nicht klar, was das rote Feld bedeutet. Also abseits davon, dass es vermutlich auf ein Problem hinweist ;)
Über das Dropdown im roten Feld kann ich nur "Ausgangsfunktion keine" anwählen.

Im Verknüpfungsassistenten wird mir zu KX26 folgendes mitgeteilt:

Bild

Gerne doch! Eine Konvertierung von 1.0 nach true und 0.0 nach false ist genau was ich mir wünsche. Aber, leider... es geht nicht.
Durch Zufall kam ich dann auf die folgende Variante.

Dirty Workaround
Wenn ich zuerst das Eingangs-Objekt für die Konvertierungs-Logic_7 verknüpfe (die jetzt übrigens pausiert ist), dann darf ich als zweites Objekt KX26 verknüpfen:

Bild

Bild

Dann klappts auch mit der Konvertierung. Und oh, es regnet nicht mehr, wie schön. :lol:
Andersherum geht es nicht, dann kommt wieder der rote Kasten.

@Robert_Mini: Jetzt wollte ich am Ende meines Beitrags eigentlich fragen, was du mit "die Logik sei zu streng" meinst, aber dann habe ich noch deinen Tipp ausprobiert (hätte ich wohl zuerst machen sollen :doh:) und die Logik ohne Verknpüfung gespeichert und anschließend in der KNX-Objektverwaltung verknüpft. Und.... geht! :clap:

Bild

Die 800 für "klaren Himmel" habe ich allerdings gefaked ;)

Also bleibt als Fazit: Ich habe eigentlich kein echtes Problem und dank dem Hinweis von Robert auch eine saubere, schlanke Lösung.
Ob jetzt aber alles so funktioniert wie von den Entwicklern gedacht, oder ob da zumindest noch irgendwo ein Hinweis hin sollte, oder ich einfach nur das Handbuch sorgfältiger lesen müsste, vermag ich nicht zu sagen.

@stefanW: Nein, kein Insider. Aber ich hoffe, das Finanzministerium genehmigt nach Ablauf des Inklusiv-Upgrades eine Wartung. - Je mehr ich mich in den letzten Tagen wieder mehr mit dem TWS beschäftige, umso begeisteter bin ich.

Viele Grüße & Gute Nacht
Stefan

Re: [V4.1] Freie Formel - Probleme mit Bool Konvertierung (WD-2633)

Verfasst: Di Dez 03, 2024 6:07 pm
von ms20de
Hallo Stefan,

die Entwickler sind der Meinung, dass der Logik-Editor hier zu streng ist, besonders im Zusammenhang mit der Anzeige im Verknüpfungsassistent.
Mit dem nächsten Release, kann im Logik-Editor direkt eine Verknüpfung von float auf boolean gemacht werden. Wenn der Wert auf dem KNX Bus gesendet wird, findet die Umwandlung statt. Wie bisher auch schon über die KNX-Objektseite oder andere Wege möglich.

Zusätzlich (WD-2634) kann man dann auch Booleans, Ints und Floats auf eine Zeichenkette im KNX Subsystem (DPT 16) senden mit automatischer Konvertierung. Braucht man vielleicht nicht sehr oft, weil mit der String Format Logik schönere Ergebnisse möglich sind, war aber kein Aufwand weil bereits eingebaut aber nicht freischaltet.

Viele Grüße,
Matthias

Re: [V4.1] Freie Formel - Probleme mit Bool Konvertierung (WD-2633)

Verfasst: Di Dez 03, 2024 10:39 pm
von AndererStefan
Hallo Matthias,

sehr schön und lieben Dank!