Navigation

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

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    Msg payload string wert extrahieren

    This topic has been deleted. Only users with topic management privileges can see it.
    • Homoran
      Homoran Global Moderator Administrators last edited by

      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

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

        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 Reply Quote 0
        • inesa
          inesa last edited by

          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 Reply Quote 0
          • G
            Garf last edited by

            @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 Reply Quote 0
            • inesa
              inesa last edited by

              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 Reply Quote 0
              • G
                Garf last edited by

                @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 Reply Quote 0
                • inesa
                  inesa last edited by

                  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 Reply Quote 0
                  • inesa
                    inesa last edited by

                    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 Reply Quote 0
                    • G
                      Garf last edited by

                      @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 Reply Quote 0
                      • inesa
                        inesa last edited by

                        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 Reply Quote 0
                        • First post
                          Last post

                        Support us

                        ioBroker
                        Community Adapters
                        Donate

                        717
                        Online

                        31.7k
                        Users

                        79.9k
                        Topics

                        1.3m
                        Posts

                        4
                        24
                        20560
                        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