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

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

Hier bitte Eure Diskussionen und Feature Requests zu neuen Logikmodulen und Funktionen des Logik-Editors
Antworten

Ersteller
AndererStefan
Reactions:
Beiträge: 261
Registriert: Sa Mär 02, 2024 11:04 am
Hat sich bedankt: 138 Mal
Danksagung erhalten: 161 Mal

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

#1

Beitrag 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
Zuletzt geändert von ms20de am Di Dez 03, 2024 5:32 pm, insgesamt 3-mal geändert.
TWS 3500XL ID:1486, VPN aktiv, Reboot nach Rücksprache

blaubaerli
Reactions:
Beiträge: 2669
Registriert: Sa Sep 15, 2018 10:26 am
Wohnort: Kerpen
Hat sich bedankt: 998 Mal
Danksagung erhalten: 787 Mal

#2

Beitrag 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
Zuletzt geändert von blaubaerli am Mo Dez 02, 2024 7:39 am, insgesamt 1-mal geändert.
timberwolf168(2600er)VPN offenReboot nach Vereinbarung
timberwolf1699(3500XL)VPN offenReboot jederzeit
wiregate1250
Bitte WIKI lesen.

Ersteller
AndererStefan
Reactions:
Beiträge: 261
Registriert: Sa Mär 02, 2024 11:04 am
Hat sich bedankt: 138 Mal
Danksagung erhalten: 161 Mal

#3

Beitrag 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…
Zuletzt geändert von AndererStefan am Mo Dez 02, 2024 8:24 am, insgesamt 1-mal geändert.
TWS 3500XL ID:1486, VPN aktiv, Reboot nach Rücksprache

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

#4

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

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

#5

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

Ersteller
AndererStefan
Reactions:
Beiträge: 261
Registriert: Sa Mär 02, 2024 11:04 am
Hat sich bedankt: 138 Mal
Danksagung erhalten: 161 Mal

#6

Beitrag 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
Zuletzt geändert von AndererStefan am Di Dez 03, 2024 12:22 am, insgesamt 1-mal geändert.
TWS 3500XL ID:1486, VPN aktiv, Reboot nach Rücksprache

ms20de
Elaborated Networks
Elaborated Networks
Reactions:
Beiträge: 1267
Registriert: Sa Aug 11, 2018 9:14 pm
Hat sich bedankt: 358 Mal
Danksagung erhalten: 696 Mal

#7

Beitrag 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
[ Timberwolf Entwicklung ]

TWS 2400 ID:102 VPN offen, Reboot auf Nachfrage
TWS 3500 ID:695 VPN offen, Bitte kein Reboot ohne Absprache

Ersteller
AndererStefan
Reactions:
Beiträge: 261
Registriert: Sa Mär 02, 2024 11:04 am
Hat sich bedankt: 138 Mal
Danksagung erhalten: 161 Mal

#8

Beitrag von AndererStefan »

Hallo Matthias,

sehr schön und lieben Dank!
TWS 3500XL ID:1486, VPN aktiv, Reboot nach Rücksprache
Antworten

Zurück zu „Feature Requests & Diskussionen Timberwolf Logik (Module & Editor)“