Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Node-Red
    5. String [14] in true / false umwandeln.

    NEWS

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    String [14] in true / false umwandeln.

    This topic has been deleted. Only users with topic management privileges can see it.
    • J
      JU_ last edited by

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

      1.png

      Folgende Codes möchte ich umwandeln:

      1111 - soll zu "true" werden
      0000 - soll zu "false" werden
      Bei allen anderen Eingaben soll nicht ausgeben

      Deshalb habe ich es mir folgend gedacht:

      2.png

      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!

      mickym 1 Reply Last reply Reply Quote 0
      • mickym
        mickym Most Active @JU_ last edited by mickym

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

        J 1 Reply Last reply Reply Quote 0
        • J
          JU_ @mickym last edited by

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

          mickym 1 Reply Last reply Reply Quote 0
          • mickym
            mickym Most Active @JU_ last edited by mickym

            @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

            5e6d515f-975e-4d95-b0bb-ce7ec01f56fc-image.png

            Sollte also einfach immer die ersten 4 Zeichen in deinem String vorhanden sein. Sollte das gehen

            J 1 Reply Last reply Reply Quote 0
            • J
              JU_ @mickym last edited by

              @mickym Das wäre wunderbar. 🙂

              mickym 1 Reply Last reply Reply Quote 0
              • mickym
                mickym Most Active @JU_ last edited by

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

                J 1 Reply Last reply Reply Quote 0
                • J
                  JU_ @mickym last edited by

                  @mickym VIELEN DANK!! 🙂

                  Die Methode mit "$substring(payload,0,4)" funktioniert Wunderbar!

                  mickym 1 Reply Last reply Reply Quote 0
                  • mickym
                    mickym Most Active @JU_ last edited by

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

                    1 Reply Last reply Reply Quote 0
                    • First post
                      Last post

                    Support us

                    ioBroker
                    Community Adapters
                    Donate

                    710
                    Online

                    31.7k
                    Users

                    79.7k
                    Topics

                    1.3m
                    Posts

                    2
                    8
                    182
                    Loading More Posts
                    • Oldest to Newest
                    • Newest to Oldest
                    • Most Votes
                    Reply
                    • Reply as topic
                    Log in to reply
                    Community
                    Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                    The ioBroker Community 2014-2023
                    logo