Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • 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

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. Node-Red
  5. Function node nach update ohne Funktion?

NEWS

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    24
    1
    1.3k

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

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    14
    1
    2.6k

Function node nach update ohne Funktion?

Geplant Angeheftet Gesperrt Verschoben Node-Red
9 Beiträge 4 Kommentatoren 724 Aufrufe 2 Watching
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • E Offline
    E Offline
    etzeste13
    schrieb am zuletzt editiert von
    #1

    @haselchen

    ich hänge mich hier mal dran, weil ich ein ähliches Thema habe.

    Ich habe gestern viele Updates auf meinem Master und auch den 3 Slaves gemacht. Und dabei ist mir die Verbindung von Node-Red und IoBroker flöten gegangen. Es hat nix mehr wie vorher funktioniert.

    Was ich bisher gemerkt habe ist, dass die Datenübergabe von IoBroker auf Node-Red anscheinend nicht mehr wie vorher arbeitet.

    Ich habe vorher einen Datenpunkt (Array) mit den Werten [250,2] an Node-Red übergeben. Diese beiden Werte habe ich dann über eine function-Node aufbereitet und an den Modbus Flex Write Node übergebe.

    Das Function Node ht vorher mit folgendem Code die beiden Werte im Array getrennt und richtig zugewiesen und auch richtig in das Gerät geschrieben.

    
    var fc=16;
    var sa=0;
    var addresses=1;
    var unitid = msg.payload.val[1];
    var value = msg.payload.val[0];
    //var slave_ip=msg.payload.slave_ip;
    //msg.slave_ip="192.168.1.31";
    msg.payload={"value":value, 'fc': fc, 'unitid': unitid, 'address': sa , 'quantity': addresses };
    return msg;
    

    Jetzt trennt dieses Node beim gleichen Code die die Werte so als wäre es ein String und übergibt nicht als unitid 2 und als value 250, sondern als initid 5 und value 2.

    Warum ist das so? und wie kann ich das wieder ändern?

    lg Etze

    haselchenH HomoranH 2 Antworten Letzte Antwort
    0
    • E etzeste13

      @haselchen

      ich hänge mich hier mal dran, weil ich ein ähliches Thema habe.

      Ich habe gestern viele Updates auf meinem Master und auch den 3 Slaves gemacht. Und dabei ist mir die Verbindung von Node-Red und IoBroker flöten gegangen. Es hat nix mehr wie vorher funktioniert.

      Was ich bisher gemerkt habe ist, dass die Datenübergabe von IoBroker auf Node-Red anscheinend nicht mehr wie vorher arbeitet.

      Ich habe vorher einen Datenpunkt (Array) mit den Werten [250,2] an Node-Red übergeben. Diese beiden Werte habe ich dann über eine function-Node aufbereitet und an den Modbus Flex Write Node übergebe.

      Das Function Node ht vorher mit folgendem Code die beiden Werte im Array getrennt und richtig zugewiesen und auch richtig in das Gerät geschrieben.

      
      var fc=16;
      var sa=0;
      var addresses=1;
      var unitid = msg.payload.val[1];
      var value = msg.payload.val[0];
      //var slave_ip=msg.payload.slave_ip;
      //msg.slave_ip="192.168.1.31";
      msg.payload={"value":value, 'fc': fc, 'unitid': unitid, 'address': sa , 'quantity': addresses };
      return msg;
      

      Jetzt trennt dieses Node beim gleichen Code die die Werte so als wäre es ein String und übergibt nicht als unitid 2 und als value 250, sondern als initid 5 und value 2.

      Warum ist das so? und wie kann ich das wieder ändern?

      lg Etze

      haselchenH Offline
      haselchenH Offline
      haselchen
      Most Active
      schrieb am zuletzt editiert von
      #2

      @mickym

      Its your turn :beer:

      Synology DS218+ & 2 x Fujitsu Esprimo (VM/Container) + FritzBox7590 + 2 AVM 3000 Repeater & Homematic & HUE & Osram & Xiaomi, NPM 10.9.4, Nodejs 22.21.0 ,JS Controller 7.0.7 ,Admin 7.7.19

      1 Antwort Letzte Antwort
      0
      • E etzeste13

        @haselchen

        ich hänge mich hier mal dran, weil ich ein ähliches Thema habe.

        Ich habe gestern viele Updates auf meinem Master und auch den 3 Slaves gemacht. Und dabei ist mir die Verbindung von Node-Red und IoBroker flöten gegangen. Es hat nix mehr wie vorher funktioniert.

        Was ich bisher gemerkt habe ist, dass die Datenübergabe von IoBroker auf Node-Red anscheinend nicht mehr wie vorher arbeitet.

        Ich habe vorher einen Datenpunkt (Array) mit den Werten [250,2] an Node-Red übergeben. Diese beiden Werte habe ich dann über eine function-Node aufbereitet und an den Modbus Flex Write Node übergebe.

        Das Function Node ht vorher mit folgendem Code die beiden Werte im Array getrennt und richtig zugewiesen und auch richtig in das Gerät geschrieben.

        
        var fc=16;
        var sa=0;
        var addresses=1;
        var unitid = msg.payload.val[1];
        var value = msg.payload.val[0];
        //var slave_ip=msg.payload.slave_ip;
        //msg.slave_ip="192.168.1.31";
        msg.payload={"value":value, 'fc': fc, 'unitid': unitid, 'address': sa , 'quantity': addresses };
        return msg;
        

        Jetzt trennt dieses Node beim gleichen Code die die Werte so als wäre es ein String und übergibt nicht als unitid 2 und als value 250, sondern als initid 5 und value 2.

        Warum ist das so? und wie kann ich das wieder ändern?

        lg Etze

        HomoranH Nicht stören
        HomoranH Nicht stören
        Homoran
        Global Moderator Administrators
        schrieb am zuletzt editiert von
        #3

        @etzeste13 sagte in Function node nach update ohne Funktion?:

        ch hänge mich hier mal dran, weil ich ein ähliches Thema habe.

        Ähnlich ist nicht gleich!
        Habe es mal abgetrennt

        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 -

        E 1 Antwort Letzte Antwort
        0
        • mickymM Offline
          mickymM Offline
          mickym
          Most Active
          schrieb am zuletzt editiert von
          #4

          Ehrlich gesagt, kann man darauf schwer antworten, wenn man weiß, was wie upgedated wurde. Ich habe in Erinnerung, dass am JS Adapter mal was gemacht wurde, aber letztlich ist das alles nur Spekulation.

          Klarheit bekommt man erst, wenn man

          1. schaut, dass die String Konvertierung im Adapter ausgeschaltet ist,
          2. mit einer Debug Node schaut, was aus der iobroker-IN Node rauskommt.

          Im 1. Fall halt den Haken rausmachen - dann muss man aber alles andere auch überprüfen, wo man vielleicht ggf. noch eine Konvertierung durchgeführt hat,
          im 2. Fall falls ein JSON String rauskommt, den mit der entsprechenden Node zu konvertieren - dann würden aber die eckigen Klammern fehlen.

          Jeder Flow bzw. jedes Script, das ich hier poste implementiert jeder auf eigene Gefahr. Flows und Scripts können Fehler aufweisen und weder der Seitenbetreiber noch ich persönlich können hierfür haftbar gemacht werden. Das gleiche gilt für Empfehlungen aller Art.

          1 Antwort Letzte Antwort
          0
          • E Offline
            E Offline
            etzeste13
            schrieb am zuletzt editiert von
            #5

            @mickym

            Hallo Micky,

            nachfolgend ein paar zusätzliche Daten:

            1. Die Einstellung " ioBroker-Werte in Zeichenkette" ist deaktiviert.
            2. Hier die Info aus der Debug.Node vom IoBroker Datenpunkt 74298c47-27d8-4043-b609-21b1688ea5c2-grafik.png
              und die Info die nach der Function Node rauskommt. 4fc0169a-9726-4fbf-a869-49ee1068cb81-grafik.png

            zur Übersicht der aufbau des Flows den ich hier debuge.

            fc1c5c60-f260-4046-9c00-d7f571c26b9e-grafik.png

            und als Info auch noch die Details des Datenpunkts von ioBroker...

            {
              "from": "system.adapter.admin.0",
              "user": "system.user.admin",
              "ts": 1607851327142,
              "common": {
                "name": "Write_Reg0-2",
                "role": "value",
                "type": "array",
                "desc": "Manuell erzeugt",
                "read": true,
                "write": true
              },
              "native": {},
              "acl": {
                "object": 1636,
                "owner": "system.user.admin",
                "ownerGroup": "system.group.administrator",
                "state": 1636
              },
              "_id": "0_userdata.0.SPR8_0.Write_Reg0-2",
              "type": "state"
            }
            

            Bzgl der Details vom Update kann ich sagen dass ich gestern von sowohl alle JS controller (aktuell 3.3.22) als auch die Versionen von NodeJS (14.19.0) auf letzstand gebracht habe.

            Zuvor waren auf dem Slave wo ich Node-Red laufen hatte noch JS-controler 3.2.xx und NodeJS 12.x.x und ich hatte eine vesentlich ältere Node Red version, ich denke sicher ein halbes Jahr alt.

            Ich hoffe das hilft, damit du eine besseren Überblick bekommst. Lass mich einfach wissen, solltenst du noch infos brauchen.
            Ich hätte einfach nur gern, dass ich das Array ein Array bleibt und sich nicht wie ein String verhält.

            lg
            Etze

            mickymM 1 Antwort Letzte Antwort
            0
            • HomoranH Homoran

              @etzeste13 sagte in Function node nach update ohne Funktion?:

              ch hänge mich hier mal dran, weil ich ein ähliches Thema habe.

              Ähnlich ist nicht gleich!
              Habe es mal abgetrennt

              E Offline
              E Offline
              etzeste13
              schrieb am zuletzt editiert von
              #6

              @homoran

              Hallo Hormoran,

              ich würde den Betreff eher auf " geänderte Datenübergabe von ioBroker zu NodeRed nach Update? taufen. Ich glaube nicht das das function node was falsch macht, aber m.M ist die Ausganglage anders...
              lg

              HomoranH 1 Antwort Letzte Antwort
              0
              • E etzeste13

                @homoran

                Hallo Hormoran,

                ich würde den Betreff eher auf " geänderte Datenübergabe von ioBroker zu NodeRed nach Update? taufen. Ich glaube nicht das das function node was falsch macht, aber m.M ist die Ausganglage anders...
                lg

                HomoranH Nicht stören
                HomoranH Nicht stören
                Homoran
                Global Moderator Administrators
                schrieb am zuletzt editiert von Homoran
                #7

                @etzeste13 sagte in Function node nach update ohne Funktion?:

                ch würde den Betreff eher auf " geänderte Datenübergabe von ioBroker zu NodeRed nach Update? taufen

                dann streiche würde und setze werde ... machen

                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 Antwort Letzte Antwort
                0
                • E etzeste13

                  @mickym

                  Hallo Micky,

                  nachfolgend ein paar zusätzliche Daten:

                  1. Die Einstellung " ioBroker-Werte in Zeichenkette" ist deaktiviert.
                  2. Hier die Info aus der Debug.Node vom IoBroker Datenpunkt 74298c47-27d8-4043-b609-21b1688ea5c2-grafik.png
                    und die Info die nach der Function Node rauskommt. 4fc0169a-9726-4fbf-a869-49ee1068cb81-grafik.png

                  zur Übersicht der aufbau des Flows den ich hier debuge.

                  fc1c5c60-f260-4046-9c00-d7f571c26b9e-grafik.png

                  und als Info auch noch die Details des Datenpunkts von ioBroker...

                  {
                    "from": "system.adapter.admin.0",
                    "user": "system.user.admin",
                    "ts": 1607851327142,
                    "common": {
                      "name": "Write_Reg0-2",
                      "role": "value",
                      "type": "array",
                      "desc": "Manuell erzeugt",
                      "read": true,
                      "write": true
                    },
                    "native": {},
                    "acl": {
                      "object": 1636,
                      "owner": "system.user.admin",
                      "ownerGroup": "system.group.administrator",
                      "state": 1636
                    },
                    "_id": "0_userdata.0.SPR8_0.Write_Reg0-2",
                    "type": "state"
                  }
                  

                  Bzgl der Details vom Update kann ich sagen dass ich gestern von sowohl alle JS controller (aktuell 3.3.22) als auch die Versionen von NodeJS (14.19.0) auf letzstand gebracht habe.

                  Zuvor waren auf dem Slave wo ich Node-Red laufen hatte noch JS-controler 3.2.xx und NodeJS 12.x.x und ich hatte eine vesentlich ältere Node Red version, ich denke sicher ein halbes Jahr alt.

                  Ich hoffe das hilft, damit du eine besseren Überblick bekommst. Lass mich einfach wissen, solltenst du noch infos brauchen.
                  Ich hätte einfach nur gern, dass ich das Array ein Array bleibt und sich nicht wie ein String verhält.

                  lg
                  Etze

                  mickymM Offline
                  mickymM Offline
                  mickym
                  Most Active
                  schrieb am zuletzt editiert von mickym
                  #8

                  @etzeste13 Nun letztlich ist es egal - ob es durch ein Update des JS Adapters, Admin oder eines Adapters kommt:

                  Fakt ist, dass ein String rauskommt, das zeigt ja die Debug Node eindeutig. Wenn die Option in Zeichenkette deaktiviert ist, dann kommt halt ein String raus. Du kannst das Array nun in der Function Node machen oder eine Change Node davor schalten.

                  Ehrlich gesagt verstehe ich auch nicht warum Du aus Deiner iobroker IN Node das Objekt ausliest anstelle nur des Wertes. Ich kann zumindest anhand der function Node nicht erkennen, dass Du irgendeine Eigenschaft Deines Objektes verwendest.

                  Ich gehe mal davon aus, dass Du gerne Zahlen und keine Strings in Deinen Werten haben willst.

                  Du kannst Deine function Node, wie folgt ändern:

                  var fc=16;
                  var sa=0;
                  var addresses=1;
                  msg.payload.val = msg.payload.val.split(",");
                  var unitid = Number(msg.payload.val[1]);
                  var value = Number(msg.payload.val[0]);
                  //var slave_ip=msg.payload.slave_ip;
                  //msg.slave_ip="192.168.1.31";
                  msg.payload={"value":value, 'fc': fc, 'unitid': unitid, 'address': sa , 'quantity': addresses };
                  return msg;
                  

                  dc80ff32-d40b-4d93-be4a-b88d6c13301c-image.png

                  Falls Du nicht die function Node nicht ändern willst - zeige ich Dir noch eine Möglichkeit, wie man ohne function Nodes auskommt.

                  Mit dieser Change Node und JSONATA kommst zum gleichen Ergebnis:

                  e3a8d168-21c9-4da7-b74b-5f75e2f94f7e-image.png

                  Ist halt etwas intuitiver - da Du das payload Objekt quasi visuell zusammenbaust:

                  7a6fa86d-5260-410d-867e-8326fa9ef324-image.png

                  [
                     {
                         "id": "5f6460d0dd7f6f87",
                         "type": "change",
                         "z": "ebe8134f6b5af26c",
                         "name": "",
                         "rules": [
                             {
                                 "t": "set",
                                 "p": "val",
                                 "pt": "msg",
                                 "to": "$split(payload.val, \",\")",
                                 "tot": "jsonata"
                             },
                             {
                                 "t": "set",
                                 "p": "payload",
                                 "pt": "msg",
                                 "to": "{\t   \"fc\":16,\t   \"address\":0,\t   \"quantity\":1,\t   \"unitid\":$number(val[1]),\t   \"value\":$number(val[0])\t}",
                                 "tot": "jsonata"
                             },
                             {
                                 "t": "delete",
                                 "p": "val",
                                 "pt": "msg"
                             }
                         ],
                         "action": "",
                         "property": "",
                         "from": "",
                         "to": "",
                         "reg": false,
                         "x": 470,
                         "y": 220,
                         "wires": [
                             [
                                 "4aed01807b30b8fd"
                             ]
                         ]
                     }
                  ]
                  

                  Jeder Flow bzw. jedes Script, das ich hier poste implementiert jeder auf eigene Gefahr. Flows und Scripts können Fehler aufweisen und weder der Seitenbetreiber noch ich persönlich können hierfür haftbar gemacht werden. Das gleiche gilt für Empfehlungen aller Art.

                  E 1 Antwort Letzte Antwort
                  1
                  • mickymM mickym

                    @etzeste13 Nun letztlich ist es egal - ob es durch ein Update des JS Adapters, Admin oder eines Adapters kommt:

                    Fakt ist, dass ein String rauskommt, das zeigt ja die Debug Node eindeutig. Wenn die Option in Zeichenkette deaktiviert ist, dann kommt halt ein String raus. Du kannst das Array nun in der Function Node machen oder eine Change Node davor schalten.

                    Ehrlich gesagt verstehe ich auch nicht warum Du aus Deiner iobroker IN Node das Objekt ausliest anstelle nur des Wertes. Ich kann zumindest anhand der function Node nicht erkennen, dass Du irgendeine Eigenschaft Deines Objektes verwendest.

                    Ich gehe mal davon aus, dass Du gerne Zahlen und keine Strings in Deinen Werten haben willst.

                    Du kannst Deine function Node, wie folgt ändern:

                    var fc=16;
                    var sa=0;
                    var addresses=1;
                    msg.payload.val = msg.payload.val.split(",");
                    var unitid = Number(msg.payload.val[1]);
                    var value = Number(msg.payload.val[0]);
                    //var slave_ip=msg.payload.slave_ip;
                    //msg.slave_ip="192.168.1.31";
                    msg.payload={"value":value, 'fc': fc, 'unitid': unitid, 'address': sa , 'quantity': addresses };
                    return msg;
                    

                    dc80ff32-d40b-4d93-be4a-b88d6c13301c-image.png

                    Falls Du nicht die function Node nicht ändern willst - zeige ich Dir noch eine Möglichkeit, wie man ohne function Nodes auskommt.

                    Mit dieser Change Node und JSONATA kommst zum gleichen Ergebnis:

                    e3a8d168-21c9-4da7-b74b-5f75e2f94f7e-image.png

                    Ist halt etwas intuitiver - da Du das payload Objekt quasi visuell zusammenbaust:

                    7a6fa86d-5260-410d-867e-8326fa9ef324-image.png

                    [
                       {
                           "id": "5f6460d0dd7f6f87",
                           "type": "change",
                           "z": "ebe8134f6b5af26c",
                           "name": "",
                           "rules": [
                               {
                                   "t": "set",
                                   "p": "val",
                                   "pt": "msg",
                                   "to": "$split(payload.val, \",\")",
                                   "tot": "jsonata"
                               },
                               {
                                   "t": "set",
                                   "p": "payload",
                                   "pt": "msg",
                                   "to": "{\t   \"fc\":16,\t   \"address\":0,\t   \"quantity\":1,\t   \"unitid\":$number(val[1]),\t   \"value\":$number(val[0])\t}",
                                   "tot": "jsonata"
                               },
                               {
                                   "t": "delete",
                                   "p": "val",
                                   "pt": "msg"
                               }
                           ],
                           "action": "",
                           "property": "",
                           "from": "",
                           "to": "",
                           "reg": false,
                           "x": 470,
                           "y": 220,
                           "wires": [
                               [
                                   "4aed01807b30b8fd"
                               ]
                           ]
                       }
                    ]
                    

                    E Offline
                    E Offline
                    etzeste13
                    schrieb am zuletzt editiert von
                    #9

                    @mickym
                    Hallo Micky,

                    wo du recht hast, hast du recht. Wenn jezt wirklich immer ein String übergeben wird, und das nicht mehr anzupassen ist, muss ich den Flow eben anpassen.

                    Warum ich aus der IN Node das Objekt nehme, kann ich dir auch nicht sagen. Ich habe mir das damals mit viel probieren Node-Red angeeignet, weil für mein ModBus Gerät der ioBroker Adapter nicht funktonierte. Habe den Flow mit viel Try and Error entwickelt und da war mit der Unterschied von Objekt und value noch nicht so bewusst. Je länger ich mich mit ioBroker beschäftige um so besser mehr bleibt hängen....:v:

                    Wie auch immer, den val.split befehl kannte ich nicht, aber nach so was habe ich auch gesucht und werde ich auch zeitnah ausprobieren.

                    Ich werde mir das auch mit der CHANGE Node anschauen.. schaut auch vielversprechend und wie du sagst übersichtlicher aus.

                    Meine Grundsätzliche Frage ist beantwortet - es werden jetzt immer Strings ausgetauscht.

                    Sollte ich bzgl der Umsetzung bzw Nodes noch Fragen haben, meld ich mich nochmals.

                    Vielen Dank für die schnelle und proffessionelle Hilfe!!
                    lg
                    Etze

                    1 Antwort Letzte Antwort
                    0
                    Antworten
                    • In einem neuen Thema antworten
                    Anmelden zum Antworten
                    • Älteste zuerst
                    • Neuste zuerst
                    • Meiste Stimmen


                    Support us

                    ioBroker
                    Community Adapters
                    Donate

                    778

                    Online

                    32.5k

                    Benutzer

                    81.7k

                    Themen

                    1.3m

                    Beiträge
                    Community
                    Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                    ioBroker Community 2014-2025
                    logo
                    • Anmelden

                    • Du hast noch kein Konto? Registrieren

                    • Anmelden oder registrieren, um zu suchen
                    • Erster Beitrag
                      Letzter Beitrag
                    0
                    • Home
                    • Aktuell
                    • Tags
                    • Ungelesen 0
                    • Kategorien
                    • Unreplied
                    • Beliebt
                    • GitHub
                    • Docu
                    • Hilfe