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

    NEWS

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    Node-Red Hilfe

    This topic has been deleted. Only users with topic management privileges can see it.
    • S
      stefan22 @stefan22 last edited by

      @stefan22 Moin Mickym kurz Frage wie bekomm ich ne Max Speicherung über einen gewissen Zeitraum hin.
      Sprich ich möchte die Aussentemperatur über 24 Stunden loggen und mit dem max Wert vom vorhergehenden Tag
      meine Heizung am nächsten Tag schalten.

      Gruss Stefan

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

        @stefan22 Hallo stefan,

        dafür gibt es fix und fertig den aggregator node - der schmeisst Dir dann aber frühestens nach Ablauf der Zeit (bzw. mit dem Haken am Tageswechsel einen Wert aus.

        screen.png

        Die obige Node wird Dir also mit Einstellung 1 Tag erst ab Mitternacht einen Wert ausspuken - bzw. ohne den Haken (Submit incomplete interval on start) erst nach 24 Std.. 😉

        Am Anfang hat der ja noch keinen Wert drin. Um das mit dem Haken besser verständlich zu machen - gibts in der Beschreibung zu dem Node die folgende Erklärung, wenn man das zum Beispiel auf 4 Stunden einstellt. Dann gibt die Node wohl nicht nach den vollen 4 Stunden mit dem Haken den Wert aus, sondern tageszeitabhängig. 😉

        • Submit incomplete interval on start? option
          The Aggregator node aggregates on a whole unit of time selected. For example, every 4 hours starting at 12:30:00 will aggregate at [16:00:00], 20:00:00, 00:00:00 etc. The first aggregation result at 16:00:00, containing the values over the first "incomplete" timespan of 3.5 hours (12:30 - 16:00), is only outputted if the "Submit incomplete interval on start?" option is selected. If the option is not selected, the first output would be at 20:00 with the values between 16:00 and 20:00.

        • In practise this option should be deselected if you have to ensure that all aggregation results are based on an equal timespan. If this is not an issue or you explicitly want also the first values aggregated for your application, then this option should be selected.

        Also die aggregator Node einfach hinter Deinen Sensor der Dir die Aussentemperatur auswirft und dann bekommst Du alle 24 Std. den max Wert geliefert. 😉 Easy. 😮

        Ansonsten kann das auch mit einer Function node selbst etwas intranspartenter implementieren. Da bist Du noch flexibler kostet aber mehr Aufwand.

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

          @stefan22 said in Node-Red Hilfe:

          @haselchen Nur ich habe kein iBroker laufen

          Du hast ja anfangs geschrieben, dass Du kein iobroker laufen hast. Komisch 😉 - dass Du hier trotzdem in dem Forum gelandet bist.

          Einen großen Vorteil, den dieses System hat - auch wenn Du keine sonstigen Adapter verwendest, ist eben die Datenspeicherung und das man hier jederzeit den Status sehen kann.

          Node-Red nutze ich vor allem als Logikmaschine (die meisten iobroker User - nutzen hier eher Blockly) und bei der Speicherung von Daten bleibt es Dir überlassen, ob Du hier auf Adapter zugreifst oder diese mit Node-Red selbst ermittelst (wie mit Deinem http - Node). 😉

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

            @stefan22 Für die Initialisierung kannst Du aber auch eine normale Inject Node bei Start von Node-Red benutzen, bevor der aggregator Node einen Wert ausspukt.

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

              @mickym Tja was soll ich sagen. Es gibt mittlerweile soviele Sachen von - bis. Im Endeffekt habe ich ein stabiles KNX System .
              Meine Server sind von Real KNX . Diese beinhalten eine einfach Visu für die iPhones .
              Wobei mir das aber auch so gefällt.
              Sicherlich könnte ich auch über Real KNX schöne Dashboards erstellen.
              Der Node - Red wird ausschliesslich als Logik Erweiterung bei Real KNX hergenommen.
              Mango ich kenne mich nicht mit Programmiersprachen aus.
              Sicherlich hab ich mal vor 15 Jahren mit Java rumgespielt, habe es aber nie gebraucht.
              Weshalb ich mich für Real KNX entschieden habe , ist das diese eine Offline Sprachsteuerung wo die Komponenten in eine 55 x 55
              Unterputzdose passen und die Daten nicht an einen Cloud geschickt werden.
              Somit entfällt bei mir Alexa und Co für die Sprachsteuerung.
              War purer Zufall das ich hier jemanden gefunden hat der es auf den Kasten hat und mir das so erklären kann damit ich es auch verstehe.

              Gruss

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

                @stefan22 OK - dann dürfte Dir aber der Tipp mit der aggregator Node soweit erst mal hoffentlich weiter geholfen haben.

                S 2 Replies Last reply Reply Quote 0
                • S
                  stefan22 @mickym last edited by

                  @mickym Na das auf jedenfall. Wie gesagt wenn ich mal nen Anfang habe, dann komm ich schon irgendwie weiter. 🙂 Dankeschön. Es gibt wenig deutsche Foren zwecks Node-Red.
                  Kommt mir zumindest so vor.

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

                    @mickym Soooo ich hätt da mal wieder ein kleines Problem Lach . Ich bekomme nen Werte String von meinen IPSteckdosen per UDP rein diesen möchte ich umändern. Damit ich meine 3 Steckdosen mit True und False auswerten kann.

                    NET-PwrCtrl:ANEL.INTERN :192.168.2.16:255.255.255.0:192.168.2.1:0.4.163.18.8.89:Nr. 1,1:Nr. 2,1:Nr. 3,1:Nr. 4,0:Nr. 5,0:Nr. 6,0:Nr. 7,0:Nr. 8,0:248:80:NET-PWRCTRL_04.6:H:xor:

                    So kommt der Code rein.

                    Jetzt hab ich es per Change Node probiert Sprich Nr. 1,1 durch True zu ersetzen Nr.1,0 durch false . Hm leider klappt das nicht.

                    IMG_2899.jpeg

                    mickym 3 Replies Last reply Reply Quote 0
                    • mickym
                      mickym Most Active @stefan22 last edited by mickym

                      @stefan22 Du musst doch den String erst mal aufteilen nach den Bedeutungen. - siehe Flow danach!

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

                        @stefan22 So ich habe Dir den Flow fertig gemacht - Du musst nur noch DEINE UDP Node vorne statt oder zusätzlich zu dem Inject Node machen.

                        [
                            {
                                "id": "13716b60.f67195",
                                "type": "inject",
                                "z": "98fc4b41.33d6f8",
                                "name": "",
                                "props": [
                                    {
                                        "p": "payload"
                                    },
                                    {
                                        "p": "topic",
                                        "vt": "str"
                                    }
                                ],
                                "repeat": "",
                                "crontab": "",
                                "once": false,
                                "onceDelay": 0.1,
                                "topic": "",
                                "payload": "NET-PwrCtrl:ANEL.INTERN :192.168.2.16:255.255.255.0:192.168.2.1:0.4.163.18.8.89:Nr. 1,1:Nr. 2,1:Nr. 3,1:Nr. 4,0:Nr. 5,0:Nr. 6,0:Nr. 7,0:Nr. 8,0:248:80:NET-PWRCTRL_04.6:H:xor:",
                                "payloadType": "str",
                                "x": 190,
                                "y": 500,
                                "wires": [
                                    [
                                        "a8cffdaa.8c57f"
                                    ]
                                ]
                            },
                            {
                                "id": "a8cffdaa.8c57f",
                                "type": "split",
                                "z": "98fc4b41.33d6f8",
                                "name": "",
                                "splt": ":",
                                "spltType": "str",
                                "arraySplt": 1,
                                "arraySpltType": "len",
                                "stream": false,
                                "addname": "",
                                "x": 350,
                                "y": 500,
                                "wires": [
                                    [
                                        "3c05f116.b85dfe"
                                    ]
                                ]
                            },
                            {
                                "id": "3c05f116.b85dfe",
                                "type": "switch",
                                "z": "98fc4b41.33d6f8",
                                "name": "",
                                "property": "payload",
                                "propertyType": "msg",
                                "rules": [
                                    {
                                        "t": "regex",
                                        "v": "Nr.\\W\\d,(\\d)",
                                        "vt": "str",
                                        "case": false
                                    }
                                ],
                                "checkall": "true",
                                "repair": false,
                                "outputs": 1,
                                "x": 510,
                                "y": 500,
                                "wires": [
                                    [
                                        "3f8e3c49.d55c64"
                                    ]
                                ]
                            },
                            {
                                "id": "3f8e3c49.d55c64",
                                "type": "change",
                                "z": "98fc4b41.33d6f8",
                                "name": "",
                                "rules": [
                                    {
                                        "t": "set",
                                        "p": "topic",
                                        "pt": "msg",
                                        "to": "payload",
                                        "tot": "msg"
                                    },
                                    {
                                        "t": "change",
                                        "p": "topic",
                                        "pt": "msg",
                                        "from": "(Nr.\\W\\d),\\d",
                                        "fromt": "re",
                                        "to": "$1",
                                        "tot": "str"
                                    },
                                    {
                                        "t": "change",
                                        "p": "payload",
                                        "pt": "msg",
                                        "from": "Nr.\\W\\d,(\\d)",
                                        "fromt": "re",
                                        "to": "$1",
                                        "tot": "str"
                                    },
                                    {
                                        "t": "change",
                                        "p": "payload",
                                        "pt": "msg",
                                        "from": "0",
                                        "fromt": "str",
                                        "to": "false",
                                        "tot": "bool"
                                    },
                                    {
                                        "t": "change",
                                        "p": "payload",
                                        "pt": "msg",
                                        "from": "1",
                                        "fromt": "str",
                                        "to": "true",
                                        "tot": "bool"
                                    }
                                ],
                                "action": "",
                                "property": "",
                                "from": "",
                                "to": "",
                                "reg": false,
                                "x": 690,
                                "y": 500,
                                "wires": [
                                    [
                                        "d68131f7.489bd"
                                    ]
                                ]
                            },
                            {
                                "id": "d68131f7.489bd",
                                "type": "switch",
                                "z": "98fc4b41.33d6f8",
                                "name": "",
                                "property": "topic",
                                "propertyType": "msg",
                                "rules": [
                                    {
                                        "t": "eq",
                                        "v": "Nr. 1",
                                        "vt": "str"
                                    },
                                    {
                                        "t": "eq",
                                        "v": "Nr. 2",
                                        "vt": "str"
                                    },
                                    {
                                        "t": "eq",
                                        "v": "Nr. 3",
                                        "vt": "str"
                                    },
                                    {
                                        "t": "eq",
                                        "v": "Nr. 4",
                                        "vt": "str"
                                    },
                                    {
                                        "t": "eq",
                                        "v": "Nr. 5",
                                        "vt": "str"
                                    },
                                    {
                                        "t": "eq",
                                        "v": "Nr. 6",
                                        "vt": "str"
                                    },
                                    {
                                        "t": "eq",
                                        "v": "Nr. 7",
                                        "vt": "str"
                                    },
                                    {
                                        "t": "eq",
                                        "v": "Nr. 8",
                                        "vt": "str"
                                    }
                                ],
                                "checkall": "true",
                                "repair": false,
                                "outputs": 8,
                                "x": 900,
                                "y": 500,
                                "wires": [
                                    [
                                        "43236246.2a3cdc"
                                    ],
                                    [
                                        "f2342240.43dce"
                                    ],
                                    [
                                        "4c422a88.79b674"
                                    ],
                                    [
                                        "7360dd9a.b9b404"
                                    ],
                                    [
                                        "b44fe117.25c32"
                                    ],
                                    [
                                        "7db66d75.b4ae14"
                                    ],
                                    [
                                        "b2547ef7.a8d86"
                                    ],
                                    [
                                        "ed920844.f36628"
                                    ]
                                ]
                            },
                            {
                                "id": "43236246.2a3cdc",
                                "type": "debug",
                                "z": "98fc4b41.33d6f8",
                                "name": "Steckdose 1",
                                "active": true,
                                "tosidebar": true,
                                "console": false,
                                "tostatus": false,
                                "complete": "payload",
                                "targetType": "msg",
                                "statusVal": "",
                                "statusType": "auto",
                                "x": 1110,
                                "y": 360,
                                "wires": []
                            },
                            {
                                "id": "f2342240.43dce",
                                "type": "debug",
                                "z": "98fc4b41.33d6f8",
                                "name": "Steckdose 2",
                                "active": true,
                                "tosidebar": true,
                                "console": false,
                                "tostatus": false,
                                "complete": "payload",
                                "targetType": "msg",
                                "statusVal": "",
                                "statusType": "auto",
                                "x": 1110,
                                "y": 400,
                                "wires": []
                            },
                            {
                                "id": "4c422a88.79b674",
                                "type": "debug",
                                "z": "98fc4b41.33d6f8",
                                "name": "Steckdose 3",
                                "active": true,
                                "tosidebar": true,
                                "console": false,
                                "tostatus": false,
                                "complete": "payload",
                                "targetType": "msg",
                                "statusVal": "",
                                "statusType": "auto",
                                "x": 1110,
                                "y": 440,
                                "wires": []
                            },
                            {
                                "id": "7360dd9a.b9b404",
                                "type": "debug",
                                "z": "98fc4b41.33d6f8",
                                "name": "Steckdose 4",
                                "active": true,
                                "tosidebar": true,
                                "console": false,
                                "tostatus": false,
                                "complete": "payload",
                                "targetType": "msg",
                                "statusVal": "",
                                "statusType": "auto",
                                "x": 1110,
                                "y": 480,
                                "wires": []
                            },
                            {
                                "id": "b44fe117.25c32",
                                "type": "debug",
                                "z": "98fc4b41.33d6f8",
                                "name": "Steckdose 5",
                                "active": true,
                                "tosidebar": true,
                                "console": false,
                                "tostatus": false,
                                "complete": "payload",
                                "targetType": "msg",
                                "statusVal": "",
                                "statusType": "auto",
                                "x": 1110,
                                "y": 520,
                                "wires": []
                            },
                            {
                                "id": "7db66d75.b4ae14",
                                "type": "debug",
                                "z": "98fc4b41.33d6f8",
                                "name": "Steckdose 6",
                                "active": true,
                                "tosidebar": true,
                                "console": false,
                                "tostatus": false,
                                "complete": "payload",
                                "targetType": "msg",
                                "statusVal": "",
                                "statusType": "auto",
                                "x": 1110,
                                "y": 560,
                                "wires": []
                            },
                            {
                                "id": "b2547ef7.a8d86",
                                "type": "debug",
                                "z": "98fc4b41.33d6f8",
                                "name": "Steckdose 7",
                                "active": true,
                                "tosidebar": true,
                                "console": false,
                                "tostatus": false,
                                "complete": "payload",
                                "targetType": "msg",
                                "statusVal": "",
                                "statusType": "auto",
                                "x": 1110,
                                "y": 600,
                                "wires": []
                            },
                            {
                                "id": "ed920844.f36628",
                                "type": "debug",
                                "z": "98fc4b41.33d6f8",
                                "name": "Steckdose 8",
                                "active": true,
                                "tosidebar": true,
                                "console": false,
                                "tostatus": false,
                                "complete": "payload",
                                "targetType": "msg",
                                "statusVal": "",
                                "statusType": "auto",
                                "x": 1110,
                                "y": 640,
                                "wires": []
                            }
                        ]
                        

                        Schaut dann so aus:

                        screen.png

                        Mit dem FLOW ist es egal - was davor oder dahinter steht - das wird einfach ignoriert. 😉

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

                          @stefan22 said in Node-Red Hilfe:

                          @mickym Soooo ich hätt da mal wieder ein kleines Problem Lach . Ich bekomme nen Werte String von meinen IPSteckdosen per UDP rein diesen möchte ich umändern. Damit ich meine 3 Steckdosen mit True und False auswerten kann.

                          NET-PwrCtrl:ANEL.INTERN :192.168.2.16:255.255.255.0:192.168.2.1:0.4.163.18.8.89:Nr. 1,1:Nr. 2,1:Nr. 3,1:Nr. 4,0:Nr. 5,0:Nr. 6,0:Nr. 7,0:Nr. 8,0:248:80:NET-PWRCTRL_04.6:H:xor:

                          So kommt der Code rein.

                          Jetzt hab ich es per Change Node probiert Sprich Nr. 1,1 durch True zu ersetzen Nr.1,0 durch false . Hm leider klappt das nicht.

                          IMG_2899.jpeg

                          Warum das nicht geht ist einfach zu erklären. Die msg.payload enthält den ganzen String und nicht nur einen Teil. Also kann die Change Node nichts zum ersetzen finden. Und die letzte Festlegung ist unsinnig - da Du msg.payload = msg.payload setzt.

                          Ansonsten wenn Du zu meinem Flow Fragen hast - ich erkläre es Dir gerne.

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

                            @mickym ok 🙂 Dann fangen wir mal an. Es würde quasi nur mit der Change Node klappen wenn z.b. eine json (java) sprich wo die Objekte und Variablen schon bestehen?
                            Würde es z.B. , auch wenn es umständlich wäre, gehen wenn ich nach dem UPD Eingang ne Function Node setzte und den eingehend String mit variablen und Objekte definiere ????
                            Oder bin ich da auch auf dem Holzweg

                            Mal davon abgesehen das es nicht geht wie ich es mir gedacht habe , was müsste dann zum Festlegen in der Change Node angegeben werden.
                            Das Festlegen definiert doch was mit der eingehenden msg.payload passiert und wie sie dann übergeben wird oder ?

                            Gruß

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

                              @stefan22 Ich habe Dir doch einen kompletten Flow gemacht - importiere den mal und dann siehst Du doch was ich gemacht habe.

                              Also den Code unten in Zwischenablage und dann bei Dir auf Import gehen und dort den Inhalt der Zwischenablage rein. Du musst dann nur noch Deine UDP Node davorklemmen. In dem Inject Node - habe ich exakt den String reinkopiert den Du gepostet hast - deswegen müsste das eigentlich funktionieren.

                              Im Großen und Ganzen habe ich Deinen String mit dem Doppelpunkt in einzelne Nachrichten aufgeteilt, dann kümmere ich mich nur noch um den relevanten Teil mit den Nr. 1-8 und setze das topic und die payload.

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

                                @mickym Jo hat er sooooo. Also bei der Split-Node wird der einkommende Befehl, bei mir von der UPD-Node, genommen und mit : aufgeteilt in einzelne Arrays richtig ? Oder in ein ganzes Array ????

                                Sprich alles was zwischen : .... : ist ein Array

                                Ahh echt schlimm wenn man null Plan hat

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

                                  @stefan22 Nein nicht in ein Array - sondern in einzelne Nachrichten. Das heißt alles zwischen ein ":" wird eine eigene einzelne Nachricht - die damit eigenständig behandeln kannst. Mit dem nachfolgenden Switch Befehl lasse ich dann nur die Nachrichten durch die dem Schema: Nr. <Zahl>,<0 oder 1> enthalten durch usw.

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

                                    @mickym na weil du laut node mit : trennst dachte ich es wäre : . Wo kommen dann die "." her ???

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

                                      @stefan22 Habe mich verschrieben ist schon korrigiert. 😉 Ich habe halt Deinen UDP String so interpretiert - dass mit ":" einzelne Felder oder Informationen von einander getrennt werden.

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

                                        @mickym 🙂 :Nr. 1,1: wird zu einem Array. Ist das Array dann ein Objekt ?

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

                                          @stefan22 Nein kein Array. Nr. 1,1 - wird eine eigene msg.payload.
                                          Mach mal ein Debug Node hinter den Split Node - drücke auf den Injekt Node und Du siehst dass der Split Node alles zwischen den ":" in einzelne Nachrichten mit einer msg.payload auftteilt.
                                          Wenn das ein Array wäre dann wäre es nur eine payload mit Objekten.
                                          Das heißt der Split Node macht Nachrichten, wobei eine Nachricht** dann in der msg.payload: Nr. 1,1 stehen hat.
                                          Es ist also kein Objekt oder Array - sondern eine Nachricht mit einem schnöden String. 😉
                                          Die Doppelpunkte dienen der Split Node als Marker zur Auftrennung der Nachricht und sind anschließend nicht mehr Bestandteil der Nachricht.

                                          Hier ein Video dazu. 😉

                                          S 1 Reply Last reply Reply Quote 0
                                          • S
                                            stefan22 @stefan22 last edited by

                                            @stefan22 Dann kommt die msg.payload zur ersten Switch-Node.
                                            Die bewirkt das du alle Objekt mit Nr. (kriege ich noch hin) das W ist die Leerstelle
                                            das d die erste Zahl dann , dann die zweite Zahl da keine Leerstelle nach dem Komma wird diese in Klammern gesetzt ???????

                                            Woher weiß man das ????? Lach

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

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            876
                                            Online

                                            31.6k
                                            Users

                                            79.6k
                                            Topics

                                            1.3m
                                            Posts

                                            3
                                            103
                                            6955
                                            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