Skip to content
  • Recent
  • Tags
  • 0 Unread 0
  • Categories
  • Unreplied
  • Popular
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse
Logo
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. Msg payload string wert extrahieren

NEWS

  • Wartung am 15.11. – Forum ab 22:00 Uhr nicht erreichbar
    BluefoxB
    Bluefox
    11
    2
    227

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    8.0k

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    13
    1
    1.7k

Msg payload string wert extrahieren

Msg payload string wert extrahieren

Scheduled Pinned Locked Moved Skripten / Logik
24 Posts 4 Posters 20.8k Views
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • G Offline
    G Offline
    Garf
    wrote on last edited by
    #8

    Klar könnte ich dir das fertige Javascript posten und Du hättest die Lösung. Besser wäre es jedoch, wenn Du verstehst was Du da eigentlich machst und wie dies alles in Node Red so funktioniert.

    Aus deinem Posts kann ich herauslesen, dass bei dir das Grundlagenwissen und Verständnis noch fehlt. :roll:

    Ist auch nachvollziehbar und nicht schlimm. Woher soll man es als Anfänger auch haben.

    Hier kannst Du dich in das Thema einlesen: https://nodered.org/docs/user-guide/messages

    Mich würde erst einmal interessieren, ob Du dein vorheriges Script um die eine Zeile ergänzt hast und nun ein Ergebnis im debug Node siehst. Wenn ja, wie sieht dies aus?

    Deshalb bleibe noch kurz bei deinem kleinen Javascript und schau dir das Ergebnis mit dem Substring genau an. Im Anschluss machen wir uns dann auf den richtigen Weg und benutzen an Stelle der Substring Javafunktion die Splitfunktion. Diese erstellt automatisch die Array. Ich schaue mich in der Zwischenzeit noch mal um, ob es hierfür nicht schon ein fertiges Node gibt.

    1 Reply Last reply
    0
    • inesaI Offline
      inesaI Offline
      inesa
      wrote on last edited by
      #9

      Hallo

      Wenn ich diese Funktion einfüge bekomme ich im Debug dies

      "Function tried to send a message of type string"

      var msg = msg.payload;

      var test = msg.substr(3,6);

      msg.payload = test;

      return msg;

      egal welche zahlen ich eingebe bekomme nur diese Fehlermeldung

      Ines

      1 Reply Last reply
      0
      • G Offline
        G Offline
        Garf
        wrote on last edited by
        #10

        Hi,

        eine unglückliche Auswahl der Variablennamen führt zu dem Fehler.

        Versuche es bitte mit folgendem Javascript:

        var string = msg.payload;
        var test = string.substr(3,6);
        msg.payload = test;
        return msg;
        

        Hier noch der kleine Testflow.

        [{"id":"a34c31f5.640b28","type":"inject","z":"1109363a.41365a","name":"","topic":"","payload":"{\"Time\":\"2018-06-08T15:22:49\",\"ENERGY\":{\"Total\":66.302,\"Yesterday\":0.410,\"Today\":0.268,\"Period\":1,\"Power\":18,\"Factor\":0.48,\"Voltage\":231,\"Current\":0.162}}","payloadType":"str","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":110,"y":200,"wires":[["8c0169c.096a698"]]},{"id":"8c0169c.096a698","type":"function","z":"1109363a.41365a","name":"","func":"var string = msg.payload;\nvar test = string.substr(3,6);\nmsg.payload = test;\nreturn msg;","outputs":1,"noerr":0,"x":330,"y":200,"wires":[["147c1657.ec1dc2"]]},{"id":"147c1657.ec1dc2","type":"debug","z":"1109363a.41365a","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","x":520,"y":200,"wires":[]}]
        

        Dann bitte ein wenig testen und wieder melden. Dann gehen wir das eigentliche Problem an, damit du endlich zu dem gewünschten Ergebnis kommst.

        1 Reply Last reply
        0
        • inesaI Offline
          inesaI Offline
          inesa
          wrote on last edited by
          #11

          Wenn ich diesen Code verwende bekomme ich als Anzeige im gauge

          var string = msg.payload;
          var test = string.substr(9,10);
          msg.payload = test;
          return msg;
          

          "2018" warum versteh ich noch nicht so richtig wie wird das im String gezählt ?

          Mit inject node string und debug node bekomme ich von deinen testflow dies

          "id":"a" als filter habe ich das verwendet

           var string = msg.payload;
          var test = string.substr(3,6);
          msg.payload = test;
          return msg;
          

          Bei a34c31f und diesen code

          var string = msg.payload;
          var test = string.substr(7,8);
          msg.payload = test;
          return msg;
          

          Verstehe einfach nicht wie das gezählt hier wird

          Ines

          1 Reply Last reply
          0
          • G Offline
            G Offline
            Garf
            wrote on last edited by
            #12

            @inesa:

            Wenn ich diesen Code verwende bekomme ich als Anzeige im gauge "2018" warum versteh ich noch nicht so richtig wie wird das im String gezählt ? `

            Das kann doch nicht funktionieren. Das Dashboard gauge Node erwartet einen Zahlenwert (float oder integer) und keinen String. Wir benutzen zur Zeit nur Strings. Warum bleibst Du nicht erst auf der Flowseite und schaust dir die Ergebnisse im debug Node an?

            Die Ergebenisse sieht man rechts unter debug.

            3639_screen2.jpg

            > Wie kann man deinen teststring einsetzen… Mit den Grundlagen solltest Du dich aber noch einmal sehr intensiv beschäftigen!

            Das ist ein Flow (clipboard), den importiert man nach Node Red. Über das Menü, dann import auswählen, dann Clipboard und mit copy und paste den Code in das große Fenster kopieren und auf deiner Flowseite abspeichern. Die Links zu den Youtube Videos zeigen wie es geht.

            https://www.youtube.com/watch?v=_uN–N7YE24

            https://www.youtube.com/watch?v=vLhVxWRtWc8

            1 Reply Last reply
            0
            • HomoranH Offline
              HomoranH Offline
              Homoran
              Global Moderator Administrators
              wrote on last edited by
              #13

              @Garf:

              Mit den Grundlagen solltest Du dich aber noch einmal sehr intensiv beschäftigen! `

              Hier gibt es auch noch etwas:

              http://www.iobroker.net/docu/?page_id=4284&lang=de

              Gruß

              Rainer

              kein Support per PN! - Fragen im Forum stellen - es gibt fast nichts, was nicht auch für andere interessant ist.

              Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.

              der Installationsfixer: curl -fsL https://iobroker.net/fix.sh | bash -

              1 Reply Last reply
              0
              • G Offline
                G Offline
                Garf
                wrote on last edited by
                #14

                @Homoran:

                Hier gibt es auch noch etwas: `
                Super, vielen Dank, das kannte ich auch noch nicht.

                Vielleicht sollt man diese und andere allgemeine Infos zu Node Red unter Bekanntmachungen anpinnen. Die Gesamtübersicht aller Anleitung finde ich etwas unübersichtlich.

                1 Reply Last reply
                0
                • HomoranH Offline
                  HomoranH Offline
                  Homoran
                  Global Moderator Administrators
                  wrote on last edited by
                  #15

                  Wir werden die Doku (hoffentlich) bald überarbeiten. Die ist nicht immer auf dem aktuellen Stand.

                  So ist diese Seite von Mai 2016 😞

                  Merkwürdigerweise funktioniert die Suche darin aber sehr gut 😄

                  Gruß

                  Rainer

                  kein Support per PN! - Fragen im Forum stellen - es gibt fast nichts, was nicht auch für andere interessant ist.

                  Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.

                  der Installationsfixer: curl -fsL https://iobroker.net/fix.sh | bash -

                  1 Reply Last reply
                  0
                  • inesaI Offline
                    inesaI Offline
                    inesa
                    wrote on last edited by
                    #16

                    Das mit dem Testflow hab ich schon mal hinbekommen

                    Der Rest muss auf heute Abend warten.

                    Dank an euch schon mal

                    Ines

                    1 Reply Last reply
                    0
                    • inesaI Offline
                      inesaI Offline
                      inesa
                      wrote on last edited by
                      #17

                      Mit diesen Code habe ich meine gewünschte Ausgabe hinbekommen

                      var string = msg.payload;
                      var test = string.substr(106,2);
                      msg.payload = test;
                      return msg;
                      

                      Einen flow zur Ausgabe auf meinen Dashboard mit livedaten vom Sonoff Pow

                      habe ich mir auch gleich zusammengebaut.Nur leider ändert sich der String manchmal

                      und die Ausgabe ist dann fehlerhaft.Zufriednstellend ist das leider noch nicht.

                      Im debug Fenster wird mir nach import des flows nicht das Array angezeigt wie man es

                      bei Graf sehen kann.

                      Warum ist das so ?

                      Ines

                      1 Reply Last reply
                      0
                      • G Offline
                        G Offline
                        Garf
                        wrote on last edited by
                        #18

                        @inesa:

                        Warum ist das so ? Weil Du noch viel in Javascriptprogrammierung und der Verwendung unter Node Red lernen musst. Da mir primär die Zeit und auch wenig die Lust fehlt, dir dies aus der Ferne Schritt für Schritt beizubringen, setze ich auf diese Aussage von dir > Das mit dem Testflow hab ich schon mal hinbekommen `
                        und poste die fertige Lösung. In den vorherigen Posts hatte ich übrigens bereits geschrieben, dass die substring Methode nicht der richtige Weg zum gewünschten Ergebnis ist, da mit der substring Funktion an genau vorher definierten Stellen etwas abgeschnitten wird, sich aber die Positionen der Messwerte je nach Messgröße verändern können. Somit ein absolutes no go.

                        [{"id":"a34c31f5.640b28","type":"inject","z":"1109363a.41365a","name":"","topic":"","payload":"{\"Time\":\"2018-06-08T15:22:49\",\"ENERGY\":{\"Total\":66.302,\"Yesterday\":0.410,\"Today\":0.268,\"Period\":1,\"Power\":18,\"Factor\":0.48,\"Voltage\":231,\"Current\":0.162}}","payloadType":"str","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":150,"y":100,"wires":[["8a3b7ff7.cec02"]]},{"id":"8a3b7ff7.cec02","type":"function","z":"1109363a.41365a","name":"","func":"var oldstring = msg.payload;\nvar newstring = oldstring.replace(/{|}|\"/g,\"\");\nvar re = /\\s*,\\s*/;\nvar nameList = newstring.split(re);\nmsg.payload=nameList;\nflow.set(\"power\",msg.payload[5]);\nflow.set(\"current\",msg.payload[8]);\nreturn msg;","outputs":1,"noerr":0,"x":350,"y":100,"wires":[["df30b04d.fcd7b8","741a4d3f.db3874","9d5094c1.7897a8"]]},{"id":"df30b04d.fcd7b8","type":"debug","z":"1109363a.41365a","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","x":530,"y":100,"wires":[]},{"id":"741a4d3f.db3874","type":"function","z":"1109363a.41365a","name":"Power","func":"var oldstring = flow.get(\"power\");\nvar newstring = oldstring.replace(/Power:/g,\"\");\nmsg.payload =parseFloat(newstring);\nreturn msg;","outputs":1,"noerr":0,"x":360,"y":160,"wires":[["a94fb3d7.b87a9","9d7b9caf.b00dc"]]},{"id":"9d5094c1.7897a8","type":"function","z":"1109363a.41365a","name":"current","func":"var oldstring = flow.get(\"current\");\nvar newstring = oldstring.replace(/Current:/g,\"\");\nmsg.payload =parseFloat(newstring);\nreturn msg;","outputs":1,"noerr":0,"x":369,"y":200,"wires":[["362d4eb.a67d3b2","19d2e720.226ca9"]]}]
                        

                        Und so sollte es dann nachher aussehen:

                        3639_screen4.jpg
                        Beispieltestflow

                        3639_screen5.jpg
                        Anzeigewerte Debug-Nodes

                        3639_screen6.jpg
                        Gauge-Anzeigen im Dashboard

                        Jetzt schau mal, dass Du die drei function-Nodes in dein Flow eingebaut bekommst. Und bitte nicht frustiert sein. Das was Du hier machen möchtest ist vom Schwierigkeitsgrad her etwas für Fortgeschrittenen.

                        Wenn Du noch Fragen hast, oder noch etwas fehlt bzw. nicht funktioniert dann kannst Du dich gerne wieder melden.

                        Über ein Feedback, gerne auch mit Screenshots, freue ich mich immer sehr. Getreu dem Motto von John „Hannibal“ Smith: > ****Ich liebe es, wenn ein Plan funktioniert.****

                        Und jetzt viel Erfolg damit.

                        Gruß

                        Garf

                        1 Reply Last reply
                        0
                        • inesaI Offline
                          inesaI Offline
                          inesa
                          wrote on last edited by
                          #19

                          Danke Graf für deine Hilfe werde versuchen das in meinen flow mit einzubauen.

                          Wie ich das von Dir verstanden habe würde das auch mit anderen flow's funktionieren ?

                          Ich möchte bei mir zu Hause sämtliche Geräte in nod-red einbauen um es dann

                          übersichtlich auf einen Tablet darzustellen. Ein schalten von Licht oder anderen Dingen

                          war bisher nicht das Problem was ja auch recht simpel ist im Dashboard abzubilden.

                          Die visuelle Darstellung von Messwerten bereit mir noch Schwierigkeiten.

                          Eine simple Darstellung des aktuellen Wetters mit Openweather was mein erster Versuch

                          der sich gut mit etwas code realisieren ließ

                          return { payload: msg.payload.tempc};
                          

                          Ok jetzt mach ich mich an Arbeit nochmals vielen Dank

                          Ines

                          1 Reply Last reply
                          0
                          • G Offline
                            G Offline
                            Garf
                            wrote on last edited by
                            #20

                            @inesa:

                            Ok jetzt mach ich mich an Arbeit nochmals vielen Dank `

                            Und wie läuft es?

                            Heute noch eine deutlich einfachere Lösung gefunden.

                            3639_screen11.jpg

                            3639_screen12.jpg

                            Und hier noch der Flow

                            [{"id":"8c0169c.096a698","type":"function","z":"1109363a.41365a","name":"Power","func":"var myObj, x;\nmyObj = msg.payload;\nx = myObj.ENERGY.Power;\nmsg.payload = x;\nreturn msg;","outputs":1,"noerr":0,"x":350,"y":24,"wires":[["147c1657.ec1dc2"]]},{"id":"147c1657.ec1dc2","type":"debug","z":"1109363a.41365a","name":"Power","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","x":540,"y":24,"wires":[]},{"id":"d6bdcf92.0373f","type":"inject","z":"1109363a.41365a","name":"","topic":"","payload":"{\"Time\":\"2018-06-08T15:22:49\",\"ENERGY\":{\"Total\":66.302,\"Yesterday\":0.41,\"Today\":0.268,\"Period\":1,\"Power\":18,\"Factor\":0.48,\"Voltage\":231,\"Current\":0.162}}","payloadType":"json","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":150,"y":24,"wires":[["8c0169c.096a698","cdcf5d25.55b6a8"]]},{"id":"cdcf5d25.55b6a8","type":"function","z":"1109363a.41365a","name":"current","func":"var myObj, x;\nmyObj = msg.payload;\nx = myObj.ENERGY.Current;\nmsg.payload = x;\nreturn msg;","outputs":1,"noerr":0,"x":360,"y":60,"wires":[["cfa3e142.36cc68"]]},{"id":"cfa3e142.36cc68","type":"debug","z":"1109363a.41365a","name":"Strom","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","x":539,"y":60,"wires":[]}]
                            

                            Und genau diese Lösung hatte Je Cee bereits am 08.06. gepostet. Ist mir jetzt ein wenig peinlich, positiv betrachtet habe ich aber auch wieder eine Menge dazu gelernt. 😉

                            @Jey Cee:

                            msg.payload=msg.payload.ENERGY.Power;
                            

                            Damit müsste es gehen. `
                            Ja, funktioniert einwandfrei.

                            1 Reply Last reply
                            0
                            • inesaI Offline
                              inesaI Offline
                              inesa
                              wrote on last edited by
                              #21

                              Deinen ersten Vorschlag habe ich gut hinbekommen.

                              Hab jetzt auch schon mehrere Sache wie Temperaturfühler Wetterstation und diverse

                              Schalter einbinden können.

                              🙂

                              Bin noch fleißig am testen

                              Die Oberfläche in nod-red sagt mir noch nicht zu weil die Räume

                              hier untereinander angeordnet sind aber das läßt sich

                              bestimmt noch irdendwie ändern

                              1 Reply Last reply
                              0
                              • inesaI Offline
                                inesaI Offline
                                inesa
                                wrote on last edited by
                                #22

                                Da ich im Urlaub war jetzt erst meine Rückmeldung

                                Das hier geht leider nicht wenn ich als input mqtt nehme mit injekt dagegen schon

                                [{"id":"89b06627.4b4618","type":"mqtt in","z":"340eddcc.3cf872","name":"test","topic":"/Smarthome/dachboden/intelnuc/tele/Nuc/SENSOR","qos":"2","broker":"f10536d8.b08398","x":134,"y":598,"wires":[["6f2ea2e6.6a375c","22db21d0.785fbe"]]},{"id":"f10536d8.b08398","type":"mqtt-broker","z":"","name":"","broker":"localhost","port":"1883","clientid":"","usetls":false,"compatmode":true,"keepalive":"60","cleansession":true,"birthTopic":"","birthQos":"0","birthPayload":"","closeTopic":"","closeQos":"0","closePayload":"","willTopic":"","willQos":"0","willPayload":""}]
                                

                                Fehlermeldung

                                TypeError: Cannot read property 'Power' of undefined

                                Hier funktioniert es mit mqtt

                                [{"id":"e252d5be.112a38","type":"mqtt in","z":"340eddcc.3cf872","name":"Nuc","topic":"/Smarthome/dachboden/intelnuc/tele/Nuc/SENSOR","qos":"2","broker":"317c971b.fd0d18","x":103,"y":94,"wires":[["74794b5c.a3c3b4","17ddcaaa.c6ee35","1ea5b962.1ad897","adb118a.6567ae8"]]},{"id":"317c971b.fd0d18","type":"mqtt-broker","z":"","name":"nuke","broker":"192.168.178.108","port":"1883","clientid":"","usetls":false,"compatmode":true,"keepalive":"60","cleansession":true,"birthTopic":"","birthQos":"0","birthPayload":"","closeTopic":"","closeQos":"0","closePayload":"","willTopic":"","willQos":"0","willPayload":""}]
                                

                                Warum ist das so würde das gern verstehen mit deinen anderen ersten Vorschlag verhält es sich genau so sobald ich mqtt nehme hagelt es Fehlermeldungen.

                                Ines

                                Nachtrag man muß mqqt.json als input nehmen dann klappt das auch :?

                                1 Reply Last reply
                                0
                                • G Offline
                                  G Offline
                                  Garf
                                  wrote on last edited by
                                  #23

                                  @inesa:

                                  Das hier geht leider nicht wenn ich als input mqtt nehme mit injekt dagegen schon

                                  Fehlermeldung

                                  TypeError: Cannot read property 'Power' of undefined

                                  Warum ist das so würde das gern verstehen mit deinen anderen ersten Vorschlag verhält es sich genau so sobald ich mqtt nehme hagelt es Fehlermeldungen. `

                                  Die MQTT-Nodes als Code zu posten hilft zur Klärung nicht weiter. Häng da mal ein debug-Node dran und poste die Ausgabe. Wie sieht der Flow aus?

                                  @inesa:

                                  ]Nachtrag man muß mqqt.json als input nehmen dann klappt das auch :? `
                                  Du sprichst in Rätseln. Wie und wo muss man dass nehmen.

                                  Wie wäre es mit ein paar Screenshots vom Flow und den eingesetzten Nodes?

                                  Meine Besipiele sind kein Allheilmittel und funktionieren nur so wie ich es testweise und behlfsmäßig nachstellen kann. Ich schreibe deshalb auch immer, man muß verstanden haben was man da tut und wie das Ganze funktioniert.

                                  1 Reply Last reply
                                  0
                                  • inesaI Offline
                                    inesaI Offline
                                    inesa
                                    wrote on last edited by
                                    #24

                                    Ich wollte damit sagen das es funktioniert wenn man als input vom flow mqtt json nimmt.

                                    Hatte es vorher mit mqtt versucht und da hagelte es Fehlermeldungen.

                                    Ines

                                    1 Reply Last reply
                                    0
                                    Reply
                                    • Reply as topic
                                    Log in to reply
                                    • Oldest to Newest
                                    • Newest to Oldest
                                    • Most Votes


                                    Support us

                                    ioBroker
                                    Community Adapters
                                    Donate

                                    55

                                    Online

                                    32.4k

                                    Users

                                    81.3k

                                    Topics

                                    1.3m

                                    Posts
                                    Community
                                    Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                                    ioBroker Community 2014-2025
                                    logo
                                    • Login

                                    • Don't have an account? Register

                                    • Login or register to search.
                                    • First post
                                      Last post
                                    0
                                    • Recent
                                    • Tags
                                    • Unread 0
                                    • Categories
                                    • Unreplied
                                    • Popular
                                    • GitHub
                                    • Docu
                                    • Hilfe