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. TCP Node -> Werte ermitteln -> iOBroker für vis übergeben

    NEWS

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    TCP Node -> Werte ermitteln -> iOBroker für vis übergeben

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

      Hallo zusammen,

      ich hoffe Ihr könnt mir bei meiner Problemstellung helfen. Aktuell habe ich mich die gesamten letzten Tage mit ioBroker auseinandergesetzt aber leider bisher nicht das passende Ergebnis erreicht. Ich habe mit dem Adapter Node-red einen TCP Node auf einen bestimmten Port connected. Das abhören dieses Streams funktioniert auch ohne Probleme. Nun möchte ich die empfangenen Informationen aber gerne aufbereiten und einzeln per ioBroker für vis zur Verfügung stellen. Nur leider bekomme ich dies nicht hin.

      Der empfangene [msg.payload] : string ist wie folgt aufgebaut:

      XXX:1432468601:0:12345678:3:1:0:0

      Nun meine Fragen/Wünsche:

      1. Je nach Wert für XXX möchte ich die darauf folgenden Informationen, welche mit ":" getrennt sind einzeln an ioBroker übermitteln. XXX kann aktuell nur zwei unterschiedliche Werte annehmen die für mich interessant sind. Alle anderen Werte können ignoriert werden. Leider schaffe ich es schon nicht die ersten 3 Zeichen aus dem String auszulesen umd hiermit weiterzuarbeiten bzw. zu unterscheiden ob der String für mich interessant sein könnte. Ich habe hier mit einer Function und Substring versucht zu arbeiten aber ich erhalte immer (undefinied) als msg.

      2. Weiterhin würde ich gerne die Informationen aus den Strings archivieren und diese in VIS grafisch anzeigen lassen. Pro String eine Zeile und pro Information eine Spalte in dieser Zeile, die Informationen sind ja mit ":" getrennt.

      Zeile1: XXX Spalte1: 1432468601 …

      Zeile2: XXX Spalte1: 5684331466 ...

      der aktuellste String sollte immer oben angeordnet sein

      1. Spalte 1 bzw die erste Information nach XXX beinhaltet einen Timestamp. Diesen würde ich natürlich gerne entsprechend ausgegeben werden.

      Ich hoffe Ihr könnt mir Eure Ansätze mitteilen denn ich sehe vor lauter Bäumen aktuell den Wald nicht mehr, und ich denke das ich nur einen Denkfehler habe. Ich hoffe Ihr könnt mir helfen. Euch noch einen schönen Sonntag.

      Gruß

      Steffen

      1 Reply Last reply Reply Quote 0
      • Bluefox
        Bluefox last edited by

        @Stefnas:

        Hallo zusammen,

        ich hoffe Ihr könnt mir bei meiner Problemstellung helfen. Aktuell habe ich mich die gesamten letzten Tage mit ioBroker auseinandergesetzt aber leider bisher nicht das passende Ergebnis erreicht. Ich habe mit dem Adapter Node-red einen TCP Node auf einen bestimmten Port connected. Das abhören dieses Streams funktioniert auch ohne Probleme. Nun möchte ich die empfangenen Informationen aber gerne aufbereiten und einzeln per ioBroker für vis zur Verfügung stellen. Nur leider bekomme ich dies nicht hin.

        Der empfangene [msg.payload] : string ist wie folgt aufgebaut:

        XXX:1432468601:0:12345678:3:1:0:0

        Nun meine Fragen/Wünsche:

        1. Je nach Wert für XXX möchte ich die darauf folgenden Informationen, welche mit ":" getrennt sind einzeln an ioBroker übermitteln. XXX kann aktuell nur zwei unterschiedliche Werte annehmen die für mich interessant sind. Alle anderen Werte können ignoriert werden. Leider schaffe ich es schon nicht die ersten 3 Zeichen aus dem String auszulesen umd hiermit weiterzuarbeiten bzw. zu unterscheiden ob der String für mich interessant sein könnte. Ich habe hier mit einer Function und Substring versucht zu arbeiten aber ich erhalte immer (undefinied) als msg.

        2. Weiterhin würde ich gerne die Informationen aus den Strings archivieren und diese in VIS grafisch anzeigen lassen. Pro String eine Zeile und pro Information eine Spalte in dieser Zeile, die Informationen sind ja mit ":" getrennt.

        Zeile1: XXX Spalte1: 1432468601 …

        Zeile2: XXX Spalte1: 5684331466 ...

        der aktuellste String sollte immer oben angeordnet sein

        1. Spalte 1 bzw die erste Information nach XXX beinhaltet einen Timestamp. Diesen würde ich natürlich gerne entsprechend ausgegeben werden.

        Ich hoffe Ihr könnt mir Eure Ansätze mitteilen denn ich sehe vor lauter Bäumen aktuell den Wald nicht mehr, und ich denke das ich nur einen Denkfehler habe. Ich hoffe Ihr könnt mir helfen. Euch noch einen schönen Sonntag.

        Gruß

        Steffen `
        Was du machen willst, habe ich nicht ganz verstanden, aber versuche trotzdem zu helfen.

        "XXX:1432468601:0:12345678:3:1:0:0" aufteilen ist sehr einfach:

        Function node:

        var str = msg.payload || "XXX:1432468601:0:12345678:3:1:0:0";
        var parts = str.split(':');
        if (str[0] == "XXX") {
             // Analyse it.
        }
        
        

        > Spalte 1 bzw die erste Information nach XXX beinhaltet einen Timestamp
        In welchem Format: sekunden nach 1970, millisekunden nach 1970?
        ` > var ts = 1432468601;

        var time = (new Date(ts * 1000)).toString(); `
        Wie man die Tabellen aufbaut, kannst du bei fritzbox Flows abschauen.
        721_alexa.jpg

        1 Reply Last reply Reply Quote 0
        • S
          Stefnas last edited by

          Hallo Bluefox,

          vielen lieben Dank für Deine Anwort. Wie bekomme ich den nun den Code so erweitert das ich für jeden Part eine einzelne Ausgabe hinbekomme?

          var str = msg.payload || "XXX:1432468601:0:12345678:3:1:0:0";
          var parts = str.split(':');
          if (str[0] == "XXX") {
               // Analyse it.
          }
          
          

          Beim Timestamp muss ich schauen ob vor oder nach 1970 aber denke danach. Prüf ich aber mal. Danke Dir schon mal. Bastel gerade schon fleissig weiter.

          Gruß

          Stefnas

          1 Reply Last reply Reply Quote 0
          • ruhr70
            ruhr70 last edited by

            str[0] Part 1

            str[1] Part 2

            usw.

            einzeln, per Schleife, …

            Gesendet von iPhone mit Tapatalk

            1 Reply Last reply Reply Quote 0
            • S
              Stefnas last edited by

              wie ich die einzelnen Parts bekomme ist mir klar aber wie ist der befehl zum ausgeben…ach irgendwie check ich das nicht...glaub ich muss mal nen paar Tage Pause machen und mich dann nochmals daran versuchen...hier mal mein Code (bitte nicht lachen ;-))

              var outputMsgs = [];
              var str = msg.payload || "300:1234567890:0:12345:0:756E6B6C617265204175736C6F6573756E67";
              var parts = str.split(':');
              if (str[0] == "300") {
                   // Analyse it.
              }
              for (var p in parts) {
                  outputMsgs.({payload:str[p]});
              }
              return [ outputMsgs ];
              

              464_unbenannt.png

              Quasi soll pro Output ein Part ausgegeben werden…Danke für Eure Geduld 😉

              LG

              Stefnas

              1 Reply Last reply Reply Quote 0
              • Homoran
                Homoran Global Moderator Administrators last edited by

                Sieh mal da,

                http://forum.iobroker.org/viewtopic.php?p=4294#p4294

                Da ist im function node drin, wie man etwas auf mehrere outputs verteilt

                Gruß

                Rainer

                Gesendet von meinem LIFETAB_S785X mit Tapatalk

                1 Reply Last reply Reply Quote 0
                • S
                  Stefnas last edited by

                  ah cool danke 🙂 wird gerade probiert…

                  Gesendet von iPad mit Tapatalk

                  1 Reply Last reply Reply Quote 0
                  • S
                    Stefnas last edited by

                    Hallo zusammen,

                    nach einem Tag Abstand und den vielen netten Beiträgen habe ich es hinbekommen, und zwar genau so wie es soll. Ich danke Euch.

                    Gruß

                    Stefnas

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

                    Support us

                    ioBroker
                    Community Adapters
                    Donate

                    709
                    Online

                    31.7k
                    Users

                    79.7k
                    Topics

                    1.3m
                    Posts

                    4
                    8
                    2465
                    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