NEWS
OpenKNX Multi Attribut Datenpunkt 20xx lesen/schreiben
-
Hi Zusammen,
nach zwei Tagen erfolgloser Recherche hoffe ich das ihr mit helfen könnt und somit auch hoffentlich jemanden in Zukunft.
Meinen KNX PM in der Garage kann ich einen Status aufzwingen und dies möchte ich auch über einen Zigbee Taster.
Ziel ist es daher via Blockly den aktuellen Status der GA-Zwang auszulesen und je nach Zustand zu schreiben.Das Format diese Objekts im IoB sieht so aus:
Mögliche Werte die ich auch schon manuell so setzen kann und funktionieren sind:
{"priority":0,"data":0} - Vollautomatik
{"priority":1,"data":0} - Dauer AUS, bis Rückfallzeit abgelaufen
{"priority":1,"data":1} - Dauer AN, bis Rückfallzeit abgelaufenim KNX Bereich ist alles soweit eingerichtet, auch wenn ich im IoB die Werte direkt am Objekt ändere klappen die Einstellungen einwandfrei.
Via Blockly hab ichs weder auf der String noch Attribut x von Objekt Zwang setzen auf Zahl 1 hinbekommen.
Vielleicht hat der ein oder andere bei diesen oder anderen mehrfach Attribut-Objekten schon Expertise die er gerne mal mit mir und anderen teilen könnte?
Gelesen habe ich schon so einiges und ein zwei andere Blocklys habe ich auch schon. Aber bei diesen 2-Bit Objekten scheitere ich regelmäßig. Dimmen,Shellys und Co. Bin aber die ganze Zeit darum gekommen. Jetzt leider nicht mehr aus persöhnlichem Interesse allein schon.Bei Auslesen kommt schon undefined oder {} mit JSON zu Object davor, somit ist auch schon kein "falls" mehr möglich. Deaktivierte Blöcke dürft Ihr ignorieren ware halt zum Test.
Schonmal vielen Dank für denjenigen der sich hier mal dazu auslässt und mich aufklärt.
-
@huligan sagte: mich aufklärt.
Der Wert des Datenpunktes enthält das JSON.
-
@huligan sagte: auszulesen und je nach Zustand zu schreiben.
So kann kann man das Json auslesen, verändern und zurück schreiben:
-
@paul53 Danke Paul, die Konvertierung hatte ich auch schonmal drin ohne Var allerdings aber beim "falls" hänge ich trotzdem.
Das hier funktioniert:
nur hier zwickts sich noch:
Egal ob mit Mathe oder String Wert. -
@huligan sagte: Egal ob mit Mathe oder String Wert.
Das gezeigte JSON enthält Zahlen 0 und 1. Also operiere mit Zahlen.
EDIT: Versuche es mal so:
Die Reihenfolge muss eingehalten werden.
-
@huligan sagte: hier zwickts sich noch:
Wenn prio / data = 0 / 0 sind, stellst du erst auf "1" / "0" und anschließend sofort auf "1" / "1".
-
@paul53 Natürlich ist mir noch nicht aufgefallen da meine "Falls"-Bedingung nie zugetroffen hat.
Ich habs eben mal mit Zahl und String erneut probiert mag beides nur in der "Sonst" landen. Hast d noch ne Idee?PS: Danke bis hierhin schonmal Paul53, ich bin bis Montag Offline, daher nicht wundern wenn es jetzt ein paar Tage dauert bis ich Antworten kann...
-
@paul53
Ich hab nochmal bisschen rumprobiert und dabei ist mir aufgefallen, dass wohl schon das Befüllen des "obj" nicht klappt! Daher ist diese Variable auch leer vor dem Falls-Block und kann nicht ausgewertet werden.sollte ja so ähnlich aussehen:
Allerdings funktioniert, wie oben schonmal erzählt, das Befüllen und Schreiben dann hervorragend und wird auch von den KNX-Geräten dann sauber verarbeitet. Im Log vom Javascript tauchen einige Warnungen auf vielleicht helfen diese bei der Analyse weiter:
-
@huligan sagte: Im Log vom Javascript tauchen einige Warnungen auf
Der Datenpunkt ist vom Typ "object". Dann lass die Wandlung "Objekt nach JSON" bei "steuere" weg; ebenso die Wandlung "JSON nach Objekt" beim Einlesen. Die Wandlung nimmt in diesem Fall der Javascript-Adapter vor.
-
@paul53 said in OpenKNX Multi Attribut Datenpunkt 20xx lesen/schreiben:
ng nimmt in diesem Fall der Javascript-Adapter vor.
Das war´s, ich danke dir recht freundlich. Es tut was es soll und der Cummunity möchte ich das vollständige Ergebnis nicht vorenthalten. Bei jedem kurzen Tastendruck wird auf den nächsten Zustand in der Liste gewechselt:
0/0 zu 1/0
1/0 zu 1/1
1/1 zu 0/0Ist sicher auch bei der ein oder anderen Stelle mit Objekten,JSON´s, Strings und Co. hilfreich.
-
@huligan sagte: Es tut was es soll
Den Block "steuere" benötigt man nur einmal ganz am Ende.
Auch zwei Blöcke "Setze Attribut" kann man sich dort sparen, wo das entsprechende Attribut nicht geändert wird.Vereinfachung:
-
@paul53 said in OpenKNX Multi Attribut Datenpunkt 20xx lesen/schreiben:
Den Block "steuere" benötigt man nur einmal ganz am Ende.
Auch zwei Blöcke "Setze Attribut" kann man sich dort sparen, wo das entsprechende Attribut nicht geändert wird.Wurde vereinfacht und etwas gelernt...
Danke