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. Datentyp wird falsch ausgegeben

    NEWS

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    Datentyp wird falsch ausgegeben

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

      @michmein Na dann war mein Verdacht richtig. Ist wahrscheinlich wieder so ein Ding mit dem neuen Admin - wie gesagt, ich nutze den Paletten-Manager eh viel lieber, weil ich dort die Versionen sehen kann und das alles viel leichter managen kann, als über iobroker.

      Die Art Module so nachzuinstallieren, halte ich sowieso für benutzerunfreundlich - auch wenn man ggf. bei Neuaufbau des Systems alle fehlenden Nodetypen manuell nachinstallieren muss.

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

        @mickym Ich habe es jetzt bei mir ebenfalls geändert und nutze den Manager. Ein Issue ist auch erstellt.

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

          @michmein Wie gesagt - der Paletten-Manager ist wesentlich benutzerfreundlicher - da kannst auch Module suchen etc.. Das hat man hier erst mit NodeRed Adapter Version 2.0 und höher eingeführt - früher hat man auch nur den Paletten-Manager genutzt.

          1 Reply Last reply Reply Quote 0
          • F
            frankyboy73 @MichMein last edited by

            @michmein sagte in Datentyp wird falsch ausgegeben:

            Ich habe es jetzt bei mir ebenfalls geändert und nutze den Manager. Ein Issue ist auch erstellt.

            Hi, der Fehler im Log kommt wohl auch wenn das Feld nicht leer ist.
            Siehe hier:
            https://github.com/ioBroker/ioBroker.node-red/issues/242
            Ich würde dir auch empfehlen das komplette Log vom Node Red Start im Issue zu posten.

            daes10 created this issue in ioBroker/ioBroker.node-red

            closed Error of installing additional NPM-Modules #242

            MichMein 1 Reply Last reply Reply Quote 0
            • MichMein
              MichMein @frankyboy73 last edited by

              Hi @frankyboy73, ich bin deinem Rat mal gefolgt, wenn auch der Inhalt des Logs dadurch nicht aussagekräftiger wird. Und es ist richtig das der error auch kommt wenn Pakete eingetragen werden, da dachte ich allerdings das es sich tatsächlich um einen Fehler handelt. Aufgestoßen war mir das erst nachdem die Zeile leer war und trotzdem ein error erschien.
              Wie dem auch sei, ich denke nicht das es so sein soll und dort wohl nachgebessert werden müsste.

              F 1 Reply Last reply Reply Quote 0
              • F
                frankyboy73 @MichMein last edited by frankyboy73

                @michmein Hi, man sieht dadurch aber auch sofort welche Adapterversion du hast und welche Node JS und JS Controller Version du nutzt. Da apollon77 in dem anderem Issue auch nach dem kompletten Log gefragt hat, denke ich er möchte es bei deinem Issue auch sehen.
                Ja und das da kein Error kommen sollte, da gebe ich dir vollkommen recht. Danke fürs melden.

                MichMein 1 Reply Last reply Reply Quote 1
                • MichMein
                  MichMein @frankyboy73 last edited by

                  @frankyboy73 sagte in Datentyp wird falsch ausgegeben:

                  ... man sieht dadurch aber auch sofort welche Adapterversion du hast und welche Node JS und JS Controller Version du nutzt. Da apollon77 in dem anderem Issue auch nach dem kompletten Log gefragt hat, ...

                  Sry, soweit kann ich zu dieser Uhrzeit nicht mehr denken. Du hast völlig recht!

                  F 1 Reply Last reply Reply Quote 0
                  • F
                    frankyboy73 @MichMein last edited by

                    @michmein Kein Problem. Ich kenne das nur mittlerweile zu gut, das man möglichst viele Informationen liefern sollte. Sonst wird eh wieder danach gefragt. Und irgendwas vergisst man sowieso immer.😊

                    1 Reply Last reply Reply Quote 0
                    • B
                      Bavarian @mickym last edited by Bavarian

                      @mickym

                      Hallo Michael,

                      mich hat das Thema mit dem String nun auch erwischt.
                      Das Kreuz bei ...in Zeichenkette konvertieren ist raus, Adapter neu gestartet.
                      Das Problem bleibt bestehen.

                      DP ist ein Array und wenn ich in NR den IOB Input auf Debug lege werden Fehlermeldungen und ein String angezeigt.

                      DP:

                      {
                        "common": {
                          "name": "MSGARRAY",
                          "desc": "Manuell erzeugt",
                          "role": "state",
                          "type": "array",
                          "read": true,
                          "write": true
                        },
                        "type": "state",
                        "from": "system.adapter.admin.0",
                        "user": "system.user.admin",
                        "ts": 1641549290173,
                        "_id": "0_userdata.0.MSGARRAY"
                      }
                      

                      Screenshot 2022-01-07 115705.jpg

                      Screenshot 2022-01-07 115636.jpg

                      Screenshot 2022-01-07 120133.jpg
                      Screenshot 2022-01-07 120533.jpg

                      Hast Du noch eine Idee was da schief läuft?

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

                        @bavarian

                        Hmm das liegt meines Erachtens am iobroker oder dem Admin 5 .

                        Sobald Du ein Array mit NodeRed in den Datenpunkt schreibst, kommt auch ein Array wieder rein:

                        e009093b-b06e-4372-b6a4-65bc11fd994f-image.png

                        Sobald Du das aber über die iobroker Eingabemaske veränderst bekommst Du es zwar so angezeigt
                        38c53836-9416-4103-bc97-a20cd243e0e5-image.png
                        in der Eingabemaske sind dann die Klammern weg
                        0acb4c68-9c67-4a54-afc0-6debdb3f95d0-image.png

                        Modifizierst Du dann in der Eingabemaske die Zahl nur, dann gehen die Klammern weg.
                        und dann bekommst Du ein undefiniertes Objekt bzw. einen String der auch kein JSON String ist:

                        713dd50c-da2f-4811-84e5-6b0ac2b23194-image.png

                        Ich denke das hat irgendwas mit dem Javascript-Adapter zu tun. Am Besten ist hier bei Objekten und Arrays (sind ja auch JS Objekte) - was intern die Entwickler auch tun sollen immer ein JSON Konvertierung sowohl beim Schreiben, als auch bei Lesen vorzunehmen.

                        Die einzig vernünftige Vorgehensweise ist deshalb im iobroker in der Eingabemaske nur JSON Objekte anzugeben.

                        f4fd9323-c3d8-43c4-9578-f63bace007b8-image.png

                        und dann im Node Red zu konvertieren.

                        Schuld ist aber in meinen Augen nicht der NR Adapter, sondern der JS Adapter. Wenn man wie im 1. Beispiel ein Array in den Datenpunkt mit NR schreibt, kommt auch ein Array wieder raus. Das Problem entsteht erst, wenn man mit dem Admin5 Adapter den Wert versucht zu schreiben.

                        Wenn Du hingegen ein JSON String mit NR schreibst, dann bekommt man wohl auch JSON Objekt im iobroker:

                        74c75e55-e4f8-457e-8338-53928d4bfd25-image.png

                        d3430aab-30ea-4b62-ba36-a6550e046e39-image.png

                        Wenn man dieses bearbeitet, bekommt man auch einen vernünftigen JSON String wieder in NR.

                        Wie gesagt schaut aus, wie oben - ist aber unter schiedlich:
                        Ein richtiges Array schaut in den Objekten zwar richtig aus.

                        27a606f0-1ad6-4016-b33a-313e55cba238-image.png

                        Sobald Du es aber im iobroker modifizierst.

                        92e2b670-341c-45a6-8796-7ae4153c6795-image.png

                        kommt was undefinierbares raus.

                        Deshalb langer Rede, kurzer Sinn - Objekte und Arrays immer als JSON abspeichern. Damit gibts dann keine Probleme. Grundsätzlich sollte man immer alle Objekte und Array als JSON Strings zwischen verschiedenen Systemen austauschen. Es ist einfach das de-facto Austauschformat.

                        So funktioniert es dann immer:

                        299f7eb4-dc7e-4c08-8ad2-f62d84b4aebc-image.png

                        0997e235-f4ae-4ac3-b730-e5e8799b865b-image.png

                        B 1 Reply Last reply Reply Quote 0
                        • B
                          Bavarian @mickym last edited by

                          @mickym

                          Hallo Michael,

                          vielen Dank für die gute und ausführliche Erklärung!

                          Wenn ich nun aber mein JSON wie du oben gezeigt hast als ARRAY im NR habe dann ist das schon mal super.
                          Nur kommt das nächste Problem dann auf, wie sende ich das an die Serielle Schnittstelle, in dem Fall funktioniert \n vom String nicht mehr.
                          Jetzt komme ich nämlich ducheinander!
                          Es war einfach möglich einen DP mit dem String TestOn oder TestOff zu schreiben, die NR Serial Config hatte das Kreuz bei automzisch beim senden \n hinzufügen.
                          So klappte das auch problemlos.
                          Lasse ich das \n weg geht da nichts mehr raus, also schlecht.
                          Allerdings muss das \n raus wenn ich das Array senden möchte.

                          Kann ich eigentlich auch das Array teilen in String:Array\n ?
                          Also MSS:[200,50,true]

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

                            @bavarian Also wenn Du ein JSON im iobroker, dann ein Array im NR hat - dann schickst Du halt mit einer Split Node einzelnen Nachrichten.

                            Du kannst alles in alles irgendwie transformieren - die Frage ist doch was die Geräte verstehen. Wenn die serial Node - lese kann man ja auch andere Chars als Trennzeichen definieren. Aber ich kann Dir wenig dazu sagen-

                            Wenn Du aus dem Array ein Objekt mit Eigenschaft des ersten Elements machen willst geht das auch.

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

                              @bavarian sagte in Datentyp wird falsch ausgegeben:

                              Kann ich eigentlich auch das Array teilen in String:Array\n ?
                              Also MSS:[200,50,true]

                              Aber ich denke mal die Werte einzeln zu schicken ist praktischer.

                              Wenn die Anzahl der Elemente im Array bekannt ist, kannst Du einfach

                              b0eb32cc-6732-4084-96bb-15c13a4765bc-image.png

                              [
                                  {
                                      "id": "6a1a60ed.2e0b7",
                                      "type": "inject",
                                      "z": "54b226bc.0793e8",
                                      "name": "",
                                      "props": [
                                          {
                                              "p": "payload"
                                          }
                                      ],
                                      "repeat": "",
                                      "crontab": "",
                                      "once": false,
                                      "onceDelay": 0.1,
                                      "topic": "",
                                      "payload": "[\"MSS:\",250,50,true]",
                                      "payloadType": "json",
                                      "x": 1010,
                                      "y": 2960,
                                      "wires": [
                                          [
                                              "3bbabdb5.2d2c82",
                                              "334af2bd.e4c9ae"
                                          ]
                                      ]
                                  },
                                  {
                                      "id": "19a5b80c.2c2778",
                                      "type": "debug",
                                      "z": "54b226bc.0793e8",
                                      "name": "",
                                      "active": true,
                                      "tosidebar": true,
                                      "console": false,
                                      "tostatus": false,
                                      "complete": "payload",
                                      "targetType": "msg",
                                      "statusVal": "",
                                      "statusType": "auto",
                                      "x": 1430,
                                      "y": 2960,
                                      "wires": []
                                  },
                                  {
                                      "id": "3bbabdb5.2d2c82",
                                      "type": "change",
                                      "z": "54b226bc.0793e8",
                                      "name": "",
                                      "rules": [
                                          {
                                              "t": "set",
                                              "p": "topic",
                                              "pt": "msg",
                                              "to": "payload[0]",
                                              "tot": "msg"
                                          },
                                          {
                                              "t": "set",
                                              "p": "payload",
                                              "pt": "msg",
                                              "to": "{\t    topic : payload [[1..3]]   }",
                                              "tot": "jsonata"
                                          }
                                      ],
                                      "action": "",
                                      "property": "",
                                      "from": "",
                                      "to": "",
                                      "reg": false,
                                      "x": 1230,
                                      "y": 2960,
                                      "wires": [
                                          [
                                              "19a5b80c.2c2778"
                                          ]
                                      ]
                                  },
                                  {
                                      "id": "334af2bd.e4c9ae",
                                      "type": "function",
                                      "z": "54b226bc.0793e8",
                                      "name": "",
                                      "func": "let obj = {};\nlet topic = msg.payload.shift();\nobj[topic]=msg.payload;\nmsg.payload = obj;\nreturn msg;",
                                      "outputs": 1,
                                      "noerr": 0,
                                      "initialize": "",
                                      "finalize": "",
                                      "libs": [],
                                      "x": 1210,
                                      "y": 3040,
                                      "wires": [
                                          [
                                              "bc0d6bea.9bab98"
                                          ]
                                      ]
                                  },
                                  {
                                      "id": "bc0d6bea.9bab98",
                                      "type": "debug",
                                      "z": "54b226bc.0793e8",
                                      "name": "",
                                      "active": false,
                                      "tosidebar": true,
                                      "console": false,
                                      "tostatus": false,
                                      "complete": "false",
                                      "statusVal": "",
                                      "statusType": "auto",
                                      "x": 1440,
                                      "y": 3040,
                                      "wires": []
                                  }
                              ]
                              

                              das wie folgt in ein Objekt wandeln, ansonsten musst halt mit JS entfernen das geht dann schneller.

                              let obj = {};
                              let topic = msg.payload.shift();
                              obj[topic]=msg.payload;
                              msg.payload = obj;
                              return msg;
                              
                              B 1 Reply Last reply Reply Quote 0
                              • B
                                Bavarian @mickym last edited by

                                @mickym

                                Vielen Dank schon mal für die Hilfe!!
                                Ich mache einen neuen Thread auf denn irgendwie bekomme ich das nicht auf der Seriellen übertragen.

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

                                Support us

                                ioBroker
                                Community Adapters
                                Donate

                                809
                                Online

                                31.7k
                                Users

                                79.8k
                                Topics

                                1.3m
                                Posts

                                node-red
                                4
                                20
                                966
                                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