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. Node Red parsen

NEWS

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    9
    1
    81

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    24
    1
    1.4k

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

Node Red parsen

Geplant Angeheftet Gesperrt Verschoben Node-Red
12 Beiträge 3 Kommentatoren 2.2k Aufrufe 3 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.
  • J Offline
    J Offline
    Jens69
    schrieb am zuletzt editiert von Jens69
    #1

    Hallo, ich habe am Tasmota zwei DS18B20 Sensoren.
    per MQTT erhalte ich folgenden String (nach Json):

    object
    Time: "2022-03-09T21:43:25"
    DS18B20-1: object
    Id: "00043C9295FF"
    Temperature: 19.9
    DS18B20-2: object
    Id: "00046509CBFF"
    Temperature: -1.7
    TempUnit: "C"
    

    per funktion versuche ich dann aufzuteilen:

    var msgeins = {payload:msg.payload.DS18B20-1.Temperature};
    var msgzwei = {payload:msg.payload.DS18B20-2.Temperature};
    return msgeins, msgzwei ;
    

    Der Fehler ist, sobald ich DS18B20-1 statt DS18B20 einfüge wird die Funktion als fehlerhaft gekennzeichnet.

    schreibe ich

    var msgeins = {payload:msg.payload.DS18B20.Temperature};
    

    dann wir kein Fehler angezeigt aber ich erhalte NAN

    mickymM 1 Antwort Letzte Antwort
    0
    • J Jens69

      Hallo, ich habe am Tasmota zwei DS18B20 Sensoren.
      per MQTT erhalte ich folgenden String (nach Json):

      object
      Time: "2022-03-09T21:43:25"
      DS18B20-1: object
      Id: "00043C9295FF"
      Temperature: 19.9
      DS18B20-2: object
      Id: "00046509CBFF"
      Temperature: -1.7
      TempUnit: "C"
      

      per funktion versuche ich dann aufzuteilen:

      var msgeins = {payload:msg.payload.DS18B20-1.Temperature};
      var msgzwei = {payload:msg.payload.DS18B20-2.Temperature};
      return msgeins, msgzwei ;
      

      Der Fehler ist, sobald ich DS18B20-1 statt DS18B20 einfüge wird die Funktion als fehlerhaft gekennzeichnet.

      schreibe ich

      var msgeins = {payload:msg.payload.DS18B20.Temperature};
      

      dann wir kein Fehler angezeigt aber ich erhalte NAN

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

      @jens69 sagte in Node Red parsen:

      var msgeins = {payload:msg.payload.DS18B20-1.Temperature}; var msgzwei = {payload:msg.payload.DS18B20-2.Temperature}; return msgeins, msgzwei ;

      Ich verstehe nicht, warum man wieder function Nodes für so was braucht aber egal.

      Sind mehrere Fehler:

      1. Um mehrere Nachrichten auszugeben müssen diese als Array ausgeben werden.
      return [[msgeins, msgzwei]];
      
      1. Wenn ich Probleme mit der Adressierung habe dann gebe ich erst mal das ganze Objekt aus und ermittle den Pfad über das Debug Fenster:

      463f4ba2-fba9-4491-b791-27c05836982c-image.png

      NodeRed Copy Path.gif

      Das kopiert man dann und siehe da, dann sieht der Pfad anders aus:

      fb65b3b6-49b5-4e8f-b4e2-e7544d2e4968-image.png

      var msgeins = {payload:msg.payload["DS18B20-1"].Temperature};
      var msgzwei = {payload:msg.payload["DS18B20-2"].Temperature};
      return [[msgeins, msgzwei]];
      

      Ich empfehle trotzdem - sowas ohne Funktion Nodes zu machen:

      ef88ff10-a5b0-4986-8c89-103609778324-image.png

      [
         {
             "id": "7ba3aba1279031fc",
             "type": "inject",
             "z": "54b226bc.0793e8",
             "name": "",
             "props": [
                 {
                     "p": "payload"
                 }
             ],
             "repeat": "",
             "crontab": "",
             "once": false,
             "onceDelay": 0.1,
             "topic": "",
             "payload": "{\"Time\":\"2022-03-09T21:43:25\",\"DS18B20-1\":{\"Id\":\"00043C9295FF\",\"Temperature\":19.9},\"DS18B20-2\":{\"Id\":\"00046509CBFF\",\"Temperature\":-1.7,\"TempUnit\":\"C\"}}",
             "payloadType": "json",
             "x": 570,
             "y": 2500,
             "wires": [
                 [
                     "e0f7c0f7c76bf3b2",
                     "f863347a6c7a5bb5"
                 ]
             ]
         },
         {
             "id": "e0f7c0f7c76bf3b2",
             "type": "debug",
             "z": "54b226bc.0793e8",
             "name": "",
             "active": false,
             "tosidebar": true,
             "console": false,
             "tostatus": false,
             "complete": "false",
             "statusVal": "",
             "statusType": "auto",
             "x": 770,
             "y": 2460,
             "wires": []
         },
         {
             "id": "f863347a6c7a5bb5",
             "type": "function",
             "z": "54b226bc.0793e8",
             "name": "",
             "func": "var msgeins = {payload:msg.payload[\"DS18B20-1\"].Temperature};\nvar msgzwei = {payload:msg.payload[\"DS18B20-2\"].Temperature};\nreturn [[msgeins, msgzwei]];",
             "outputs": 1,
             "noerr": 0,
             "initialize": "",
             "finalize": "",
             "libs": [],
             "x": 750,
             "y": 2500,
             "wires": [
                 [
                     "b3da81f0eebfcedc"
                 ]
             ]
         },
         {
             "id": "b3da81f0eebfcedc",
             "type": "debug",
             "z": "54b226bc.0793e8",
             "name": "",
             "active": false,
             "tosidebar": true,
             "console": false,
             "tostatus": false,
             "complete": "false",
             "statusVal": "",
             "statusType": "auto",
             "x": 930,
             "y": 2500,
             "wires": []
         },
         {
             "id": "582c3932f654655a",
             "type": "change",
             "z": "54b226bc.0793e8",
             "name": "msgzwei",
             "rules": [
                 {
                     "t": "set",
                     "p": "payload",
                     "pt": "msg",
                     "to": "payload[\"DS18B20-2\"].Temperature",
                     "tot": "msg"
                 }
             ],
             "action": "",
             "property": "",
             "from": "",
             "to": "",
             "reg": false,
             "x": 740,
             "y": 2640,
             "wires": [
                 [
                     "8829b1e1d93ceba8"
                 ]
             ]
         },
         {
             "id": "3bbd9fad2658f588",
             "type": "inject",
             "z": "54b226bc.0793e8",
             "name": "",
             "props": [
                 {
                     "p": "payload"
                 }
             ],
             "repeat": "",
             "crontab": "",
             "once": false,
             "onceDelay": 0.1,
             "topic": "",
             "payload": "{\"Time\":\"2022-03-09T21:43:25\",\"DS18B20-1\":{\"Id\":\"00043C9295FF\",\"Temperature\":19.9},\"DS18B20-2\":{\"Id\":\"00046509CBFF\",\"Temperature\":-1.7,\"TempUnit\":\"C\"}}",
             "payloadType": "json",
             "x": 590,
             "y": 2620,
             "wires": [
                 [
                     "582c3932f654655a",
                     "52802329d9d54b66"
                 ]
             ]
         },
         {
             "id": "52802329d9d54b66",
             "type": "change",
             "z": "54b226bc.0793e8",
             "name": "msgeins",
             "rules": [
                 {
                     "t": "set",
                     "p": "payload",
                     "pt": "msg",
                     "to": "payload[\"DS18B20-1\"].Temperature",
                     "tot": "msg"
                 }
             ],
             "action": "",
             "property": "",
             "from": "",
             "to": "",
             "reg": false,
             "x": 740,
             "y": 2600,
             "wires": [
                 [
                     "8829b1e1d93ceba8"
                 ]
             ]
         },
         {
             "id": "8829b1e1d93ceba8",
             "type": "debug",
             "z": "54b226bc.0793e8",
             "name": "",
             "active": true,
             "tosidebar": true,
             "console": false,
             "tostatus": false,
             "complete": "false",
             "statusVal": "",
             "statusType": "auto",
             "x": 910,
             "y": 2620,
             "wires": []
         }
      ]
      

      Es macht sicher auch Sinn - sich mal mit den Basics des Debug Fenster auseinanderzusetzen:

      https://nodered.org/docs/user-guide/messages

      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.

      J 1 Antwort Letzte Antwort
      1
      • mickymM mickym

        @jens69 sagte in Node Red parsen:

        var msgeins = {payload:msg.payload.DS18B20-1.Temperature}; var msgzwei = {payload:msg.payload.DS18B20-2.Temperature}; return msgeins, msgzwei ;

        Ich verstehe nicht, warum man wieder function Nodes für so was braucht aber egal.

        Sind mehrere Fehler:

        1. Um mehrere Nachrichten auszugeben müssen diese als Array ausgeben werden.
        return [[msgeins, msgzwei]];
        
        1. Wenn ich Probleme mit der Adressierung habe dann gebe ich erst mal das ganze Objekt aus und ermittle den Pfad über das Debug Fenster:

        463f4ba2-fba9-4491-b791-27c05836982c-image.png

        NodeRed Copy Path.gif

        Das kopiert man dann und siehe da, dann sieht der Pfad anders aus:

        fb65b3b6-49b5-4e8f-b4e2-e7544d2e4968-image.png

        var msgeins = {payload:msg.payload["DS18B20-1"].Temperature};
        var msgzwei = {payload:msg.payload["DS18B20-2"].Temperature};
        return [[msgeins, msgzwei]];
        

        Ich empfehle trotzdem - sowas ohne Funktion Nodes zu machen:

        ef88ff10-a5b0-4986-8c89-103609778324-image.png

        [
           {
               "id": "7ba3aba1279031fc",
               "type": "inject",
               "z": "54b226bc.0793e8",
               "name": "",
               "props": [
                   {
                       "p": "payload"
                   }
               ],
               "repeat": "",
               "crontab": "",
               "once": false,
               "onceDelay": 0.1,
               "topic": "",
               "payload": "{\"Time\":\"2022-03-09T21:43:25\",\"DS18B20-1\":{\"Id\":\"00043C9295FF\",\"Temperature\":19.9},\"DS18B20-2\":{\"Id\":\"00046509CBFF\",\"Temperature\":-1.7,\"TempUnit\":\"C\"}}",
               "payloadType": "json",
               "x": 570,
               "y": 2500,
               "wires": [
                   [
                       "e0f7c0f7c76bf3b2",
                       "f863347a6c7a5bb5"
                   ]
               ]
           },
           {
               "id": "e0f7c0f7c76bf3b2",
               "type": "debug",
               "z": "54b226bc.0793e8",
               "name": "",
               "active": false,
               "tosidebar": true,
               "console": false,
               "tostatus": false,
               "complete": "false",
               "statusVal": "",
               "statusType": "auto",
               "x": 770,
               "y": 2460,
               "wires": []
           },
           {
               "id": "f863347a6c7a5bb5",
               "type": "function",
               "z": "54b226bc.0793e8",
               "name": "",
               "func": "var msgeins = {payload:msg.payload[\"DS18B20-1\"].Temperature};\nvar msgzwei = {payload:msg.payload[\"DS18B20-2\"].Temperature};\nreturn [[msgeins, msgzwei]];",
               "outputs": 1,
               "noerr": 0,
               "initialize": "",
               "finalize": "",
               "libs": [],
               "x": 750,
               "y": 2500,
               "wires": [
                   [
                       "b3da81f0eebfcedc"
                   ]
               ]
           },
           {
               "id": "b3da81f0eebfcedc",
               "type": "debug",
               "z": "54b226bc.0793e8",
               "name": "",
               "active": false,
               "tosidebar": true,
               "console": false,
               "tostatus": false,
               "complete": "false",
               "statusVal": "",
               "statusType": "auto",
               "x": 930,
               "y": 2500,
               "wires": []
           },
           {
               "id": "582c3932f654655a",
               "type": "change",
               "z": "54b226bc.0793e8",
               "name": "msgzwei",
               "rules": [
                   {
                       "t": "set",
                       "p": "payload",
                       "pt": "msg",
                       "to": "payload[\"DS18B20-2\"].Temperature",
                       "tot": "msg"
                   }
               ],
               "action": "",
               "property": "",
               "from": "",
               "to": "",
               "reg": false,
               "x": 740,
               "y": 2640,
               "wires": [
                   [
                       "8829b1e1d93ceba8"
                   ]
               ]
           },
           {
               "id": "3bbd9fad2658f588",
               "type": "inject",
               "z": "54b226bc.0793e8",
               "name": "",
               "props": [
                   {
                       "p": "payload"
                   }
               ],
               "repeat": "",
               "crontab": "",
               "once": false,
               "onceDelay": 0.1,
               "topic": "",
               "payload": "{\"Time\":\"2022-03-09T21:43:25\",\"DS18B20-1\":{\"Id\":\"00043C9295FF\",\"Temperature\":19.9},\"DS18B20-2\":{\"Id\":\"00046509CBFF\",\"Temperature\":-1.7,\"TempUnit\":\"C\"}}",
               "payloadType": "json",
               "x": 590,
               "y": 2620,
               "wires": [
                   [
                       "582c3932f654655a",
                       "52802329d9d54b66"
                   ]
               ]
           },
           {
               "id": "52802329d9d54b66",
               "type": "change",
               "z": "54b226bc.0793e8",
               "name": "msgeins",
               "rules": [
                   {
                       "t": "set",
                       "p": "payload",
                       "pt": "msg",
                       "to": "payload[\"DS18B20-1\"].Temperature",
                       "tot": "msg"
                   }
               ],
               "action": "",
               "property": "",
               "from": "",
               "to": "",
               "reg": false,
               "x": 740,
               "y": 2600,
               "wires": [
                   [
                       "8829b1e1d93ceba8"
                   ]
               ]
           },
           {
               "id": "8829b1e1d93ceba8",
               "type": "debug",
               "z": "54b226bc.0793e8",
               "name": "",
               "active": true,
               "tosidebar": true,
               "console": false,
               "tostatus": false,
               "complete": "false",
               "statusVal": "",
               "statusType": "auto",
               "x": 910,
               "y": 2620,
               "wires": []
           }
        ]
        

        Es macht sicher auch Sinn - sich mal mit den Basics des Debug Fenster auseinanderzusetzen:

        https://nodered.org/docs/user-guide/messages

        J Offline
        J Offline
        Jens69
        schrieb am zuletzt editiert von Jens69
        #3

        @mickym said in Node Red parsen:

        Danke ich habe jetzt

        var msgeins = {payload:msg.payload["DS18B20-1"].Temperature};
        var msgzwei = {payload:msg.payload["DS18B20-2"].Temperature};
        
        return [msgeins, msgzwei];
        

        was Du aber mit change machen willst weiß ich nicht?
        setze, ändern, löschen ?
        da hab ich kein Beispiel für.

        Aber wie ich es oben habe kann ich das in ein Gauge schreiben

        mickymM 1 Antwort Letzte Antwort
        0
        • J Jens69

          @mickym said in Node Red parsen:

          Danke ich habe jetzt

          var msgeins = {payload:msg.payload["DS18B20-1"].Temperature};
          var msgzwei = {payload:msg.payload["DS18B20-2"].Temperature};
          
          return [msgeins, msgzwei];
          

          was Du aber mit change machen willst weiß ich nicht?
          setze, ändern, löschen ?
          da hab ich kein Beispiel für.

          Aber wie ich es oben habe kann ich das in ein Gauge schreiben

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

          @jens69 Ich habe Dir unten den ganzen Flow zum Import angehängt - da siehst Du wie Du die Werte über eine Change-Node extrahierst.

          45bdf590-0586-4566-8753-caffe9a49173-image.png

          und damit kannst Du es ebenfalls in eine Gauge schreiben.

          Ich kann Dir nur raten function Nodes zu meiden wo es geht, wenn Du die Vorteile von NR nutzen willst. Manchmal braucht man sie, aber ansonsten kannst Du sonst gleich alles in einer Function Node programmieren und brauchst keine Flows.

          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.

          J 1 Antwort Letzte Antwort
          1
          • mickymM mickym

            @jens69 Ich habe Dir unten den ganzen Flow zum Import angehängt - da siehst Du wie Du die Werte über eine Change-Node extrahierst.

            45bdf590-0586-4566-8753-caffe9a49173-image.png

            und damit kannst Du es ebenfalls in eine Gauge schreiben.

            Ich kann Dir nur raten function Nodes zu meiden wo es geht, wenn Du die Vorteile von NR nutzen willst. Manchmal braucht man sie, aber ansonsten kannst Du sonst gleich alles in einer Function Node programmieren und brauchst keine Flows.

            J Offline
            J Offline
            Jens69
            schrieb am zuletzt editiert von
            #5

            @mickym sorry, hab nie Javascript programmiert.
            Nur Basic, Arduino, C und so einen Kram...

            mickymM F 2 Antworten Letzte Antwort
            0
            • J Jens69

              @mickym sorry, hab nie Javascript programmiert.
              Nur Basic, Arduino, C und so einen Kram...

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

              @jens69 Wie gesagt, wenn Du die Vorteile von NodeRed nutzen willst - dann verzichte auf Function Nodes so gut es geht. Die Function Node programmierst Du alles in Javascript - da kannst gleich den Javascript Adapter nutzen.

              Hier mal ein Beispiel:

              https://forum.iobroker.net/topic/40242/msg-payload-werte-auslesen/22?_=1646874293110

              Zuerst siehst Du einen Flow - wo du den Nachrichtenflow nachvollziehen kannst:

              2ed46fe4-085f-4240-a5f7-dd3240f04fa6-image.png

              den ganzen Flow - kannst in JS programmieren und in einer Function NOde verstecken

              342f9afd-2265-47d5-8cb4-0b9efbdc7bdc-image.png

              Was kann man besser nachvollziehen, wenn es einen Fehler gibt?

              Wie gesagt Du machst Dir halt die Vorteile kaputt über den Nachrichtenflow einen Programmablauf grafisch nachzuvollziehen. Du kannst letztlich machen was Du willst und ich hab Dir ja mit der function Node geholfen - ich gebe Dir ja nur den Tipp, dass Du, wenn Du lernst - erst mal versuchst ohne function NOdes auszukommen. In Function Nodes programmierst Du in Javascript.

              Das ganze NodeRed arbeitet in Javascript.

              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.

              J 2 Antworten Letzte Antwort
              1
              • mickymM mickym

                @jens69 Wie gesagt, wenn Du die Vorteile von NodeRed nutzen willst - dann verzichte auf Function Nodes so gut es geht. Die Function Node programmierst Du alles in Javascript - da kannst gleich den Javascript Adapter nutzen.

                Hier mal ein Beispiel:

                https://forum.iobroker.net/topic/40242/msg-payload-werte-auslesen/22?_=1646874293110

                Zuerst siehst Du einen Flow - wo du den Nachrichtenflow nachvollziehen kannst:

                2ed46fe4-085f-4240-a5f7-dd3240f04fa6-image.png

                den ganzen Flow - kannst in JS programmieren und in einer Function NOde verstecken

                342f9afd-2265-47d5-8cb4-0b9efbdc7bdc-image.png

                Was kann man besser nachvollziehen, wenn es einen Fehler gibt?

                Wie gesagt Du machst Dir halt die Vorteile kaputt über den Nachrichtenflow einen Programmablauf grafisch nachzuvollziehen. Du kannst letztlich machen was Du willst und ich hab Dir ja mit der function Node geholfen - ich gebe Dir ja nur den Tipp, dass Du, wenn Du lernst - erst mal versuchst ohne function NOdes auszukommen. In Function Nodes programmierst Du in Javascript.

                Das ganze NodeRed arbeitet in Javascript.

                J Offline
                J Offline
                Jens69
                schrieb am zuletzt editiert von
                #7

                @mickym Ziel ist es in der Garage, wo ich nur Stromversorung und WLAN habe Wert aufzusammeln und zu transportieren:

                • Stellung des Garagentor
                • Temperatur innen
                • Temperatur außen
                • Rückkanal: Taster für Torantrieb

                Das hab ich jahrelang mit eigenen Arduino-Script und HTTP-Request gemacht, jetzt mit Tasmota und MQTT

                Im Wohnzimmer hab ich ein weiteren ESP8266 mit LCD-Display

                Der Vorteil von Node Red ist das ich zusätzlich noch ein paar schönen Charts habe und eine Oberfläche ein/aus Befehle zu senden.
                Das kann ich aber auch am Taster.

                Da ich mich mit Node Red jetzt einen Monat beschäftige kenne ich noch nicht all Kniffe.
                Grafisches programmieren ist für mich gewöhnungsbedürftig
                Basic, ARexx, Shell-Script, Arduino und andere benötigen immer text-basiertes programmieren in Funktionen.

                Ist ja auch einfach.
                Mqtt-in - Json - Funktion - Chart oder Wert anzeigen oder mqtt-out

                mickymM 1 Antwort Letzte Antwort
                0
                • J Jens69

                  @mickym Ziel ist es in der Garage, wo ich nur Stromversorung und WLAN habe Wert aufzusammeln und zu transportieren:

                  • Stellung des Garagentor
                  • Temperatur innen
                  • Temperatur außen
                  • Rückkanal: Taster für Torantrieb

                  Das hab ich jahrelang mit eigenen Arduino-Script und HTTP-Request gemacht, jetzt mit Tasmota und MQTT

                  Im Wohnzimmer hab ich ein weiteren ESP8266 mit LCD-Display

                  Der Vorteil von Node Red ist das ich zusätzlich noch ein paar schönen Charts habe und eine Oberfläche ein/aus Befehle zu senden.
                  Das kann ich aber auch am Taster.

                  Da ich mich mit Node Red jetzt einen Monat beschäftige kenne ich noch nicht all Kniffe.
                  Grafisches programmieren ist für mich gewöhnungsbedürftig
                  Basic, ARexx, Shell-Script, Arduino und andere benötigen immer text-basiertes programmieren in Funktionen.

                  Ist ja auch einfach.
                  Mqtt-in - Json - Funktion - Chart oder Wert anzeigen oder mqtt-out

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

                  @jens69 Nun wenn Du Hilfe brauchst, dann poste am Besten Deinen Flow - und wie gesagt gerade mit NR kann man sehr viel mit den vorhanden Nodes machen und braucht das herkömmliche Programmieren nicht. Gerade bei der Fehlersuche ist es halt einfach gut einfach eine Debug Node an den Ausgang einer vorhandenen Node zu hängen. In einer Function Node musst Du mit node.warn arbeiten und das ist mühselig. Insbesondere weil Du in einem normalen Programmflow ja auch viele Bedingungen und ggf. auch Schleifen hast, die Du halt sonst in einem Flow abbilden kannst.
                  Also anstelle von IF... ELSE - switch Node verwenden, anstelle von Zuweisungen CHANGE Nodes (oder auch zum Rechnen) usw.

                  Und wie gesagt ich und auch einige andere wie @frankyboy73 hier an Board helfen auch gerne, wie man sich von der herkömmlichen Programmierung löst. Bei mir waren es am Anfang auch mehr function-Nodes bis diese bei meinen neueren Flows auf ein Minimum reduziert wurden. Bei Kontext speichern nutzt man auch häufig function Nodes - aber das sind halt besondere Situationen.

                  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
                  • J Jens69

                    @mickym sorry, hab nie Javascript programmiert.
                    Nur Basic, Arduino, C und so einen Kram...

                    F Offline
                    F Offline
                    frankyboy73
                    schrieb am zuletzt editiert von frankyboy73
                    #9

                    @jens69 sagte in Node Red parsen:

                    @mickym sorry, hab nie Javascript programmiert.
                    Nur Basic, Arduino, C und so einen Kram...

                    Hi, den Flow den mickym in seiner Antwort unter spoiler angehängt hat, kannst du in Node Red importieren. Dazu den Code kopieren und in Node Red Importieren. Dazu brauchst du kein Javasript.
                    Import3.jpg
                    Import1.jpg
                    Import2.jpg

                    Schöne Grüße Frank

                    1 Antwort Letzte Antwort
                    1
                    • mickymM mickym

                      @jens69 Wie gesagt, wenn Du die Vorteile von NodeRed nutzen willst - dann verzichte auf Function Nodes so gut es geht. Die Function Node programmierst Du alles in Javascript - da kannst gleich den Javascript Adapter nutzen.

                      Hier mal ein Beispiel:

                      https://forum.iobroker.net/topic/40242/msg-payload-werte-auslesen/22?_=1646874293110

                      Zuerst siehst Du einen Flow - wo du den Nachrichtenflow nachvollziehen kannst:

                      2ed46fe4-085f-4240-a5f7-dd3240f04fa6-image.png

                      den ganzen Flow - kannst in JS programmieren und in einer Function NOde verstecken

                      342f9afd-2265-47d5-8cb4-0b9efbdc7bdc-image.png

                      Was kann man besser nachvollziehen, wenn es einen Fehler gibt?

                      Wie gesagt Du machst Dir halt die Vorteile kaputt über den Nachrichtenflow einen Programmablauf grafisch nachzuvollziehen. Du kannst letztlich machen was Du willst und ich hab Dir ja mit der function Node geholfen - ich gebe Dir ja nur den Tipp, dass Du, wenn Du lernst - erst mal versuchst ohne function NOdes auszukommen. In Function Nodes programmierst Du in Javascript.

                      Das ganze NodeRed arbeitet in Javascript.

                      J Offline
                      J Offline
                      Jens69
                      schrieb am zuletzt editiert von
                      #10

                      @mickym Das ist es ja, bin gewohnt das schriftlich zu lesen.
                      Und das kann ich in einer Funktion soweit.
                      Wenn ich da viele Bildchen habe sehe ich nicht was die machen.

                      Das ist genau wie mit dem Telefon.
                      ich habe noch gelernt mit dem Zeigefinger die Wählscheibe zu drehen also tippe ich das Smartfon mit dem Zeigefinger.

                      Die Verrenkungen mit dem Daumen bekomme ich nicht hin...
                      Den Jugendlichen geht es wohl anders...

                      Aber möglich das ich noch was lerne ...

                      mickymM 1 Antwort Letzte Antwort
                      0
                      • J Jens69

                        @mickym Das ist es ja, bin gewohnt das schriftlich zu lesen.
                        Und das kann ich in einer Funktion soweit.
                        Wenn ich da viele Bildchen habe sehe ich nicht was die machen.

                        Das ist genau wie mit dem Telefon.
                        ich habe noch gelernt mit dem Zeigefinger die Wählscheibe zu drehen also tippe ich das Smartfon mit dem Zeigefinger.

                        Die Verrenkungen mit dem Daumen bekomme ich nicht hin...
                        Den Jugendlichen geht es wohl anders...

                        Aber möglich das ich noch was lerne ...

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

                        @jens69

                        ich habe noch gelernt mit dem Zeigefinger die Wählscheibe zu drehen also tippe ich das Smartfon mit dem Zeigefinger.

                        Falls Du Jahrgang 69 bist, dann kann ich Dir Mut machen, bei mir hats auch geklappt ;) - und kenne auch noch Wählscheiben aus dem realen Leben. ;)

                        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
                        • F Offline
                          F Offline
                          frankyboy73
                          schrieb am zuletzt editiert von
                          #12

                          Jau, die 73 bei mir kommt auch nicht von ungefähr. Und Wählscheiben hatten wir auch, lange. Ein Telefon zu haben war damals der Hit, nur telefonieren durfte man nicht, kostete ja bei jedem Anruf Geld. :joy:

                          Schöne Grüße Frank

                          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

                          727

                          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