Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Msg.payload werte extrahieren

    NEWS

    • [erledigt] 15. 05. Wartungsarbeiten am ioBroker Forum

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    Msg.payload werte extrahieren

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

      Hallo,

      folgendes Problem:

      Ich habe 2 Sensoren DSB1820 am Raspi hängen, ich bekommen über das "DS18B20 Node" folgende Daten übermittelt:

      12.3.2018, 20:34:11node: 7d1736a7.4602f8
      msg.payload : array[2]
      array[2]
      0: object
      family: "28"
      id: "FF58F6011502"
      dir: "w1_bus_master1"
      file: "28-021501f658ff"
      temp: 22.5
      1: object
      family: "28"
      id: "FF5701031503"
      dir: "w1_bus_master1"
      file: "28-0315030157ff"
      temp: 22.562
      

      2717_bildschirmfoto_2018-03-12_um_20.50.05.png
      2717_bildschirmfoto_2018-03-12_um_20.48.35.png

      Ich möchte die beiden Temperaturwerte extrahieren um diese an einer Anzeige auf der Weboberfläche zu zeigen.

      Habe leider keine Ahnung von Javascript denke aber das es nicht schwierig sein kann, das zu bewerkstelligen.

      Meine Recherchen zeigten das entweder das Function Node oder das Split Node an mein Ziel führen könnten.

      Kann mir hier jemand helfen?

      1 Reply Last reply Reply Quote 0
      • G
        Garf last edited by

        @okifet96:

        Ich möchte die beiden Temperaturwerte extrahieren um diese an einer Anzeige auf der Weboberfläche zu zeigen. `

        Ist absolut kein Problem. Die Werte bzw. die Variable läßt sich kopieren und an das gauge-Node übergeben. Du gehst auf >_ und kopierst dir die Variable (Path copied), z.B. payload[0]. Setzt Du noch ein msg. davor, dann kannst Du den Inhalt einer beliebigen Variablen zuordnen und weiterverarbeiten. Das machst Du am besten in einem function-Node.

        1 Reply Last reply Reply Quote 0
        • O
          okifet96 last edited by

          Hey Garf, danke für die rasche Antwort,

          leider hab ichs nicht zustande gebracht.

          Ich habe im Debug Fenster die 1. und 2. Temp. kopiert:

          payload[0].temp

          payload[1].temp

          waren die Daten,

          hab dann das im Function Node eingefügt und 2 Ausgänge gemacht:
          2717_bildschirmfoto_2018-03-12_um_21.29.33.png

          hab diese dann jeweils an eine Gauge verbunden jedoch kamen keine Werte an und im Debug Fenster

          kam auch wieder nicht das gewünschte an:
          2717_bildschirmfoto_2018-03-12_um_21.31.55.png

          Wo ist mein Denkfehler?

          1 Reply Last reply Reply Quote 0
          • G
            Garf last edited by

            @okifet96:

            Wo ist mein Denkfehler? `
            Schon nicht schlecht für den Anfang. Ich würde noch zwei Kleinigkeiten ändern. Ob man es noch vereinfachen könnte, dass schauen wir dann später mal.

            Du brauchst zwei Function-Nodes mit je einem Ausgang und folgendem Inhalt:

            msg.payload=msg.payload[0].temp;

            global.set("temp1",msg.payload[0]); //schreibt den Wert in eine globale Variable

            return msg;

            Function-Node 2:

            msg.payload=msg.payload[0].temp;

            global.set("temp2",msg.payload[1]);

            return msg;

            Das Setzen der globalen Variablen kannst Du natürlich auch weglassen. Ich möchte damit nur zeigen, dass Du die Messwerte als globale Variable in allen Flows und Nodes von Node-Red zur Verfügung stellen kannst. Den Wert der globalen Variablen kannst Du dir im contextbrowser ansehen.

            Die Function-Nodes werden mit dem rpi-ds Node und dem jeweiligen gauge-Node verbunden. Zur Kontrolle schließt Du dann noch ein debug-Node an. Bei Fragen, fragen.

            1 Reply Last reply Reply Quote 0
            • O
              okifet96 last edited by

              ich habe gestern Nacht noch sehr lange rumprobiert und bin dann auf diese Lösung gekommen:

              Mittels 2 "Change Nodes" konnte ich die Werte separieren:
              2717_bildschirmfoto_2018-03-13_um_14.56.50.png

              Habe nun deine Lösung ausprobiert und sie funktioniert auch prima,

              Wie könnte ich die Globale Variable woanders wieder aufrufen?

              Ich würde dann quasi keine direkte Verbindung mit den Nodes benötigen sonder nur die Variable einbauen?

              1 Reply Last reply Reply Quote 0
              • G
                Garf last edited by

                @okifet96:

                Mittels 2 "Change Nodes" konnte ich die Werte separieren:

                Wie könnte ich die Globale Variable woanders wieder aufrufen?

                Ich würde dann quasi keine direkte Verbindung mit den Nodes benötigen sonder nur die Variable einbauen? `

                Change Node geht natürlich auch.

                Die globale Variable kannst Du im Function Node über global.get("temp") wieder einer beliebigen Variablen zuordnen.

                Beispiel: var temp = global.get("temp");

                In verschiedenen Nodes (z.B. dem inject-Node) lassen sich die globalen Variablen als Inputwert weiterverarbeiten.

                Insgesamt gibt es folgende Variablentypen:

                Die einfachste Form

                var x = 1;

                Diese Variablen behalten ihren Wert nur innerhalb des Function Node und werden bei jedem inject wieder mit ihrem Eingangswert, hier mit dem Wert 1, versehen. Dieser Variablentyp ist als Zähler nicht geeignet.

                Die context Variable

                context.set("x",1);

                Um einen Variablenwert dauerhaft im function-Node festzuschreiben muss dieser Variablentyp gewählt werden. Der Variablenwert kann nur in dem definierten Node verwendet werden. Andere Nodes wie das switch-Node, inject-Node und change-Node können nicht auf die Variable zugreifen.

                Die definierten context-Variablen werden im contextbrowser unter Node angezeigt.

                Die flow Variable

                Die Werte aus diesem Variablentyp können im gesamten Flow (außer in Subflows) und somit in allen auf der Seite befindlichen Nodes ausgelesen werden.

                Der Variablenwert kann im gesamten Flow verwendet werden. Andere Nodes wie das switch-Node, inject-Node und change-Node können ebenfalls lesend und schreibend auf die Variable zugreifen.

                Die definierten context-Variablen werden im contextbrowser unter Flow angezeigt.

                Die globale Variable

                Die Werte aus diesem Variablentyp können über alle Flows von Node-Red in den Nodes ausgelesen werden. Andere Nodes wie das switch-Node, inject-Node und change-Node können ebenfalls lesend und schreibend auf die Variable zugreifen.

                Die definierten globalen-Variablen werden im contextbrowser unter Global angezeigt.

                1 Reply Last reply Reply Quote 0
                • R
                  rewenode last edited by

                  Perfekte Auflistung
                  ` > Die flow Variable

                  Die Werte aus diesem Variablentyp können im gesamten Flow und somit in allen auf der Seite befindlichen Nodes ausgelesen werden. … `
                  außer in Subflows

                  1 Reply Last reply Reply Quote 0
                  • G
                    Garf last edited by

                    @rewenode:

                    außer in Subflows `
                    Wie und wo legt man diese an. Ich lerne, was Node-Red betrifft, immer gerne noch dazu. Und deutschsprachige Literatur zu Node-Red habe ich bisher noch keine gefunden.

                    1 Reply Last reply Reply Quote 0
                    • R
                      rewenode last edited by

                      @Garf:

                      @rewenode:

                      außer in Subflows Wie und wo legt man diese an. Ich lerne, was Node-Red betrifft, immer gerne noch dazu. Und deutschsprachige Literatur zu Node-Red habe ich bisher noch keine gefunden.

                      https://github.com/node-red/node-red/wi … :-subflows
                      3999_subflow.png

                      1 Reply Last reply Reply Quote 0
                      • G
                        Garf last edited by

                        Cool.

                        Gesehen habe ich den Menüpunkt schon mal. Da muss ich den Subflow wohl mal austesten.

                        Danke für die Info

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

                        Support us

                        ioBroker
                        Community Adapters
                        Donate

                        501
                        Online

                        31.6k
                        Users

                        79.5k
                        Topics

                        1.3m
                        Posts

                        3
                        10
                        18780
                        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