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. Wasserregulierung Aquarium

    NEWS

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    Wasserregulierung Aquarium

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

      @mickym
      nein wann sollte ich mir das angucken wenn ich hier beim lernen bin.

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

        @aphofis Na in dem Link habe ich Dir die Definitionen gepostet. Das hatte ich Dir doch vor 45 Minuten geschrieben.

        Also dann kopiere ich das nochmal hier rein:

        =======================================================================

        Also ein ARRAY beginnt IMMER mit einer ECKIGEN Klammer und schließt mit einer ECKIGEN Klammer ab und die einzelnen Elemente werden durch ein Komma getrennt.

        =======================================================================

        Also ein OBJEKT beginnt IMMER mit einer GESCHWEIFTEN Klammer und schließt mit einer GESCHWEIFTEN Klammer ab und die einzelnen Elemente werden durch ein Komma getrennt. Ein Element besteht immer aus einer Eigenschaft in Anführungszeichen und dann ein Doppelpunkt und dann dem Wert der Eigenschaft. So wie Du es zuerst gemacht hast.

        Aphofis 1 Reply Last reply Reply Quote 0
        • Aphofis
          Aphofis @Aphofis last edited by

          Also ist ein Array eine selbst definierte ausgabe an payload Daten.
          was genau ein Object ist weiß ich nicht

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

            @mickym sagte in Wasserregulierung Aquarium:
            Ich glaube ich denke zu kompliziert.
            Hatte ich gesehen, gelesen und solala verstanden.

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

              @aphofis sagte in Wasserregulierung Aquarium:

              Also ist ein Array eine selbst definierte ausgabe an payload Daten.
              was genau ein Object ist weiß ich nicht

              Ich habe Dir die Definitionen gerade im vorigen Post beschrieben .
              84f9fce5-2aca-46b8-bb02-ae91263e5d30-image.png

              und so sollte es dann aussehen. Sprich die payload ist nun ein Objekt mit der Eigenschaft data.

              b7efee7c-6be8-4bd8-acfd-39a736d0c06a-image.png

              Also nochmal ein Objekt hat ein oder mehrere Eigenschaften.

              =======================================================================

              Also ein OBJEKT beginnt IMMER mit einer GESCHWEIFTEN Klammer und schließt mit einer GESCHWEIFTEN Klammer ab und die einzelnen Elemente werden durch ein Komma getrennt. Ein Element besteht immer aus einer Eigenschaft in Anführungszeichen und dann ein Doppelpunkt und dann dem Wert der Eigenschaft. So wie Du es zuerst gemacht hast.

              Siehe auch: https://www.w3schools.com/js/js_objects.asp

              10272071-af36-4ac9-863b-491cce88b181-image.png

              und in NodeRed und in JSON werden Objekte so dargestellt.

              Wenn Du aus dem Debugfenster ein Wert rauskopierst und hier in CodeTags kopiert, dann sieht das payload Objekt so aus:

              copy path.gif

              Der Pfad ist wie Du die Eigenschaft im Objekt ansprichst.

              07de958b-31f8-43a3-b4a6-584a2b22680d-image.png

              Code-Tags.gif

              {"data":20}
              
              1 Reply Last reply Reply Quote 1
              • Aphofis
                Aphofis @Aphofis last edited by

                Also array in eckige klammern gesetzt.
                Object in geschwigten klammern
                Was deffiniert ein Array und was ein Object.
                Also zB wie in dem Thread sind die Tankstellen der Bereich (Array) in dem die einzelnen Punkte aufgelistet sind aber was ist dann ein Object.?

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

                  @aphofis sagte in Wasserregulierung Aquarium:

                  Also zB wie in dem Thread sind die Tankstellen der Bereich (Array) in dem die einzelnen Punkte aufgelistet sind aber was ist dann ein Object.?

                  Lies Dir mal das vorige Posting genau durch - also ein Objekt ist eine logische Einheit mit verschiedenen Eigenschaften. Diese Eigenschaften können alle Datentypen, als auch weitere Objekte sein.

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

                    @mickym sagte in Wasserregulierung Aquarium:

                    en können alle Datentypen, als auch

                    Ok nur wo definiere ich das es ein Object ist.

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

                      @aphofis sagte in Wasserregulierung Aquarium:

                      @mickym sagte in Wasserregulierung Aquarium:

                      en können alle Datentypen, als auch

                      Ok nur wo definiere ich das es ein Object ist.

                      Siehe Definition:

                      Also ein OBJEKT beginnt IMMER mit einer GESCHWEIFTEN Klammer und schließt mit einer GESCHWEIFTEN Klammer ab und die einzelnen Elemente werden durch ein Komma getrennt. Ein Element besteht immer aus einer Eigenschaft in Anführungszeichen und dann ein Doppelpunkt und dann dem Wert der Eigenschaft. So wie Du es zuerst gemacht hast.

                      Ein Objekt definierst Du also durch die geschweiften Klammern.

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

                        @mickym sagte in Wasserregulierung Aquarium:

                        lemente werden durch ein Komma getren

                        Das mir ja nun auch klar, nur in welcher node setze ich das object!?

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

                          Ein Array hat KEINE Eigenschaften, sondern ist eine Aufzählung (in Blockly nennt man das Liste) von Daten. Diese sind aber nur durch ihre Position ansprechbar, aber nicht durch Eigenschaftsnamen.

                          89afed07-3973-4788-950f-0dcf3daa59b5-image.png

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

                            @aphofis sagte in Wasserregulierung Aquarium:

                            @mickym sagte in Wasserregulierung Aquarium:

                            lemente werden durch ein Komma getren

                            Das mir ja nun auch klar, nur in welcher node setze ich das object!?

                            Nun Du kannst ein Objekt selbst definieren indem Du in der Change Node/Inject ein Objekt definierst:

                            Objekte und Arrays kannst Du in NodeRed über die JSON Schreibweise definieren:

                            1725759d-042c-4fe0-a917-b495f434bad5-image.png

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

                              So ich denke wir machen dann morgen weiter mit ein paar Grundlagen.

                              Hier nun die Auflösung der Aufgabe:

                              66ba77ff-6082-4ef3-9618-6167cb1dd8b3-image.png

                              Du siehst nun dass die payload Eigenschaft in eine payload Eigenschaft data verschoben wird. Somit wird aus der payload automatisch ein Objekt.

                              Ich denke wir machen morgen weiter, wenn Du nichts dagegen hast.

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

                                Ansonsten kann man mit einer Change Node - eine Nachrichteneigenschaft auf eine Konstante setzen

                                e4d5562c-f56d-4a45-ab59-7f6084128a29-image.png

                                Also eine Konstante vom Typ einer Zeichenkette, einer Zahl, eines Boolean, eines JSON Objekt (Objekt, Array) oder eines Buffer.

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

                                  @mickym
                                  Alter Schwede, jetzt habe ich es verstanden.
                                  Das ja mega einfach wenn man erstmal die Basics kennt.
                                  ist es so korrekt!?
                                  Screenshot 2024-08-16 040146.png

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

                                    @aphofis Na was Du halt willst, das ist ein Nachrichteigenschaft object mit einem Array.

                                    Wie gesagt ich habe Dir nun noch das Setzen auf Konstanten im vorigen Post gezeigt.

                                    Und wenn es komplexere Berechnungen geht, dann nimmst Du JSONATA

                                    96093b0e-8707-4703-ad01-b6d9f7c20d6e-image.png

                                    Wenn du also etwas mit der payload berechnen willst, dann kannst Du auch die payload mit 5,1 multiplizieren.

                                    5a0f9d6f-972a-4c59-bd46-e776bb3b107d-image.png

                                    Dafür braucht mal also keine extra Nodes.

                                    Hier mal etwas zum Nachlesen was JSONATA kann: https://docs.jsonata.org/overview

                                    Diese supermächtige Bibliothek kannst Du in verschiedenen Nodes ansprechen. Aber für heute mach ich mal Schluss, aber sollte Dir für Deinen Flow weiterhelfen.

                                    Gute N8

                                    Aphofis 1 Reply Last reply Reply Quote 1
                                    • Aphofis
                                      Aphofis @mickym last edited by Aphofis

                                      @mickym
                                      Also ich hab die Struktur noch nicht ganz verstanden, was erzeugt was in inject und change node und ist iobroker get richtig für das abgreifen der Datenpunkte !?
                                      Vielleicht schnalle ich das einfach auch nicht aber ich denke wenn ich den richtigen aufbau verstehe klappt das. Also wie erstellt man einen array und wie wird ein Objekt erstellt.

                                      [
                                          {
                                              "id": "415ea6773572ec75",
                                              "type": "inject",
                                              "z": "e96d40e5c03c8e73",
                                              "name": "",
                                              "props": [
                                                  {
                                                      "p": "daten",
                                                      "v": "[\"durchfluss\", \"tag\", \"jahr\", \"gesamt\"]",
                                                      "vt": "jsonata"
                                                  },
                                                  {
                                                      "p": "durchfluss",
                                                      "v": "",
                                                      "vt": "num"
                                                  },
                                                  {
                                                      "p": "tag",
                                                      "v": "",
                                                      "vt": "num"
                                                  },
                                                  {
                                                      "p": "jahr",
                                                      "v": "",
                                                      "vt": "num"
                                                  },
                                                  {
                                                      "p": "gesamt",
                                                      "v": "",
                                                      "vt": "num"
                                                  }
                                              ],
                                              "repeat": "",
                                              "crontab": "",
                                              "once": false,
                                              "onceDelay": 0.1,
                                              "topic": "",
                                              "x": 90,
                                              "y": 480,
                                              "wires": [
                                                  [
                                                      "ac6a78552d4978e1",
                                                      "7b7c9c2aa869088d",
                                                      "7dc01f92f518b643",
                                                      "53d2919475160265"
                                                  ]
                                              ]
                                          },
                                          {
                                              "id": "e9f685375022ecfd",
                                              "type": "debug",
                                              "z": "e96d40e5c03c8e73",
                                              "name": "debug 15",
                                              "active": true,
                                              "tosidebar": true,
                                              "console": false,
                                              "tostatus": false,
                                              "complete": "true",
                                              "targetType": "full",
                                              "statusVal": "",
                                              "statusType": "auto",
                                              "x": 800,
                                              "y": 480,
                                              "wires": []
                                          },
                                          {
                                              "id": "01adccb7d5de8cbb",
                                              "type": "change",
                                              "z": "e96d40e5c03c8e73",
                                              "name": "",
                                              "rules": [
                                                  {
                                                      "t": "set",
                                                      "p": "durchfluss",
                                                      "pt": "msg",
                                                      "to": "durchfluss * 5.1",
                                                      "tot": "jsonata"
                                                  },
                                                  {
                                                      "t": "set",
                                                      "p": "jahr",
                                                      "pt": "msg",
                                                      "to": "durchfluss * 5.1 / 1000 + jahr",
                                                      "tot": "jsonata"
                                                  },
                                                  {
                                                      "t": "set",
                                                      "p": "gesamt",
                                                      "pt": "msg",
                                                      "to": "durchfluss * 5.1 / 1000 + gesamt",
                                                      "tot": "jsonata"
                                                  },
                                                  {
                                                      "t": "set",
                                                      "p": "tag",
                                                      "pt": "msg",
                                                      "to": "durchfluss * 5.1 + tag",
                                                      "tot": "jsonata"
                                                  }
                                              ],
                                              "action": "",
                                              "property": "",
                                              "from": "",
                                              "to": "",
                                              "reg": false,
                                              "x": 590,
                                              "y": 480,
                                              "wires": [
                                                  [
                                                      "e9f685375022ecfd"
                                                  ]
                                              ]
                                          },
                                          {
                                              "id": "ac6a78552d4978e1",
                                              "type": "ioBroker get",
                                              "z": "e96d40e5c03c8e73",
                                              "name": "durchfluss",
                                              "topic": "0_userdata.0.Test_Wasser.Test_Durchfluss",
                                              "attrname": "durchfluss",
                                              "payloadType": "value",
                                              "errOnInvalidState": "nothing",
                                              "x": 370,
                                              "y": 480,
                                              "wires": [
                                                  [
                                                      "01adccb7d5de8cbb"
                                                  ]
                                              ]
                                          },
                                          {
                                              "id": "7dc01f92f518b643",
                                              "type": "ioBroker get",
                                              "z": "e96d40e5c03c8e73",
                                              "name": "jahr",
                                              "topic": "0_userdata.0.Test_Wasser.Test_Wasser_Jahr",
                                              "attrname": "jahr",
                                              "payloadType": "value",
                                              "errOnInvalidState": "nothing",
                                              "x": 350,
                                              "y": 600,
                                              "wires": [
                                                  []
                                              ]
                                          },
                                          {
                                              "id": "7b7c9c2aa869088d",
                                              "type": "ioBroker get",
                                              "z": "e96d40e5c03c8e73",
                                              "name": "tag",
                                              "topic": "0_userdata.0.Test_Wasser.Test_Wasser_Tag",
                                              "attrname": "tag",
                                              "payloadType": "value",
                                              "errOnInvalidState": "nothing",
                                              "x": 350,
                                              "y": 540,
                                              "wires": [
                                                  []
                                              ]
                                          },
                                          {
                                              "id": "53d2919475160265",
                                              "type": "ioBroker get",
                                              "z": "e96d40e5c03c8e73",
                                              "name": "gesamt",
                                              "topic": "0_userdata.0.Test_Wasser.Test_Wasser_Gesamt",
                                              "attrname": "gesamt",
                                              "payloadType": "value",
                                              "errOnInvalidState": "nothing",
                                              "x": 360,
                                              "y": 660,
                                              "wires": [
                                                  []
                                              ]
                                          }
                                      ]
                                      


                                      Screenshot 2024-08-16 054254.png
                                      Screenshot 2024-08-16 054708.png
                                      Die Daten werden in das Object geschrieben aber nicht in den Array. Irgendwo habe ich einen Denkfehler.
                                      und jetzt sage ich erstmal Gute Nacht und schon mal vielen vielen dank für deine Lektionen.

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

                                        Nein - ich fürchte Du hast leider noch gar nichts verstanden - da Du immer noch an Deinem Flow klebst und nicht erst mal versuchst, das System zu verstehen. Die Datenpunkte sind doch für das Verständnis erst mal unwichtig. NodeRed gibts schon viel länger als iobroker.

                                        Also nochmal:

                                        1. Durch die Kabel von dem einen zu dem anderen Node fließen Objekte. (Deswegen Flow).
                                          Ein Objekt wird im JSON Format wie folgt dargestellt:

                                        =======================================================================

                                        Also ein OBJEKT beginnt IMMER mit einer GESCHWEIFTEN Klammer und schließt mit einer GESCHWEIFTEN Klammer ab und die einzelnen Elemente werden durch ein Komma getrennt. Ein Element besteht immer aus einer Eigenschaft in Anführungszeichen und dann ein Doppelpunkt und dann dem Wert der Eigenschaft. So wie Du es zuerst gemacht hast.

                                        =======================================================================

                                        1. Ein Objekt ist eine logische Einheit, das entweder leer ist oder Eigenschaften besitzt.
                                        {}
                                        

                                        Das ist ein leeres Objekt, da es keine Eigenschaften besitzt.

                                        {"Farbe": "rot", "Temperatur":23}
                                        

                                        Das ist ein Objekt mit 2 Eigenschaften: Farbe und Temperatur. Eigenschaften innerhalb eines JSON Objektes werden immer in Anführungszeichen geschrieben. Nachdem Namen der Eigenschaft folgt ein Punkt mit dem Wert der Eigenschaft. Also bei der Eigenschaft "Farbe" ist der Wert "rot" und da das wieder eine Zeichenkette ist, steht dieser ebenfalls in Anführungszeichen.
                                        Eigenschaften werden durch ein Komma getrennt.
                                        Die 2. Eigenschaft ist eine mit dem Namen "Temperatur", gefolgt von einem Doppelpunkt und einem Wert, der ist 23. Dieser steht nicht in Anführungszeichen, da es sich um eine Zahl handelt und nicht um eine Zeichenkette.

                                        1. Eine InjectNode - ist eine Node mit der Du manuell ein Nachrichtenobjekt generieren kannst (triggern kannst), indem Du auf die Schaltfläche hinten drückst.

                                        Wenn Du wie hier eine Inject Node - ohne Eigenschaften betätigst, dann erzeugst Du ein Nachrichtenobjekt mit der Eigenschaft _msgid.

                                        5a6a9270-19ae-4a6b-8178-04959c7eb78d-image.png

                                        Diese id ist eine eindeutige Zahl, die NodeRed verwendet, um ein Nachrichtenobjekt zu identifizieren, damit es quasi immer weiß, wo sich das Nachrichtenobjekt im Flow befindet.

                                        Wenn Du also ein Nachrichtenobjekt mit der Inject Node erzeugst und mit einer 1. Debug Node Dir anschaust, dann siehst Du das die Eigenschaft "_msgid" gleich geblieben ist und von der Inject Node in die 1. Debug Node, in die Change Node und in die 2. Debug Node geflossen ist. Die Change Node hat keine Regel, um Dir zu zeigen, dass wir nichts ändern und Du nur siehst, dass es das gleiche Nachrichtenobjekt ist.

                                        Auch wenn Du den Flow verzweigst und an eine ChangeNode 2 Kabel machst, dann bleibt die "_msgid" gleich. Das Nachrichtenobjekt wird also nur kopiert.

                                        Um das bisher gesagt nachzuvollziehen, kannst Du diese Flows importieren:

                                        [
                                           {
                                               "id": "24ea1f31295e9f0a",
                                               "type": "inject",
                                               "z": "95d5d241e51360cd",
                                               "name": "",
                                               "props": [],
                                               "repeat": "",
                                               "crontab": "",
                                               "once": false,
                                               "onceDelay": 0.1,
                                               "topic": "",
                                               "x": 230,
                                               "y": 1340,
                                               "wires": [
                                                   [
                                                       "2e1fa5ecabd97ff6"
                                                   ]
                                               ]
                                           },
                                           {
                                               "id": "2e1fa5ecabd97ff6",
                                               "type": "debug",
                                               "z": "95d5d241e51360cd",
                                               "name": "Komplettes Nachrichtenobjekt",
                                               "active": true,
                                               "tosidebar": true,
                                               "console": false,
                                               "tostatus": false,
                                               "complete": "true",
                                               "targetType": "full",
                                               "statusVal": "",
                                               "statusType": "auto",
                                               "x": 490,
                                               "y": 1340,
                                               "wires": []
                                           },
                                           {
                                               "id": "bb4db0e96ceaa393",
                                               "type": "inject",
                                               "z": "95d5d241e51360cd",
                                               "name": "",
                                               "props": [],
                                               "repeat": "",
                                               "crontab": "",
                                               "once": false,
                                               "onceDelay": 0.1,
                                               "topic": "",
                                               "x": 230,
                                               "y": 1500,
                                               "wires": [
                                                   [
                                                       "42d1e71f73aab3b8",
                                                       "7d9feccc73d01a6f"
                                                   ]
                                               ]
                                           },
                                           {
                                               "id": "0cd95cb975b667d8",
                                               "type": "debug",
                                               "z": "95d5d241e51360cd",
                                               "name": "Komplettes Nachrichtenobjekt 2",
                                               "active": true,
                                               "tosidebar": true,
                                               "console": false,
                                               "tostatus": false,
                                               "complete": "true",
                                               "targetType": "full",
                                               "statusVal": "",
                                               "statusType": "auto",
                                               "x": 690,
                                               "y": 1500,
                                               "wires": []
                                           },
                                           {
                                               "id": "42d1e71f73aab3b8",
                                               "type": "change",
                                               "z": "95d5d241e51360cd",
                                               "name": "",
                                               "rules": [],
                                               "action": "",
                                               "property": "",
                                               "from": "",
                                               "to": "",
                                               "reg": false,
                                               "x": 430,
                                               "y": 1500,
                                               "wires": [
                                                   [
                                                       "0cd95cb975b667d8",
                                                       "310cf5c51a5e5084"
                                                   ]
                                               ]
                                           },
                                           {
                                               "id": "7d9feccc73d01a6f",
                                               "type": "debug",
                                               "z": "95d5d241e51360cd",
                                               "name": "Komplettes Nachrichtenobjekt 1",
                                               "active": true,
                                               "tosidebar": true,
                                               "console": false,
                                               "tostatus": false,
                                               "complete": "true",
                                               "targetType": "full",
                                               "statusVal": "",
                                               "statusType": "auto",
                                               "x": 490,
                                               "y": 1460,
                                               "wires": []
                                           },
                                           {
                                               "id": "310cf5c51a5e5084",
                                               "type": "debug",
                                               "z": "95d5d241e51360cd",
                                               "name": "Komplettes Nachrichtenobjekt 3",
                                               "active": true,
                                               "tosidebar": true,
                                               "console": false,
                                               "tostatus": false,
                                               "complete": "true",
                                               "targetType": "full",
                                               "statusVal": "",
                                               "statusType": "auto",
                                               "x": 690,
                                               "y": 1540,
                                               "wires": []
                                           }
                                        ]
                                        

                                        ========================================================================

                                        Nun schauen wir uns mal Deine Inject Node aus Deinem Flow an:

                                        7f46ba01-80f0-487b-914d-0396ef1f7619-image.png

                                        Du hast also dem Nachrichtenobjekt neben der obligatorischen "_msgid" noch die Eigenschaften

                                        "daten", "durchfluss", "tag", "jahr", "gesamt" hinzugefügt.

                                        Warum Du das gemacht hast, weiß ich nicht - bzw. kann ich mir zwar vorstellen, weil Du schon wieder Deinen Flow im Hinterkopf hattest, den Du doch erst mal vergessen solltest, wenn Du das System verstehen willst Du bist zu ungeduldig!!

                                        Also der Eigenschaft "daten" des Nachrichtenobjektes hast Du ein Objekt zugewiesen und dann auch noch über JSONATA. Wenn man ein KONSTANTES Objekt definiert und nicht direkt weiterverarbeiten will, dann nimmt man eigentlich nur das JSON Objekt.

                                        03ae246e-6403-49b8-b5b5-516abde4397e-image.png

                                        Also nicht das J: sondern die geschweiften Klammern.

                                        dd42f037-b15b-4ee5-b16c-35cec52536f3-image.png

                                        So dieser Nachrichteneigenschaft "daten" hast Du also, als Wert ein Array zugewiesen:

                                        ["durchfluss","tag","jahr","gesamt"]
                                        

                                        Der Grund erschließt sich mir nicht, ausser dass Du wieder an Deinen Flow gedacht hast. Du wirst aber die nicht mit einer Inject Node definieren können, wenn du sie aus Datenpunkten auslesen willst. Du kannst nur in einer Inject Nodes "Werte" in einem Nachrichtenobjekt definieren, wenn Du Werte aus Datenpunkten simulieren willst.

                                        Da Du die restlichen Eigenschaften leer gelassen hast, also nicht definiert hast, allerdings als Datentyp eine Zahl definiert hast, hat NodeRed den Zahlenwert automatisch auf 0 gesetzt.

                                        Hier nochmal zur Verdeutlichung zum Import, das Nachrichtenobjekt, dass Du mit Deiner Inject node erzeugt hast:

                                        [
                                           {
                                               "id": "2e1fa5ecabd97ff6",
                                               "type": "debug",
                                               "z": "95d5d241e51360cd",
                                               "name": "Komplettes Nachrichtenobjekt",
                                               "active": true,
                                               "tosidebar": true,
                                               "console": false,
                                               "tostatus": false,
                                               "complete": "true",
                                               "targetType": "full",
                                               "statusVal": "",
                                               "statusType": "auto",
                                               "x": 430,
                                               "y": 1340,
                                               "wires": []
                                           },
                                           {
                                               "id": "5bbdad0a78878e1d",
                                               "type": "inject",
                                               "z": "95d5d241e51360cd",
                                               "name": "",
                                               "props": [
                                                   {
                                                       "p": "daten",
                                                       "v": "[\"durchfluss\", \"tag\", \"jahr\", \"gesamt\"]",
                                                       "vt": "json"
                                                   },
                                                   {
                                                       "p": "durchfluss",
                                                       "v": "",
                                                       "vt": "num"
                                                   },
                                                   {
                                                       "p": "tag",
                                                       "v": "",
                                                       "vt": "num"
                                                   },
                                                   {
                                                       "p": "jahr",
                                                       "v": "",
                                                       "vt": "num"
                                                   },
                                                   {
                                                       "p": "gesamt",
                                                       "v": "",
                                                       "vt": "num"
                                                   }
                                               ],
                                               "repeat": "",
                                               "crontab": "",
                                               "once": false,
                                               "onceDelay": 0.1,
                                               "topic": "",
                                               "x": 190,
                                               "y": 1340,
                                               "wires": [
                                                   [
                                                       "2e1fa5ecabd97ff6"
                                                   ]
                                               ]
                                           }
                                        ]
                                        

                                        und hier das Nachrichtenobjekt direkt aus dem Debugfenster kopiert

                                        0972a3d3-d0a0-4af8-918d-5a969d712811-image.png

                                        und in verwertbares JSON Formati hier in den Thread gestellt:

                                        {"_msgid":"712fe5877fca1470","daten":["durchfluss","tag","jahr","gesamt"],"durchfluss":0,"tag":0,"jahr":0,"gesamt":0}
                                        

                                        ===============================================================

                                        Nun schauen wir an, was Du mit den Nachrichtenobjekt getan hast, dass Du mit Deiner Inject Node erzeugt hast.

                                        1c119ba9-8c78-4491-8b64-15c491b62121-image.png

                                        Du hast das Nachrichtenobjekt an verschiedene iobroker-get Nodes geschickt. Die unteren 3 führst Du ja nicht mehr weiter, also gehen diese Nachrichtenobjekte verloren, dann kannst sie ja auch gleich weglassen oder entfernen. 😉

                                        ==============================================================

                                        Also schauen wir nur mal das Nachrichtenobjekt an, dass Du in die iobroker-get Node mit dem Namen "durchfluss" schickst.

                                        69a77edb-a8e6-4980-898d-358ccfea793d-image.png

                                        Du liest also aus dem Datempunkt mit dem topic "0_userdata.0.Test_Wasser.Test_Durchfluss"
                                        7f6ab22a-ea66-4a9c-a627-45cda6b5057f-image.png
                                        den Wert aus
                                        9a3835ac-6466-4b3b-93e4-97ce767b76b4-image.png
                                        und weist ihn der Nachrichteneigenschaft
                                        52970ff9-40e0-44bc-b492-c89b2741780b-image.png
                                        "durchfluss" zu.

                                        Da die Nachrichteneigenschaft ja schon in der Inject Node definiert, wird diese nun durch den Wert aus dem iobroker Datenpunkt ersetzt, also 67 ersetzt.

                                        Dein Nachrichtenobjekt nach der Inject Node schaut also so aus:

                                        db1d9ef1-be1b-43d6-995e-17febdc73c8f-image.png

                                        Also nicht ganz diese Objektdaten und das topic kommen noch hinzu, wie Du ja an Deiner Debug Node siehst.

                                        1f6310ce-520b-44ab-987d-f566ac7308e3-image.png

                                        =====================================================================
                                        Nun sendest du also das Nachrichtenobjekt
                                        69bc93c2-3466-44c0-8513-ac50f4577bea-image.png
                                        an die Change Node mit 4 Regeln:

                                        2b88b480-bda9-4a04-ac87-9e2290db1ecc-image.png

                                        1. Gut also mit der 1. Regel multiplizierst Du den Durchfluss mit 5,1.

                                        159bf5b6-a8f7-444f-a5d9-4a806172614b-image.png

                                        67 * 5,1 = 341,7
                                        

                                        20664561-ced2-428a-8b09-4d1de31c7b0e-image.png

                                        Na das hat ja schon mal geklappt, wie Du an Deiner Debugausgabe siehst.
                                        Nach Deiner 1. Regel in der Change Node sieht also Dein Nachrichtenobjekt so aus:

                                        2ddfcf25-0487-4bb8-80f0-77f01e5c45ef-image.png

                                        Nun die 2. Regel mit dem aktuellen Nachrichtenobjekt:

                                        a48a4ba6-1b27-456e-9b87-1b43102aeee4-image.png

                                        Also (das jahr ist ja 0 wie Du in Deinem Nachrichtenobjekt sehen kannst):

                                        341,7 * 5,1/1000 + 0
                                        

                                        Das stimmt also auch:
                                        73cdb502-f5bd-4344-a93e-a90b3159dea6-image.png

                                        b56116d3-ca0f-43d0-8751-7327e2c64009-image.png

                                        Für jahr, gesamt kommt natürlich das Gleiche raus, da beides im Nachrichtenobjekt 0 war.
                                        Für tag fällt ja nur die Division durch 1000 raus.

                                        Der Rundungsfehler bei tag ist leider eine Eigenart von Javascript und hat mit NodeRed nichts zu tun. Das passiert Dir auch bei Blockly oder Javascript. Wenn Du aber rundest, fällt das ja nicht auf.

                                        ======================================================================================

                                        Fazit alles ist logisch und folgerichtig, wenn Du Dir die Debugausgabe anschaust, aber Du siehst Du hast mehrere Fehler drin.

                                        1. Der Durchfluss wird doppelt mit 5,1 für das jahr, gesamt und tag multipliziert.

                                        Deshalb merke: Das Nachrichtenobjekt wird von jeder Regel modifziert. Du kannst anstelle EINER Change Node mit 4 Regeln auch VIER Change Nodes mit 1 Regel verwenden.

                                        c6f1548b-b866-44e0-9e86-15f27e415830-image.png

                                        Wenn Du also in der 1. Regel den durchfluss bereits mit 5.1 mulitpliziert hast, dann darfst Du es in den Folgeregeln nicht machen, sonst multiplizierst Du zweimal mit 5.1. (siehe Nachrichtenobjekt) nach der 1. Regel.

                                        1. Die Eigenschaften des Nachrichtenobjektes jahr, gesamt und tag stammen aus der Inject Node und nicht aus den Datenpunkten und sind deshalb alle 0. Um das zu ändern musst du die anderen iobroker In Nodes in den Flow und somit in das Nachrichtenobjekt aufnehmen und nicht parallel ins Leere laufen lassen.

                                        2. Die in der Inject definierten Eigenschaften des Nachrichtenobjektes sind alle überflüssig (das Array ist sowieso UNSINN), wenn Du die Daten aus dem iobroker mittels iobroker-get Nodes in den Flow holst.

                                        Also kannst Du das GANZE aus der Inject Node entfernen:

                                        71bc4bb7-6f9f-4ea7-ba67-0560bba95ede-image.png

                                        Jetzt wird Dein Flow die Regeln mit undefinierten Eigenschaften (jahr, gesamt, tag) ignorieren, weil ja jetzt gesamt, jahr und tag nicht mehr definiert sind.

                                        9a2b5faf-c979-4069-a373-7b9a43a2ef1e-image.png

                                        Also musst Du wohl die EIGENSCHAFTEN aus den in der Luft hängenden iobroker-get Nodes ignorieren.

                                        1. Du kannst auch mit 1 Inject Node alle Werte simulieren OHNE diese aus dem iobroker auszulesen, indem Du diese Eigenschaften als KONSTANTEN definierst.

                                        080608d0-847c-4358-9cdf-69c043cb4493-image.png

                                        Also eine Inject Node mit diesen Werten bastelst und damit Deine ChangeNode testest.

                                        33fbf462-a45d-4dbc-8624-3fb1896de33b-image.png

                                        damit sieht das Ergebnis zwar besser aus, aber Du siehst immer noch die doppelte 5,1 Multiplikation in der Change Node, die Du nun berichtigen kannst (aber zum Testen ist das doch gut, da Du keine Daten aus dem iobroker auslesen musst).

                                        78fc016e-00c1-4b74-b893-a00c0cd562db-image.png

                                        Korrigieren wir also den Rechenfehler in der Change Node, dann sollte das Ergebnis nun richtig sein:

                                        01507783-f90d-40e9-bc3c-ce1b45997845-image.png

                                        Hier zum Import:

                                        [
                                           {
                                               "id": "f4867f82feb1d1f9",
                                               "type": "inject",
                                               "z": "95d5d241e51360cd",
                                               "name": "",
                                               "props": [
                                                   {
                                                       "p": "durchfluss",
                                                       "v": "67",
                                                       "vt": "num"
                                                   },
                                                   {
                                                       "p": "tag",
                                                       "v": "312",
                                                       "vt": "num"
                                                   },
                                                   {
                                                       "p": "jahr",
                                                       "v": "1.5",
                                                       "vt": "num"
                                                   },
                                                   {
                                                       "p": "gesamt",
                                                       "v": "1.8",
                                                       "vt": "num"
                                                   }
                                               ],
                                               "repeat": "",
                                               "crontab": "",
                                               "once": false,
                                               "onceDelay": 0.1,
                                               "topic": "",
                                               "x": 810,
                                               "y": 1260,
                                               "wires": [
                                                   [
                                                       "d4e356848cabddf5"
                                                   ]
                                               ]
                                           },
                                           {
                                               "id": "37f2d6824dc5f689",
                                               "type": "debug",
                                               "z": "95d5d241e51360cd",
                                               "name": "Teste Berechnung",
                                               "active": true,
                                               "tosidebar": true,
                                               "console": false,
                                               "tostatus": false,
                                               "complete": "true",
                                               "targetType": "full",
                                               "statusVal": "",
                                               "statusType": "auto",
                                               "x": 1230,
                                               "y": 1260,
                                               "wires": []
                                           },
                                           {
                                               "id": "d4e356848cabddf5",
                                               "type": "change",
                                               "z": "95d5d241e51360cd",
                                               "name": "",
                                               "rules": [
                                                   {
                                                       "t": "set",
                                                       "p": "durchfluss",
                                                       "pt": "msg",
                                                       "to": "durchfluss * 5.1",
                                                       "tot": "jsonata"
                                                   },
                                                   {
                                                       "t": "set",
                                                       "p": "jahr",
                                                       "pt": "msg",
                                                       "to": "durchfluss  / 1000 + jahr",
                                                       "tot": "jsonata"
                                                   },
                                                   {
                                                       "t": "set",
                                                       "p": "gesamt",
                                                       "pt": "msg",
                                                       "to": "durchfluss  / 1000 + gesamt",
                                                       "tot": "jsonata"
                                                   },
                                                   {
                                                       "t": "set",
                                                       "p": "tag",
                                                       "pt": "msg",
                                                       "to": "durchfluss  + tag",
                                                       "tot": "jsonata"
                                                   }
                                               ],
                                               "action": "",
                                               "property": "",
                                               "from": "",
                                               "to": "",
                                               "reg": false,
                                               "x": 990,
                                               "y": 1260,
                                               "wires": [
                                                   [
                                                       "37f2d6824dc5f689"
                                                   ]
                                               ]
                                           }
                                        ]
                                        

                                        So und NUR wenn Du jetzt jedes Detail verinnerlicht hast, dann machen wir mit Deinem Flow weiter. Sollte auch nur eine Kleinigkeit unklar sein, dann erwarte ich Deine Fragen.

                                        1 Reply Last reply Reply Quote 1
                                        • Aphofis
                                          Aphofis last edited by Aphofis

                                          @mickym sagte in Wasserregulierung Aquarium:

                                                                                                                                                                      [                                                                                                                                                                               {                                                                                                                                                                                   "id": "f4867f82feb1d1f9",                                                                                                                                                                                   "type": "inject",                                                                                                                                                                                   "z": "95d5d241e51360cd",                                                                                                                                                                                   "name": "",                                                                                                                                                                                   "props": [                                                                                                                                                                                       {                                                                                                                                                                                           "p": "durchfluss",                                                                                                                                                                                           "v": "67",                                                                                                                                                                                           "vt": "num"                                                                                                                                                                                       },                                                                                                                                                                                       {                                                                                                                                                                                           "p": "tag",                                                                                                                                                                                           "v": "312",                                                                                                                                                                                           "vt": "num"                                                                                                                                                                                       },                                                                                                                                                                                       {                                                                                                                                                                                           "p": "jahr",                                                                                                                                                                                           "v": "1.5",                                                                                                                                                                                           "vt": "num"                                                                                                                                                                                       },                                                                                                                                                                                       {                                                                                                                                                                                           "p": "gesamt",                                                                                                                                                                                           "v": "1.8",                                                                                                                                                                                           "vt": "num"                                                                                                                                                                                       }                                                                                                                                                                                   ],                                                                                                                                                                                   "repeat": "",                                                                                                                                                                                   "crontab": "",                                                                                                                                                                                   "once": false,                                                                                                                                                                                   "onceDelay": 0.1,                                                                                                                                                                                   "topic": "",                                                                                                                                                                                   "x": 810,                                                                                                                                                                                   "y": 1260,                                                                                                                                                                                   "wires": [                                                                                                                                                                                       [                                                                                                                                                                                           "d4e356848cabddf5"                                                                                                                                                                                       ]                                                                                                                                                                                   ]                                                                                                                                                                               },                                                                                                                                                                               {                                                                                                                                                                                   "id": "37f2d6824dc5f689",                                                                                                                                                                                   "type": "debug",                                                                                                                                                                                   "z": "95d5d241e51360cd",                                                                                                                                                                                   "name": "Teste Berechnung",                                                                                                                                                                                   "active": true,                                                                                                                                                                                   "tosidebar": true,                                                                                                                                                                                   "console": false,                                                                                                                                                                                   "tostatus": false,                                                                                                                                                                                   "complete": "true",                                                                                                                                                                                   "targetType": "full",                                                                                                                                                                                   "statusVal": "",                                                                                                                                                                                   "statusType": "auto",                                                                                                                                                                                   "x": 1230,                                                                                                                                                                                   "y": 1260,                                                                                                                                                                                   "wires": []                                                                                                                                                                               },                                                                                                                                                                               {                                                                                                                                                                                   "id": "d4e356848cabddf5",                                                                                                                                                                                   "type": "change",                                                                                                                                                                                   "z": "95d5d241e51360cd",                                                                                                                                                                                   "name": "",                                                                                                                                                                                   "rules": [                                                                                                                                                                                       {                                                                                                                                                                                           "t": "set",                                                                                                                                                                                           "p": "durchfluss",                                                                                                                                                                                           "pt": "msg",                                                                                                                                                                                           "to": "durchfluss * 5.1",                                                                                                                                                                                           "tot": "jsonata"                                                                                                                                                                                       },                                                                                                                                                                                       {                                                                                                                                                                                           "t": "set",                                                                                                                                                                                           "p": "jahr",                                                                                                                                                                                           "pt": "msg",                                                                                                                                                                                           "to": "durchfluss  / 1000 + jahr",                                                                                                                                                                                           "tot": "jsonata"                                                                                                                                                                                       },                                                                                                                                                                                       {                                                                                                                                                                                           "t": "set",                                                                                                                                                                                           "p": "gesamt",                                                                                                                                                                                           "pt": "msg",                                                                                                                                                                                           "to": "durchfluss  / 1000 + gesamt",                                                                                                                                                                                           "tot": "jsonata"                                                                                                                                                                                       },                                                                                                                                                                                       {                                                                                                                                                                                           "t": "set",                                                                                                                                                                                           "p": "tag",                                                                                                                                                                                           "pt": "msg",                                                                                                                                                                                           "to": "durchfluss  + tag",                                                                                                                                                                                           "tot": "jsonata"                                                                                                                                                                                       }                                                                                                                                                                                   ],                                                                                                                                                                                   "action": "",                                                                                                                                                                                   "property": "",                                                                                                                                                                                   "from": "",                                                                                                                                                                                   "to": "",                                                                                                                                                                                   "reg": false,                                                                                                                                                                                   "x": 990,                                                                                                                                                                                   "y": 1260,                                                                                                                                                                                   "wires": [                                                                                                                                                                                       [                                                                                                                                                                                           "37f2d6824dc5f689"                                                                                                                                                                                       ]                                                                                                                                                                                   ]                                                                                                                                                                               }                                                                                                                                                                            ]                                            
                                          

                                          So bin alles durchgegangen.
                                          Meine Fehler habe ich dann verstanden.
                                          Also verstanden das ein Array zB

                                          Array setzt sich dann aus dem Inhalt 0 : durchfluss 1 : tag 2 : jahr 3 : gesamt. 
                                          

                                          zusammen.
                                          Ein Objekt dann

                                          {"_msgid":"7b6801a822df7071","daten":["durchfluss","tag","jahr","gesamt"]}
                                          

                                          der Inhalt aus Message ID, Objekt Daten und dann der der Inhalt Array ausgibt.
                                          Also ist das Object so zu sagen die Baumstruktur und ein Array ein Teilabschnitt.
                                          Ein Objekt kann Daten enthalten die festgelegt sind oder bezogen werden können und ein Array genau so. Doch umfasst alle Arrays immer das Object.
                                          Das echt sehr sehr nett von dir das du dir mit mir so viel Mühe gibst.
                                          Das soll auch nicht um sonst sein. Ich gebe mein bestes um es zu verstehen und dann bald auch umsetzen zu können.

                                          Wie kann ich jetzt den Inhalt aus dem Array (Object) raus filtern um die dann in die Datenpunkte zu schreiben.
                                          Kann man die Datenpunkte via topic reinholen oder wie macht man das !?
                                          Ach ja na klar bastel ich zwischendurch an dem Script rum. Es wurmte mich halt, das ich das nicht verstanden hatte.

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

                                            @aphofis sagte in Wasserregulierung Aquarium:

                                            Also ist das Object so zu sagen die Baumstruktur und ein Array ein Teilabschnitt.
                                            Ein Objekt kann Daten enthalten die festgelegt sind oder bezogen werden können und ein Array genau so. Doch umfasst alle Arrays immer das Object.

                                            Nein Arrays und Objekte sind völlig unabhängig von eineinander komplexe Datentypen.

                                            Es gibt einfache, skalare Datentypen, wie

                                            • Zeichenkette (string)
                                            • Zahl (number)
                                            • Logikwert (boolean)

                                            und eben komplexe Datentypen, wie

                                            • Arrays
                                            • Objekte.

                                            Ein Array ist einfach eine Sammlung von anderen Datentypen. Der Hauptunterschied zu einem Objekt ist, dass die Datentypen auch gemischt und einfach eine Liste sind. Auf den Inhalt eines Arrays greift man immer über den Index zu.
                                            Arrays werden meistens einfach verwendet, wenn man einfach eine Anzahl von Werten hat (der Bedeutung man entweder nicht kennt oder die die gleiche Bedeutung haben.
                                            Dabei hat das erste Element immer den Indexwert 0, das zweite den Indexwert 1 usw.
                                            Im JSON wird ein Array einfach durch eckige Klammern und dann die einzelnen Werte durch Komma getrennt.

                                            [1,2,3,4,5]
                                            

                                            Ein Objekt

                                            {"_msgid":"7b6801a822df7071","daten":["durchfluss","tag","jahr","gesamt"]}
                                            

                                            Bei einem Objekt kannst Du direkt auf eine Eigenschaft zugreifen, da jede Eigenschaft einen Namen hat.

                                            Wie kann ich jetzt den Inhalt aus dem Array (Object) raus filtern um die dann in die Datenpunkte zu schreiben.
                                            Kann man die Datenpunkte via topic reinholen oder wie macht man das !?

                                            Du greifst auf ein Objekt zu, in dem Du den Pfad kopierst, der Dir die Hierarchie ausgibt.


                                            So und ich will Dir nicht einfach den Flow machen, sonst lernst Du nichts. Ich habe Dir den Flow mit jedem einzelnen Microschritt durchgegangen. Wieso bist Du nicht in der Lage, die fehlen Datenpunkte in Dein Objekt zu lesen?

                                            Einmal hast Du einen Flow - und 3 hängen in der Luft, anstelle sie in den Flow zu integrieren???

                                            Hast Du wirklich jeden einzelnen Schritt verstanden, den ich Dir minutiös aufgelistet habe. Wenn Du das einfach nur durchliest dann lernst Du nichts. Ich habe Dir 3 Fehler aufgelistet und worin die bestehen. Was fehlt Dir, um diese Fehler zu beheben.
                                            Wir können gerne Fehler für Fehler im Detail durchgehen, wenn Du es nicht verstehst.

                                            Hast Du alle Flows zum Verständnis importiert und Dir angeschaut.

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

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            1.0k
                                            Online

                                            31.7k
                                            Users

                                            79.8k
                                            Topics

                                            1.3m
                                            Posts

                                            2
                                            147
                                            9327
                                            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