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 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
                          • mickym
                            mickym Most Active @Aphofis last edited by mickym

                            @aphofis sagte in Wasserregulierung Aquarium:

                            Ach ja na klar bastel ich zwischendurch an dem Script rum. Es wurmte mich halt, das ich das nicht verstanden hatte.

                            Warum lässt Du das nicht?

                            Du kannst auch keine Integralrechnung, wenn Du die Grundrechenarten nicht beherrschst. Ich versuche Dir doch das Handwerkszeug beizubringen. Deinen Flow habe ich schon im Hinterkopf.

                            Ich bleibe ja bei Deinem Flow, indem ich minutiös auseinander nehme. Dann ist doch ungerichtetes Rumprobieren einfach Zeitverschwendung.

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

                              Also wenn Du soweit bist und alles verstanden hast, dann sag wenn Du entweder die 3 Fehler in Deinem Flow behoben hast bzw. wenn Du bei einem Fehler noch Hilfe brauchst.

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

                                @mickym
                                Nein hab es noch nicht verstanden, welche node die Daten rein holt bzw mit iobroker get aber wie bekomme ich den wert vom get dann in den array!?

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

                                  @aphofis Du BRAUCHST KEIN Array - lösch das wieder. Hol Dir die Werte genauso rein, wie Du dir den durchfluss in das Nachrichtenobjekt geholt hast.
                                  Der 1. Fehler war aber die doppelte 5.1 Multiplikation in Deiner Change Node.

                                  Ausserdem wenn Du Dir ALLES durchgelesen hättest, dann hab ich glaube geschrieben, dass Du alle Eigenschaften aus Deiner Inject Node löschen sollst. Warum machst Du das nicht und hantierst mit Arrays rum?

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

                                    @mickym sagte in Wasserregulierung Aquarium:

                                    ult

                                    das doppelte berechnen habe ich raus genommen
                                    jetzt weiß ich ja das dass aufeinander aufbaut.
                                    Sprich das die ertse rechnung den wert 312 ausgibt auch wenn nur intern wenn man den dann per namen anspricht durchfluss dann durch 1000 + jahr rechnet dann den wert ausgibt 1,5 Liter.
                                    habe ich verstanden.

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

                                      @aphofis Gut dann sollte Deine Change Node ja nun so aussehen:
                                      54be5a55-1c21-48e2-b17c-8bea5cbd938d-image.png

                                      nächstes Mal bitte posten.

                                      Hast Du alle Eigenschaften aus der Inject Node gelöscht?

                                      So und dann hol die Eigenschaften jahr, gesamt und tag auch noch in das Nachrichtenobjekt.

                                      Sprich das die ertse rechnung den wert 312 ausgibt

                                      Nein. Im Durchfluss Datenpunkt stand 67 und die Berechnung ergab 341,7.

                                      Ich habe ECHT keine Lust wenn das was ich alles was ich bereits geschrieben habe, wieder umgeschmissen wird.

                                      d1ce5956-5192-4d21-972b-163d3192dc7a-image.png

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

                                        @mickym
                                        Ja hab alles raus.
                                        Ich weiß nur nicht wie ich die Datenpunkte rein bekomme kann muss ich in der inject node den topic rein holen oder wie macht man das!?

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

                                          @aphofis Na Du hast doch den durchfluss auch rein bekommen. Warum machst Du es dann nicht mit den anderen genauso?

                                          Du holst EINEN Wert NACH dem ANDEREN in das Nachrichtenobjekt

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

                                            @mickym Hallo, das war nur weil ich in den virtuellen datenpunkt nicht 341.7 eingetragen hatte hatte halt den falschen wert 67 eingetragen das war keine absicht!

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

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            691
                                            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