NEWS
String [14] in true / false umwandeln.
-
Hallo Leute!
Ich bin neu im ganzen Thema "Node-RED" und habe ein wahrscheinlich ganz einfaches Problem.Folgendes:
Ich habe auf der KNX Seite ein Keypad welches die Eingabe als String [14] schickt, wobei bei mir nur die ersten 4 Teile der 14 Werte wirklich zählen und mehr scheinbar auch nicht gelesen werden kann. (siehe Bild 1 - Rechteckige Kästchen nach Code "1111")
Folgende Codes möchte ich umwandeln:
1111 - soll zu "true" werden
0000 - soll zu "false" werden
Bei allen anderen Eingaben soll nicht ausgebenDeshalb habe ich es mir folgend gedacht:
Das funktioniert so weit auch, allerdings wenn ich jetzt "11111" oder "1111234" am Keypad eingebe (was bis zu 8 Zahlen als Codeeingabe zulässt) kommt aufgrund der "contains" Regel auch ein true raus. Alle anderen Regeln wie "==" funktionieren aber nicht, da ja die unlesbaren Werte des Strings noch mitgeschickt werden, welche ja dann nicht "==" entsprechen.
Ich bin am Verzweifeln, hat jemand von euch eine Idee wie man das Umsetzen kann?
Vielen Dank schonmal!
-
@ju_ Warum machst Du dann contains und belässt es nicht bei "ist gleich"?
Unlesbare Werte kann man ggf. mit einem trim vorher abschneiden.
Man könnte das ganze auch mit einem Buffer Node schön aufbereiten bzw. halt nur die ersten 4 Zeichen lesen.
-
@mickym naja, wie geschreiben funktioniert "==" bzw "ist gleich" nicht, da ich die nicht lesbaren Zeichen nicht mit einfügen kann und dann auch bei Eingabe von "1111" nichts passiert. Der String ist ja in echt noch 10 Zeichen mehr. Hoffe das ist verständlich.
Zum Thema "Buffer Node" habe ich jetzt "node-red-contrib-buffer-parser" gefunden. Ist das die, worauf die anspielst? Würde es mal Probieren. Vielen Dank.
-
@ju_ sagte in String [14] in true / false umwandeln.:
@mickym naja, wie geschreiben funktioniert "==" bzw "ist gleich" nicht, da ich die nicht lesbaren Zeichen nicht mit einfügen kann und dann auch bei Eingabe von "1111" nichts passiert. Der String ist ja in echt noch 10 Zeichen mehr. Hoffe das ist verständlich.
Zum Thema "Buffer Node" habe ich jetzt "node-red-contrib-buffer-parser" gefunden. Ist das die, worauf die anspielst? Würde es mal Probieren. Vielen Dank.
Wie gesagt untersuche halt nur die ersten 4 Zeichen Deiner payload in Deiner switch Node - ich zeigs Dir gleich
Sollte also einfach immer die ersten 4 Zeichen in deinem String vorhanden sein. Sollte das gehen
-
@mickym Das wäre wunderbar.
-
@ju_ sagte in String [14] in true / false umwandeln.:
@mickym Das wäre wunderbar.
Ansonsten falls das ein Buffer ist und JSONATA Fehler wirft (am besten ein Debug direkt hinter die KNX Node nehmen, dann mit der Buffer Node (bzw. dem Parser) die ersten 4 Bytes zu einem String extrahieren.
-
@mickym VIELEN DANK!!
Die Methode mit "$substring(payload,0,4)" funktioniert Wunderbar!
-
@ju_ Na dann ist ja gut - wie gesagt, wenn da ein Buffer rauskäme dann müsstest du umwandeln. Generell, wenn du einzelne Register ausliest, solltest Du Dich dann mit den Buffer Nodes beschäftigen. Ansonsten wenn Du mit Standardnodes auskommst und ist das immer die richtige Wahl.