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. Datenstrom aus Nodered filtern und in Datenpunkt ausgeben.

    NEWS

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    Datenstrom aus Nodered filtern und in Datenpunkt ausgeben.

    This topic has been deleted. Only users with topic management privileges can see it.
    • F
      fimoknete @mickym last edited by fimoknete

      @mickym
      Jetzt sieht das so aus am ende des debug.
      ebb482f4-dd5b-4195-ac4e-a390292e6d86-image.png

      er legt auch keinen Datenpunkt im root unter batterie an.

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

        @fimoknete OK also das Problem ist, dass mir die Screenshots nichts nutzen.

        Kopiere mir mal bitte Deine Daten hier in CodeTags rein.

        Code-Tags.gif

        Geh bitte im Debugfenster der debug1 Node und kopiere das gesamte Objekt in die Zwischenablage

        919471d6-f1cf-4797-b859-8afcb3fa24f5-image.png

        c7716cbb-84ee-4bee-8ce3-3cf8067942c4-image.png

        Den Datenpunkt legst Du bitte selbst in 0_userdata.0 an oder Du nimmst meinen Flow.

        F 1 Reply Last reply Reply Quote 0
        • F
          fimoknete @mickym last edited by fimoknete

          @mickym

          {"Result":true,"code":"200","msg":"Success","data":"{\r\n "Addr": 1,\r\n "Result": true,\r\n "Cid2": "42",\r\n "D0WarningFlag": true,\r\n "D4SwitchFlag": false,\r\n "SOC": "33,98",\r\n "TOT_Vs": "52,75",\r\n "num_of_cells": "16",\r\n "cell_list": [\r\n "3,300",\r\n "3,297",\r\n "3,293",\r\n "3,296",\r\n "3,299",\r\n "3,296",\r\n "3,295",\r\n "3,297",\r\n "3,298",\r\n "3,296",\r\n "3,300",\r\n "3,295",\r\n "3,299",\r\n "3,295",\r\n "3,299",\r\n "3,297"\r\n ],\r\n "ENV_TEMP": "20,0",\r\n "pack_TEMP": "18,0",\r\n "MOS_TEMP": "19,0",\r\n "TOT_TEMPs": "4",\r\n "TEMP_list": [\r\n "18,0",\r\n "18,0",\r\n "18,0",\r\n "18,0"\r\n ],\r\n "TOT_C": "4,04",\r\n "pack_inter_RES": "0,0",\r\n "SOH": "100",\r\n ...

          kommt so aus debug1

          7089de86-fb0c-421d-a725-5e579cfd711d-image.png

          132e12fe-af77-49ad-86b8-f6a0a3d25bbd-image.png

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

            @fimoknete Ja Du hast aber nicht so in CodeTags kopiert wie ich Dir das gesagt habe.

            Dann hänge bitte meine beiden Nodes hinter eine JSON Node - also parallel zu debug4. Meine beiden Nodes setzen die Ausgabe aus debug 4 voraus. Also 2 JSON Nodes hintereinander.

            Alternativ bitte Daten nach meiner Anleitung aus dem letzten Post rauskopieren - so nützt das nichts.

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

              Na das kann doch nicht so ewig dauern. Dann sag womit Du mit meiner Anleitung nicht klar kommst.

              F 1 Reply Last reply Reply Quote 1
              • F
                fimoknete @mickym last edited by

                @mickym Ich muss nebenbei arbeiten und habe Kinder. Daher der Verzug. Ich kümmere mich heute Abend drum. Auf jeden Fall danke für deine Mühe.

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

                  @fimoknete

                  So wie gesagt in Ermangelung der Originaldaten habe ich mal versucht das zu rekonstruieren, aber wie gesagt so nutzen mir die Daten nichts.

                  3846f6eb-5ee7-4b72-8c28-105b78b74052-image.png

                  1. Die Inject Node versucht also Deinen Input zu simulieren (wie gesagt wenn das nicht hinhaut - bitte Originaldaten in CodeTags hier rein). Debugausgabe ist: JSON String gesamt

                  2. Anschließend wird der gesamte JSON in ein Objekt gewandelt - data enthält aber immer noch JSON String. Deswegen die Ausgabe Data JSON String (data ist also immer noch String - der Rest bereits Objekt)

                  3. Die 2. JSON Node konvertiert dann den JSON String unter Data in ein Objekt. Ausgabe Data in Object.

                  4. payload auf SOC extrahiert Dir den Wert - der ist aber ein String.

                  5. Die Kommas werden nun in Punkte ersetzt, damit man den String (in US Schreibweise gibt es nur Punkte als Dezimalzeichen) und dann in eine Zahl umgewandelt. Diese Debugausgabe ist Zahl.

                  Die iobroker-Out Node erstellt zwar den Datenpunkt für Dich - aber normalerweise erstellst Du den bitte selbst unter 0_userdata.0

                  e29b4443-54ec-4de3-a20d-7f8059d2f2fe-image.png

                  Das Ergebnis ist also eine Zahl mit dem SOC Wert.

                  Und hier alles zum Import:

                  [
                     {
                         "id": "4ad4b1f0f8b21ae9",
                         "type": "inject",
                         "z": "83a67ac0fc354489",
                         "name": "Input aus serial",
                         "props": [
                             {
                                 "p": "payload"
                             }
                         ],
                         "repeat": "",
                         "crontab": "",
                         "once": false,
                         "onceDelay": 0.1,
                         "topic": "",
                         "payload": "{\"Result\":true,\"code\":\"200\",\"msg\":\"Success\",\"data\":\"{\\n    \\\"Addr\\\": 1,\\n    \\\"Result\\\": true,\\n    \\\"Cid2\\\": \\\"42\\\",\\n    \\\"D0WarningFlag\\\": true,\\n    \\\"D4SwitchFlag\\\": false,\\n    \\\"SOC\\\": \\\"33,98\\\",\\n    \\\"TOT_}Vs\\\": \\\"52,75\\\",\\n    \\\"num_of_cells\\\": \\\"16\\\",\\n    \\\"cell_list\\\": [\\n      \\\"3,300\\\",\\n      \\\"3,297\\\",\\n      \\\"3,293\\\",\\n      \\\"3,296\\\",\\n      \\\"3,299\\\",\\n      \\\"3,296\\\",\\n      \\\"3,295\\\",\\n      \\\"3,297\\\",\\n      \\\"3,298\\\",\\n      \\\"3,296\\\",\\n      \\\"3,300\\\",\\n      \\\"3,295\\\",\\n      \\\"3,299\\\",\\n      \\\"3,295\\\",\\n      \\\"3,299\\\",\\n      \\\"3,297\\\"\\n    ],\\n    \\\"ENV_TEMP\\\": \\\"20,0\\\"\\n  }\"}",
                         "payloadType": "str",
                         "x": 180,
                         "y": 860,
                         "wires": [
                             [
                                 "eb8c41fcae2e31cd",
                                 "4b041b2e16586a71"
                             ]
                         ]
                     },
                     {
                         "id": "eb8c41fcae2e31cd",
                         "type": "json",
                         "z": "83a67ac0fc354489",
                         "name": "",
                         "property": "payload",
                         "action": "",
                         "pretty": false,
                         "x": 370,
                         "y": 860,
                         "wires": [
                             [
                                 "88d9263d1238b437",
                                 "9559be6a7758e0f3"
                             ]
                         ]
                     },
                     {
                         "id": "4b041b2e16586a71",
                         "type": "debug",
                         "z": "83a67ac0fc354489",
                         "name": "JSON String gesamt",
                         "active": true,
                         "tosidebar": true,
                         "console": false,
                         "tostatus": false,
                         "complete": "payload",
                         "targetType": "msg",
                         "statusVal": "",
                         "statusType": "auto",
                         "x": 420,
                         "y": 820,
                         "wires": []
                     },
                     {
                         "id": "88d9263d1238b437",
                         "type": "json",
                         "z": "83a67ac0fc354489",
                         "name": "",
                         "property": "payload.data",
                         "action": "",
                         "pretty": false,
                         "x": 530,
                         "y": 860,
                         "wires": [
                             [
                                 "bc0dd3898aa15346",
                                 "2af2a89fce5606f7"
                             ]
                         ]
                     },
                     {
                         "id": "bc0dd3898aa15346",
                         "type": "change",
                         "z": "83a67ac0fc354489",
                         "name": "",
                         "rules": [
                             {
                                 "t": "set",
                                 "p": "payload",
                                 "pt": "msg",
                                 "to": "payload.data.SOC",
                                 "tot": "msg"
                             }
                         ],
                         "action": "",
                         "property": "",
                         "from": "",
                         "to": "",
                         "reg": false,
                         "x": 710,
                         "y": 860,
                         "wires": [
                             [
                                 "45bf928b09d927ea",
                                 "2c9621ee4f796f7f"
                             ]
                         ]
                     },
                     {
                         "id": "45bf928b09d927ea",
                         "type": "debug",
                         "z": "83a67ac0fc354489",
                         "name": "payload auf SoC",
                         "active": true,
                         "tosidebar": true,
                         "console": false,
                         "tostatus": false,
                         "complete": "payload",
                         "targetType": "msg",
                         "statusVal": "",
                         "statusType": "auto",
                         "x": 950,
                         "y": 820,
                         "wires": []
                     },
                     {
                         "id": "9559be6a7758e0f3",
                         "type": "debug",
                         "z": "83a67ac0fc354489",
                         "name": "Objekt - Data JSON String",
                         "active": true,
                         "tosidebar": true,
                         "console": false,
                         "tostatus": false,
                         "complete": "payload",
                         "targetType": "msg",
                         "statusVal": "",
                         "statusType": "auto",
                         "x": 600,
                         "y": 900,
                         "wires": []
                     },
                     {
                         "id": "2af2a89fce5606f7",
                         "type": "debug",
                         "z": "83a67ac0fc354489",
                         "name": "data in Object",
                         "active": true,
                         "tosidebar": true,
                         "console": false,
                         "tostatus": false,
                         "complete": "payload",
                         "targetType": "msg",
                         "statusVal": "",
                         "statusType": "auto",
                         "x": 700,
                         "y": 820,
                         "wires": []
                     },
                     {
                         "id": "2c9621ee4f796f7f",
                         "type": "change",
                         "z": "83a67ac0fc354489",
                         "name": ".. in Zahl ",
                         "rules": [
                             {
                                 "t": "change",
                                 "p": "payload",
                                 "pt": "msg",
                                 "from": ",",
                                 "fromt": "str",
                                 "to": ".",
                                 "tot": "str"
                             },
                             {
                                 "t": "set",
                                 "p": "payload",
                                 "pt": "msg",
                                 "to": "$number(payload)",
                                 "tot": "jsonata"
                             }
                         ],
                         "action": "",
                         "property": "",
                         "from": "",
                         "to": "",
                         "reg": false,
                         "x": 900,
                         "y": 860,
                         "wires": [
                             [
                                 "4a46ea7520b2d897",
                                 "c8f5d47e31a8d16d"
                             ]
                         ]
                     },
                     {
                         "id": "4a46ea7520b2d897",
                         "type": "debug",
                         "z": "83a67ac0fc354489",
                         "name": "Zahl",
                         "active": true,
                         "tosidebar": true,
                         "console": false,
                         "tostatus": false,
                         "complete": "payload",
                         "targetType": "msg",
                         "statusVal": "",
                         "statusType": "auto",
                         "x": 1050,
                         "y": 920,
                         "wires": []
                     },
                     {
                         "id": "c8f5d47e31a8d16d",
                         "type": "ioBroker out",
                         "z": "83a67ac0fc354489",
                         "name": "",
                         "topic": "0_userdata.0.Test.Batterie",
                         "ack": "true",
                         "autoCreate": "true",
                         "stateName": "",
                         "role": "",
                         "payloadType": "",
                         "readonly": "false",
                         "stateUnit": "",
                         "stateMin": "",
                         "stateMax": "",
                         "x": 1110,
                         "y": 860,
                         "wires": []
                     }
                  ]
                  

                  F 1 Reply Last reply Reply Quote 0
                  • F
                    fimoknete @mickym last edited by

                    @mickym Unfassbar wie engagiert du bist.

                    Also ich versuche dir so wenig wie möglich als DAU auf die Nerven zu gehen.

                    Erstmal der Überblick. Es werden in gleicher Reihenfolge diese Outputs generiert. Ein Datensatz ohne SOC drin, nur Bat Infos, dann auch undefind output. Dann folgt der Datensatz mit SOC drin und generiert eine Zahl.

                    e94ab48c-b8f1-4d5d-a753-47023413a817-image.png

                    Dementsprechend kommt auch nur SOC Zahl oder nichts am IObroker Terminal an.
                    16f746e0-cbdb-4661-b68a-23c5b40e3f17-image.png

                    9ee7b6b9-4cc3-46c7-b2fb-2dd36947accc-image.png

                    Zahl steht jetzt in IOBroker.

                    d7acd1eb-93d6-4544-8ab5-8f2f0cfbbde3-image.png

                    Welche Infos brauchst du, damit er nur das eine Feld mit SOC drin ausspuckt?

                    mickym OliverIO 2 Replies Last reply Reply Quote 0
                    • mickym
                      mickym Most Active @fimoknete last edited by

                      @fimoknete Du musst filtern. Nimm eine switch Node nach dem Du das data Objekt hast und lasse nur durch, wenn SOC nicht null ist.

                      Du prüfst also ab, ob der SOC Wert existiert.

                      53272fc0-4d70-4f18-a30c-269cd6329ba0-image.png

                      Also mit dieser Node filtern:

                      db33abda-094e-4876-9319-3902115f53d2-image.png

                      a1719751-e130-4a09-9420-be5b400d34c8-image.png

                      und halt erst nach dem data in ein Objekt gewandelt wurde.

                      Hier die switch Node:

                      [
                         {
                             "id": "12f9a8ebe70c03e6",
                             "type": "switch",
                             "z": "22493068e4df6fb8",
                             "name": "nur wenn SOC?",
                             "property": "payload.data.SOC",
                             "propertyType": "msg",
                             "rules": [
                                 {
                                     "t": "nnull"
                                 }
                             ],
                             "checkall": "true",
                             "repair": false,
                             "outputs": 1,
                             "x": 760,
                             "y": 240,
                             "wires": [
                                 [
                                     "bc0dd3898aa15346"
                                 ]
                             ]
                         }
                      ]
                      

                      F 1 Reply Last reply Reply Quote 0
                      • F
                        fimoknete @mickym last edited by

                        @mickym
                        Ich weis nicht was ich sagen soll. Kaum spricht man mal mit nen Fachmann geht das auch. Ich versuche mich schon seit Monaten da ohne Kenntnisse durch zu frickeln.
                        Eigentlich super interessante Materie aber leider hab ich keine Zeit mich damit zu beschäftigen. Vielleicht als Rentner.

                        Auf jeden Fall viiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiieeeeeeeeeeeeeeeeeeeeellllllllllllllllllllllllllllllen Dank für deine Hilfe.
                        Ich werde jetzt noch versuchen, die Ladeleistung und Entladeleistung raus zu frickeln.

                        mickym 2 Replies Last reply Reply Quote 0
                        • mickym
                          mickym Most Active @fimoknete last edited by mickym

                          @fimoknete Na ja mit NodeRed geht halt vieles einfacher - als mit puzzeln. 😉

                          Wenn Du Objekte in Deinem Debugfenster hast kannst Du Werte oder auch den Pfad kopieren.

                          copy path.gif

                          F 1 Reply Last reply Reply Quote 0
                          • F
                            fimoknete @mickym last edited by

                            @mickym Das wollte ich vorhin schon fragen, was meinst du mit puzzlen??? Ist das irgendein iobroker gag?

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

                              @fimoknete Na die Blocklies sind doch alles Puzzleteile? 😁

                              https://de.wikipedia.org/wiki/Blockly

                              Du kannst natürlich wie in wikipedia die von Google entwickelten Teile als:

                              Der Blockly-Editor verwendet verzahnte, grafische Blöcke zur Darstellung von Programmierkonzepten wie Variablen, logischen Ausdrücken,

                              1 Reply Last reply Reply Quote 0
                              • OliverIO
                                OliverIO @fimoknete last edited by

                                @fimoknete sagte in Datenstrom aus Nodered filtern und in Datenpunkt ausgeben.:

                                @mickym Unfassbar wie engagiert du bist.

                                er freut sich so weil endlich jemand mal eine frage zu node red hat

                                mickym F 2 Replies Last reply Reply Quote 1
                                • mickym
                                  mickym Most Active @OliverIO last edited by

                                  @oliverio sagte in Datenstrom aus Nodered filtern und in Datenpunkt ausgeben.:

                                  @fimoknete sagte in Datenstrom aus Nodered filtern und in Datenpunkt ausgeben.:

                                  @mickym Unfassbar wie engagiert du bist.

                                  er freut sich so weil endlich jemand mal eine frage zu node red hat

                                  Tja weil immer mehr Anfänger gleich zum puzzeln animiert werden. 🙄

                                  1 Reply Last reply Reply Quote 0
                                  • F
                                    fimoknete @OliverIO last edited by

                                    @oliverio na ja, node red hat geliefert, was ich seit Monaten gesucht habe.

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

                                      und ich verstehe immer noch nicht warum @fimoknete nicht einfach den Modbusadapter genommen hat...

                                      OliverIO 1 Reply Last reply Reply Quote 0
                                      • OliverIO
                                        OliverIO @Homoran last edited by OliverIO

                                        @homoran

                                        weil er jetzt fertig ist und mit modbus irgendwas nicht gestimmt hat.
                                        ob das jetzt an der

                                        • richtigen verdrahtung,
                                        • der richtigen dokumentation,

                                        oder an irgend etwas anderem lag ist schwer herauszufinden.

                                        per websockets hatte er ja schon etwas was im browser funktioniert.
                                        er musste das jetzt nur noch separieren.
                                        wichtig ist doch das es funktioniert und er sein erfolgserlebnis hat
                                        jetzt kann er weiter machen

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

                                          @fimoknete sagte in Datenstrom aus Nodered filtern und in Datenpunkt ausgeben.:

                                          Ich werde jetzt noch versuchen, die Ladeleistung und Entladeleistung raus zu frickeln.

                                          Kannst Du dann wenn es in dem data Objekt vorhanden ist, parallel einfach extrahieren.

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

                                          Support us

                                          ioBroker
                                          Community Adapters
                                          Donate

                                          993
                                          Online

                                          31.7k
                                          Users

                                          79.7k
                                          Topics

                                          1.3m
                                          Posts

                                          4
                                          23
                                          1575
                                          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