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. Einfache Funktion - Wertüberwachung mit 2 Verzögerungszeiten

    NEWS

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    Einfache Funktion - Wertüberwachung mit 2 Verzögerungszeiten

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

      @i0br0ker Du kannst den msg.delay auch an die unterschiedlichen Ausgänge setzen - dann brauchst die flow Variable nicht. Kommt halt darauf an, wie Du es modifizieren willst. Aber wie Du siehst ist es sehr transparent und man kann an jeder Node prüfen, ob die Logik funktioniert und muss sich nicht durch Code quälen.

      Ja oder einfach in die trigger Nodes eintragen - das ist am einfachsten und dann kannst Dir den flow Kontext sparen. Wenn Du die Verzögerung direkt in die trigger Node einträgst, dann kannst Du diese Nodes wegschmeißen

      e8337bed-253b-4463-97bc-684defc5527d-image.png

      1 Reply Last reply Reply Quote 0
      • I
        I0Br0ker last edited by I0Br0ker

        Darf ich an dem Thema nochmal anknüpfen 😉
        Ich bin gerade am testen und habe noch folgendes Problem.
        Ich bekomme von 3 quellen Werte mit unterschiedlichen datenraten.
        Ich würde diese 3 Quellen gerne zeitgleich in eine Funktion einspeisen, die eine Berechnung macht.
        Alles was ich bisher versucht habe funktioniert nicht wirklich ( Begrenzung der Nachrichten ) .. weil dann zufällig nur einzelne Quellen übertragen werden.

        Die Berechnung ist folgende:

        //if (msg.topic === "openWB/evu/W") context.set("netz",msg.payload);
        if (msg.topic === "Einspeisung") context.set("netz",msg.payload);
        if (msg.topic === "Venus system - Power on output of inverter/charger, L1 (W)") context.set("verbrauchAC",msg.payload);
        if (msg.topic === "Venus system - VE.Bus charge power (W)") context.set("verbrauchDC",msg.payload);
        
        
        var netz = context.get("netz") || 0;
        var verbrauchAC = context.get("verbrauchAC") || 0;
        var verbrauchDC = context.get("verbrauchDC") || 0;
        
        // Wenn Wert C negativ ist, addiere A und B, sonst gebe nur B aus
        if (verbrauchDC < 0) {
            msg.payload = netz + verbrauchAC; // A + B wird ausgegeben
        } else {
            msg.payload = netz; // Nur B wird ausgegeben
        }
        
        msg.topic = "NETZberechnung";
        return msg;
        

        Also ich würde gerne alle 3 Werte vorhalten und dann zeitgleich berechnen und ausgeben in einem 5 Sekunden Intervall zum Beispiel ...

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

          @i0br0ker Also ich kann an dem Code nichts falsches finden und verstehe das Problem nicht wirklich. Natürlich kann man das alles mit weniger Code machen. 😉

          Alles was ich bisher versucht habe funktioniert nicht wirklich ( Begrenzung der Nachrichten ) .. weil dann zufällig nur einzelne Quellen übertragen werden.

          Das ist doch richtig, weil nur dann was ausgegeben wird, wenn sich was geändert hat. Ansonsten musst Du sagen was Du willst:

          1. Du wartest bis alle 3 topics einen Wert geliefert haben?
          2. Du möchtest generell eine kontunierliche Ausgabe der letzten Berechnung (auch wenn sich nichts geändert hat.

          Zu Punkt 1 - würde ich das ganze dann nicht über den Kontext machen, sondern eine Nachricht mit allen Werten erzeugen, die Du dann von mir aus wieder mit Code für die Ausgabe behandeln kannst.
          Zu Punkt 2: Einfach eine Trigger Node die letzte Nachricht im 5s Intervall ausgeben lassen.

          Zeitgleich passiert nur etwas in dem Du es sammelst - wie gesagt wenn Du warten willst, dass alle 3 topics geliefert haben müssen, um eine saubere Berechnung zu ermöglichen oder nicht? Es wird immer ms zeitliche Unterschiede geben, wenn die Dinge in das System kommen, da generell NodeRed oder auch andere Systeme alle Inputs nur sequentiell verarbeiten, wenn auch im ms Bereich.

          Ich werde Dir wieder mal einen Flow mit den 3 Messgrößen mit Inject Nodes zur Simulation bereitstellen und Deinen Code zur Berechnung benutzen.

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

            @mickym ich hab es nun mal so gemacht


            0f38fad1-1b49-4c12-87d1-b190774a29ab-image.png

            Ich speichere die 3 Werte in jeweils in einer Flow variable und triggere die Berechnung dann
            alle Sekunde mit dem Inject.
            So hab ich immer den zuletzt gemessenen Wert der 3 Datenquellen zur sekündlichen Berechnung

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

              @i0br0ker Ja und das ist halt Käse, weil Du nicht davon ausgehen kannst, dass sich alle Sekunden, welche Werte geändert haben und Du somit nur ein zufälligest Zustandsbild bekommst. Ausserdem belasstest Du das System nur unnötig mit dieser Inject Node und dem sekündlichen Trigger. Sinnvoller ist es die 3 Teile Einspeisung, AC und DC triggern zu lassen. Ich mach Dir mal einen Vorschlag in dem ich die 3 Nodes Einspeisung, AC und DC mit Inject Nodes simuliere - und du quasi den Rest des Flows mal hinter Deine Nodes machst.

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

                @i0br0ker So hier mein Vorschlag:

                91338c6a-ff70-46b3-9849-01e163b2afdb-image.png

                Statt der Inject Nodes klemmst Du die Change Nodes zum Vereinfachen der topics hinter Deine function Nodes.

                Die beiden Varianten unterscheiden sich wie folgt. Oben müssen alle 3 Werte aktualisiert werden, bevor eine erneute Berechnung stattfindet. Unten wird nachdem alle 3 Werte geliefert wurden, nach jeder Änderung eine Berechnung durchgeführt.

                Unten ist einfach die blau markierte Option angehakt.

                3053a633-8af3-444d-b2fd-098c2a9095c2-image.png

                Hier zum Import:

                [
                   {
                       "id": "6242e9a2f819fd6d",
                       "type": "comment",
                       "z": "7e6af0015415146d",
                       "name": "Alle 3 topics müssen immer triggern bevor Berechnung stattfindet",
                       "info": "",
                       "x": 310,
                       "y": 5780,
                       "wires": []
                   },
                   {
                       "id": "9ad33fc7f452c8d5",
                       "type": "inject",
                       "z": "7e6af0015415146d",
                       "name": "",
                       "props": [
                           {
                               "p": "payload"
                           },
                           {
                               "p": "topic",
                               "vt": "str"
                           }
                       ],
                       "repeat": "",
                       "crontab": "",
                       "once": false,
                       "onceDelay": 0.1,
                       "topic": "Einspeisung",
                       "payload": "-50",
                       "payloadType": "num",
                       "x": 160,
                       "y": 5840,
                       "wires": [
                           [
                               "322428f9a6f303fd"
                           ]
                       ]
                   },
                   {
                       "id": "5f5b5e7ba87bef7d",
                       "type": "inject",
                       "z": "7e6af0015415146d",
                       "name": "AC",
                       "props": [
                           {
                               "p": "payload"
                           },
                           {
                               "p": "topic",
                               "vt": "str"
                           }
                       ],
                       "repeat": "",
                       "crontab": "",
                       "once": false,
                       "onceDelay": 0.1,
                       "topic": "Venus system - Power on output of inverter/charger, L1 (W)",
                       "payload": "100",
                       "payloadType": "num",
                       "x": 190,
                       "y": 5900,
                       "wires": [
                           [
                               "4356754c809d6094"
                           ]
                       ]
                   },
                   {
                       "id": "473cfab7f45ddda2",
                       "type": "inject",
                       "z": "7e6af0015415146d",
                       "name": "DC",
                       "props": [
                           {
                               "p": "payload"
                           },
                           {
                               "p": "topic",
                               "vt": "str"
                           }
                       ],
                       "repeat": "",
                       "crontab": "",
                       "once": false,
                       "onceDelay": 0.1,
                       "topic": "Venus system - VE.Bus charge power (W)",
                       "payload": "100",
                       "payloadType": "num",
                       "x": 190,
                       "y": 5960,
                       "wires": [
                           [
                               "2dcb913c17c8f93f"
                           ]
                       ]
                   },
                   {
                       "id": "2dcb913c17c8f93f",
                       "type": "change",
                       "z": "7e6af0015415146d",
                       "name": "topic = verbrauchDC",
                       "rules": [
                           {
                               "t": "set",
                               "p": "topic",
                               "pt": "msg",
                               "to": "verbrauchDC",
                               "tot": "str"
                           }
                       ],
                       "action": "",
                       "property": "",
                       "from": "",
                       "to": "",
                       "reg": false,
                       "x": 400,
                       "y": 5960,
                       "wires": [
                           [
                               "b28d24fcb71d82ee"
                           ]
                       ]
                   },
                   {
                       "id": "4356754c809d6094",
                       "type": "change",
                       "z": "7e6af0015415146d",
                       "name": "topic = verbrauchAC",
                       "rules": [
                           {
                               "t": "set",
                               "p": "topic",
                               "pt": "msg",
                               "to": "verbrauchAC",
                               "tot": "str"
                           }
                       ],
                       "action": "",
                       "property": "",
                       "from": "",
                       "to": "",
                       "reg": false,
                       "x": 400,
                       "y": 5900,
                       "wires": [
                           [
                               "b28d24fcb71d82ee"
                           ]
                       ]
                   },
                   {
                       "id": "322428f9a6f303fd",
                       "type": "change",
                       "z": "7e6af0015415146d",
                       "name": "topic = netz",
                       "rules": [
                           {
                               "t": "set",
                               "p": "topic",
                               "pt": "msg",
                               "to": "netz",
                               "tot": "str"
                           }
                       ],
                       "action": "",
                       "property": "",
                       "from": "",
                       "to": "",
                       "reg": false,
                       "x": 430,
                       "y": 5840,
                       "wires": [
                           [
                               "b28d24fcb71d82ee"
                           ]
                       ]
                   },
                   {
                       "id": "b28d24fcb71d82ee",
                       "type": "join",
                       "z": "7e6af0015415146d",
                       "name": "",
                       "mode": "custom",
                       "build": "object",
                       "property": "payload",
                       "propertyType": "msg",
                       "key": "topic",
                       "joiner": "\\n",
                       "joinerType": "str",
                       "accumulate": false,
                       "timeout": "",
                       "count": "3",
                       "reduceRight": false,
                       "reduceExp": "",
                       "reduceInit": "",
                       "reduceInitType": "",
                       "reduceFixup": "",
                       "x": 610,
                       "y": 5900,
                       "wires": [
                           [
                               "85e346c30c478cb5"
                           ]
                       ]
                   },
                   {
                       "id": "85e346c30c478cb5",
                       "type": "switch",
                       "z": "7e6af0015415146d",
                       "name": "verbrauchDC < 0 ?",
                       "property": "payload.verbrauchDC",
                       "propertyType": "msg",
                       "rules": [
                           {
                               "t": "lt",
                               "v": "0",
                               "vt": "str"
                           },
                           {
                               "t": "else"
                           }
                       ],
                       "checkall": "true",
                       "repair": false,
                       "outputs": 2,
                       "x": 790,
                       "y": 5900,
                       "wires": [
                           [
                               "6ac4a825336230b9"
                           ],
                           [
                               "b5f50b3d7ce5b577"
                           ]
                       ]
                   },
                   {
                       "id": "6ac4a825336230b9",
                       "type": "change",
                       "z": "7e6af0015415146d",
                       "name": "netz + verbrauchAC",
                       "rules": [
                           {
                               "t": "set",
                               "p": "payload",
                               "pt": "msg",
                               "to": "payload.netz + payload.verbrauchAC",
                               "tot": "jsonata"
                           }
                       ],
                       "action": "",
                       "property": "",
                       "from": "",
                       "to": "",
                       "reg": false,
                       "x": 1020,
                       "y": 5880,
                       "wires": [
                           [
                               "0d63ae49afe306a1"
                           ]
                       ]
                   },
                   {
                       "id": "b5f50b3d7ce5b577",
                       "type": "change",
                       "z": "7e6af0015415146d",
                       "name": "netz",
                       "rules": [
                           {
                               "t": "set",
                               "p": "payload",
                               "pt": "msg",
                               "to": "payload.netz",
                               "tot": "jsonata"
                           }
                       ],
                       "action": "",
                       "property": "",
                       "from": "",
                       "to": "",
                       "reg": false,
                       "x": 1010,
                       "y": 5920,
                       "wires": [
                           [
                               "0d63ae49afe306a1"
                           ]
                       ]
                   },
                   {
                       "id": "0d63ae49afe306a1",
                       "type": "delay",
                       "z": "7e6af0015415146d",
                       "name": "",
                       "pauseType": "rate",
                       "timeout": "5",
                       "timeoutUnits": "seconds",
                       "rate": "1",
                       "nbRateUnits": "5",
                       "rateUnits": "second",
                       "randomFirst": "1",
                       "randomLast": "5",
                       "randomUnits": "seconds",
                       "drop": false,
                       "allowrate": false,
                       "outputs": 1,
                       "x": 1280,
                       "y": 5900,
                       "wires": [
                           [
                               "3f3b72c9e9caa544"
                           ]
                       ]
                   },
                   {
                       "id": "3f3b72c9e9caa544",
                       "type": "debug",
                       "z": "7e6af0015415146d",
                       "name": "NETZberechnung",
                       "active": true,
                       "tosidebar": true,
                       "console": false,
                       "tostatus": false,
                       "complete": "payload",
                       "targetType": "msg",
                       "statusVal": "",
                       "statusType": "auto",
                       "x": 1510,
                       "y": 5900,
                       "wires": []
                   },
                   {
                       "id": "8242208cb47150aa",
                       "type": "comment",
                       "z": "7e6af0015415146d",
                       "name": "3 topics müssen anfangs triggern, dann Berechnung sobald sich ein Wert ändert",
                       "info": "",
                       "x": 360,
                       "y": 6060,
                       "wires": []
                   },
                   {
                       "id": "0afde9516c8e49de",
                       "type": "inject",
                       "z": "7e6af0015415146d",
                       "name": "",
                       "props": [
                           {
                               "p": "payload"
                           },
                           {
                               "p": "topic",
                               "vt": "str"
                           }
                       ],
                       "repeat": "",
                       "crontab": "",
                       "once": false,
                       "onceDelay": 0.1,
                       "topic": "Einspeisung",
                       "payload": "-50",
                       "payloadType": "num",
                       "x": 160,
                       "y": 6120,
                       "wires": [
                           [
                               "c847c5e443282ab9"
                           ]
                       ]
                   },
                   {
                       "id": "a48c393e89e84ed1",
                       "type": "inject",
                       "z": "7e6af0015415146d",
                       "name": "AC",
                       "props": [
                           {
                               "p": "payload"
                           },
                           {
                               "p": "topic",
                               "vt": "str"
                           }
                       ],
                       "repeat": "",
                       "crontab": "",
                       "once": false,
                       "onceDelay": 0.1,
                       "topic": "Venus system - Power on output of inverter/charger, L1 (W)",
                       "payload": "100",
                       "payloadType": "num",
                       "x": 190,
                       "y": 6180,
                       "wires": [
                           [
                               "6b61a9dd9f65e929"
                           ]
                       ]
                   },
                   {
                       "id": "60adaf77b0272866",
                       "type": "inject",
                       "z": "7e6af0015415146d",
                       "name": "DC",
                       "props": [
                           {
                               "p": "payload"
                           },
                           {
                               "p": "topic",
                               "vt": "str"
                           }
                       ],
                       "repeat": "",
                       "crontab": "",
                       "once": false,
                       "onceDelay": 0.1,
                       "topic": "Venus system - VE.Bus charge power (W)",
                       "payload": "100",
                       "payloadType": "num",
                       "x": 190,
                       "y": 6240,
                       "wires": [
                           [
                               "250a07fa52d546df"
                           ]
                       ]
                   },
                   {
                       "id": "250a07fa52d546df",
                       "type": "change",
                       "z": "7e6af0015415146d",
                       "name": "topic = verbrauchDC",
                       "rules": [
                           {
                               "t": "set",
                               "p": "topic",
                               "pt": "msg",
                               "to": "verbrauchDC",
                               "tot": "str"
                           }
                       ],
                       "action": "",
                       "property": "",
                       "from": "",
                       "to": "",
                       "reg": false,
                       "x": 400,
                       "y": 6240,
                       "wires": [
                           [
                               "f41ea55f35ea32ec"
                           ]
                       ]
                   },
                   {
                       "id": "6b61a9dd9f65e929",
                       "type": "change",
                       "z": "7e6af0015415146d",
                       "name": "topic = verbrauchAC",
                       "rules": [
                           {
                               "t": "set",
                               "p": "topic",
                               "pt": "msg",
                               "to": "verbrauchAC",
                               "tot": "str"
                           }
                       ],
                       "action": "",
                       "property": "",
                       "from": "",
                       "to": "",
                       "reg": false,
                       "x": 400,
                       "y": 6180,
                       "wires": [
                           [
                               "f41ea55f35ea32ec"
                           ]
                       ]
                   },
                   {
                       "id": "c847c5e443282ab9",
                       "type": "change",
                       "z": "7e6af0015415146d",
                       "name": "topic = netz",
                       "rules": [
                           {
                               "t": "set",
                               "p": "topic",
                               "pt": "msg",
                               "to": "netz",
                               "tot": "str"
                           }
                       ],
                       "action": "",
                       "property": "",
                       "from": "",
                       "to": "",
                       "reg": false,
                       "x": 430,
                       "y": 6120,
                       "wires": [
                           [
                               "f41ea55f35ea32ec"
                           ]
                       ]
                   },
                   {
                       "id": "f41ea55f35ea32ec",
                       "type": "join",
                       "z": "7e6af0015415146d",
                       "name": "",
                       "mode": "custom",
                       "build": "object",
                       "property": "payload",
                       "propertyType": "msg",
                       "key": "topic",
                       "joiner": "\\n",
                       "joinerType": "str",
                       "accumulate": true,
                       "timeout": "",
                       "count": "3",
                       "reduceRight": false,
                       "reduceExp": "",
                       "reduceInit": "",
                       "reduceInitType": "",
                       "reduceFixup": "",
                       "x": 610,
                       "y": 6180,
                       "wires": [
                           [
                               "4c80eba219778dc8"
                           ]
                       ]
                   },
                   {
                       "id": "4c80eba219778dc8",
                       "type": "switch",
                       "z": "7e6af0015415146d",
                       "name": "verbrauchDC < 0 ?",
                       "property": "payload.verbrauchDC",
                       "propertyType": "msg",
                       "rules": [
                           {
                               "t": "lt",
                               "v": "0",
                               "vt": "str"
                           },
                           {
                               "t": "else"
                           }
                       ],
                       "checkall": "true",
                       "repair": false,
                       "outputs": 2,
                       "x": 790,
                       "y": 6180,
                       "wires": [
                           [
                               "ef9f7be0eccb3f08"
                           ],
                           [
                               "bec30fa4e90499c0"
                           ]
                       ]
                   },
                   {
                       "id": "ef9f7be0eccb3f08",
                       "type": "change",
                       "z": "7e6af0015415146d",
                       "name": "netz + verbrauchAC",
                       "rules": [
                           {
                               "t": "set",
                               "p": "payload",
                               "pt": "msg",
                               "to": "payload.netz + payload.verbrauchAC",
                               "tot": "jsonata"
                           }
                       ],
                       "action": "",
                       "property": "",
                       "from": "",
                       "to": "",
                       "reg": false,
                       "x": 1020,
                       "y": 6160,
                       "wires": [
                           [
                               "4b8ce84d13c5a534"
                           ]
                       ]
                   },
                   {
                       "id": "bec30fa4e90499c0",
                       "type": "change",
                       "z": "7e6af0015415146d",
                       "name": "netz",
                       "rules": [
                           {
                               "t": "set",
                               "p": "payload",
                               "pt": "msg",
                               "to": "payload.netz",
                               "tot": "jsonata"
                           }
                       ],
                       "action": "",
                       "property": "",
                       "from": "",
                       "to": "",
                       "reg": false,
                       "x": 1010,
                       "y": 6200,
                       "wires": [
                           [
                               "4b8ce84d13c5a534"
                           ]
                       ]
                   },
                   {
                       "id": "4b8ce84d13c5a534",
                       "type": "delay",
                       "z": "7e6af0015415146d",
                       "name": "",
                       "pauseType": "rate",
                       "timeout": "5",
                       "timeoutUnits": "seconds",
                       "rate": "1",
                       "nbRateUnits": "5",
                       "rateUnits": "second",
                       "randomFirst": "1",
                       "randomLast": "5",
                       "randomUnits": "seconds",
                       "drop": false,
                       "allowrate": false,
                       "outputs": 1,
                       "x": 1280,
                       "y": 6180,
                       "wires": [
                           [
                               "4f6542a27992e53a"
                           ]
                       ]
                   },
                   {
                       "id": "4f6542a27992e53a",
                       "type": "debug",
                       "z": "7e6af0015415146d",
                       "name": "NETZberechnung",
                       "active": true,
                       "tosidebar": true,
                       "console": false,
                       "tostatus": false,
                       "complete": "payload",
                       "targetType": "msg",
                       "statusVal": "",
                       "statusType": "auto",
                       "x": 1510,
                       "y": 6180,
                       "wires": []
                   }
                ]
                

                Alle Sekunden zu triggern - ohne das eventuell eine Änderung stattgefunden hat, ist mE Unsinn. Wenn Du einen konstante Ausgabe willst, auch ohne das sich was geändert hat, kannst Du auch die letzte Berechnung dauernd mit einer Triggernode ausgeben. Keine Ahnung - vielleicht für einen Grafen.

                Eine Triggernode - kann die letzte Berechnung dann kontinuierlich senden, falls Du das wünschst.
                8b4086d4-c49c-4fe0-8207-aadd1196ae64-image.png

                [
                   {
                       "id": "a8842b5079340b33",
                       "type": "trigger",
                       "z": "7e6af0015415146d",
                       "name": "",
                       "op1": "",
                       "op2": "0",
                       "op1type": "pay",
                       "op2type": "str",
                       "duration": "-5",
                       "extend": false,
                       "overrideDelay": false,
                       "units": "s",
                       "reset": "",
                       "bytopic": "all",
                       "topic": "topic",
                       "outputs": 1,
                       "x": 860,
                       "y": 5680,
                       "wires": [
                           [
                               "0e6acf0851308881"
                           ]
                       ]
                   },
                   {
                       "id": "6fb21815b4c15278",
                       "type": "inject",
                       "z": "7e6af0015415146d",
                       "name": "",
                       "props": [
                           {
                               "p": "payload"
                           }
                       ],
                       "repeat": "",
                       "crontab": "",
                       "once": false,
                       "onceDelay": 0.1,
                       "topic": "",
                       "payload": "1",
                       "payloadType": "num",
                       "x": 630,
                       "y": 5680,
                       "wires": [
                           [
                               "a8842b5079340b33"
                           ]
                       ]
                   },
                   {
                       "id": "0e6acf0851308881",
                       "type": "debug",
                       "z": "7e6af0015415146d",
                       "name": "Sende letzte Nachricht alle 5s",
                       "active": true,
                       "tosidebar": true,
                       "console": false,
                       "tostatus": false,
                       "complete": "payload",
                       "targetType": "msg",
                       "statusVal": "",
                       "statusType": "auto",
                       "x": 1170,
                       "y": 5680,
                       "wires": []
                   }
                ]
                

                Ist aber meines Erachtens auch nur unsinniger Overhead - da brauche ich dann auch keine Begrenzung.

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

                  Vielleicht schaffe ich es ja noch, Dich von der Codiererei wegzubringen und Dich von den Vorteilen der grafischen Programmierung mittels NodeRed zu überzeugen.

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

                    @mickym ja so langsam aber sicher verstehe ich die funktionsweise 😉

                    Super hab es eingebaut und es läuft ... aber eine Frage:
                    Hinten raus variieren die Topics - dort finde ich immer mal wieder alle 3 eingangs Topics.
                    Was sagt mir das dann? der Topic der da drin steht hat auch getriggert zu dem Zeitpunkt?

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

                      @i0br0ker Ja der topic der da drin steht, war der letzte - das war ja die letzte Nachricht die getriggert hat. Wie gesagt, wenn Du willst, dass alle 3 immer neue Werte geliefert haben wollen, dann musst Du die Option auslassen. Du könntest theoretisch auch mit einer Switch Node filtern, dass Du nur dann eine Berechnung durchlässt, wenn ein bestimmter topic getriggert hat. Wie gesagt eine Parallelverarbeitung wirst Du in keinem Hausautomationssystem finden, sondern es wird immer einen zeitlichen Abstand zwischen den einzelnen Triggern geben.

                      Das topic dass Du hinten siehst, stammt also von einem der 3 Change Nodes mit dem Du die topics festlegst.

                      0b5765e0-0b67-45ac-9d6d-e6b98e4035f5-image.png

                      Das ist ja Bestandteil des Nachrichtenobjektes - auch wenn Du in der payload alle 3 Werte in einem Objekt zur Berechnung immer mitschleppst.

                      Am Besten siehst Du das, in dem Du Dir das gesamte Nachrichtenobjekt hinter der JOIN Node ausgeben lässt.

                      In der Berechnung überschreiben wir ja dann das payload Objekt wieder mit einem skalaren, numerischen Wert.
                      984f12d6-db99-463b-bdff-7b5cd3ea325a-image.png

                      4e29883b-926b-4798-bd65-7824cb8a331f-image.png

                      Das topic wird aber nicht angefasst. Du könntest das topic auch löschen oder einfach ein neues Topic Netzberechnung setzen, wenn es Dich verwirrt.

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

                        @mickym Wenn Du sagts die Einspeisung ist immer konstant, Du willst aber nur dann eine neue Berechnung machen, wenn sich verbrauchAC und verbrauchDC getriggert wurden, dann kannst Du das auch kaskadieren. Aber wie gesagt, Du musst Dich entscheiden - WANN Du eine Berechnung durchführen willst. Einen definierten Zeitpunkt musst Du festlegen und kann nicht das System für Dich festlegen.

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

                          @mickym soo ich will deine Geduld ja nicht überstrapazieren 😉
                          Ich habe immer wieder kurze Ausreißer drin , die meine Zeiten im obigen Beispiel für false immer wieder zu schnell Resetten. 😞 Kann ich mit einfachen mitteln den Wert "glätten" bzw einen Mittelwert über zeit x berechnen mit dem ich weiter arbeite?

                          I 1 Reply Last reply Reply Quote 0
                          • I
                            I0Br0ker @I0Br0ker last edited by

                            @i0br0ker

                            hab da was gefunden
                            average

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

                              @i0br0ker Du kannst auch die Filternode nehmen, die kann Ausreiser über das narrow band ausfiltern, dann brauchst du keine neue Node installieren.

                              01ce47fa-deec-4d0f-b3c6-99d8652c2467-image.png

                              Hier kannst Du auch einen Prozentwert oder eine absolute Zahl angeben und mit der letzten Aus- oder Eingabe vergleichen.

                              b8c104b5-a403-47aa-9cbd-50295add1605-image.png

                              Einfach mal die Hilfe so mancher Nodes anschauen. 😉

                              Und bevor Du die average Node installierst, schau Dir mal die aggregate Node an - die kann auch den median verwenden - und Ausreißer werden damit gänzlich ignoriert.

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

                                @mickym Hi ich scheitere aktuell an einer "einfachen" UND Verknüpfung wenn beide Pfade auf TRUE Sind soll ein TRUE ausgegeben werden .... ich bekomm es ohne Function nicht geregelt 🙂


                                84dd24a4-e0b2-4a77-aa7f-42224e22bf26-image.png

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

                                  @i0br0ker beide pfade vereinst du wieder mit unterschiedlichen topics in ein nachrichtenobjekt mit den topic eigenschaften mit einer join node, wie wir es beim letzten flow gemacht haben. Anschließend kannst du die Eigenschaften des Objektes mit „and“ und JSONATA verknüpfen. Wenn Dir die Erklärung nicht langt, mache ich Dir später wieder ein Beispiel mit Inject Nodes.

                                  ich bin nur gerade nicht am Rechner. wie gesagt wichtig ist alles in einem payload Objekt zu sammeln, da du ja alle aktuellen Zustände zum Zeitpunkt der Analyse brauchst. ich schicke Dir dann noch ein paar Change und Switch nodes mit den du beliebig viele Eigenschaften eines Objektes logisch verknüpfst. ich nutze das viel zur Überwachung von Geräten bzw. Zuständen.

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

                                    @mickym Okay ich hab die 2 pfade schon über join zusammengeführt wie in dem Flow von dir der auch schon läuft bei mir.
                                    Und dann die msg.topics schon eindeutig geändert ... ok dann google ich mal weiter ist ja eigentlich nicht so das ich mir alles erschnorren möchte 😉 Aber wenn ich grundlegend meine Funktionen mal habe kann ich damit arbeiten.
                                    DANKE

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

                                      @i0br0ker Ich stell Dir mal meine Logiknodes zur Verfügung- sitze am Rechner. Und nein mach Dir keine Gedanken zum "Erschnorren" - ich mach das gerne und habe im Moment eh keine Lust an meinen eigenen Projekten zu arbeiten. Deshalb sind solche Hinweise für mich eine willkommene Abwechslung. Ausserdem glaube ich, dass Du vielleicht doch langsam ein Fan von NodeRed wirst und es für Dich nicht eine Last ist, weil es auf der Victron nichts anderes gibt.

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

                                        Hier mal meine Logiknodes zum Import und zum Ausprobieren:

                                        5f581ea8-4699-48bd-b9af-49e26b458888-image.png

                                        [
                                           {
                                               "id": "b52592ecd269d672",
                                               "type": "switch",
                                               "z": "7e6af0015415146d",
                                               "name": "AND?",
                                               "property": "$reduce(payload.*,function($i, $j){$i and $j})",
                                               "propertyType": "jsonata",
                                               "rules": [
                                                   {
                                                       "t": "true"
                                                   },
                                                   {
                                                       "t": "false"
                                                   }
                                               ],
                                               "checkall": "true",
                                               "repair": false,
                                               "outputs": 2,
                                               "x": 170,
                                               "y": 6320,
                                               "wires": [
                                                   [],
                                                   []
                                               ],
                                               "info": "# All properties of an object must be true.\n\nAll properties of an object must be true.\n\n`{\n    \"Office\": true,\n    \"Bedroom\": true,\n    \"Living Room Balcony\": true,\n    \"Living Room Right Window\": true,\n    \"Living Room Left Window\": true\n}`\n\nis true,\n\n`{\n    \"Office\": true,\n    \"Bedroom\": false,\n    \"Living Room Balcony\": true,\n    \"Living Room Right Window\": true,\n    \"Living Room Left Window\": true\n}`\n\nis false.\n\n# Alle Eigenschaften eines Objektes müssen wahr sein\n\nAlle Eigenschaften eines Objektes müssen wahr sein.\n\n`{\n    \"Büro Balkon\": true,\n    \"Schlafzimmer Balkon\": true,\n    \"Wohnzimmer Balkon\": true,\n    \"Wohnzimmer rechtes Fenster\": true,\n    \"Wohnzimmer linkes Fenster\": true\n}`\n\nergibt true,\n\n`{\n    \"Büro Balkon\": true,\n    \"Schlafzimmer Balkon\": true,\n    \"Wohnzimmer Balkon\": true,\n    \"Wohnzimmer rechtes Fenster\": false,\n    \"Wohnzimmer linkes Fenster\": true\n}`\n\nergibt false."
                                           },
                                           {
                                               "id": "b5dd6dc0da9e8c83",
                                               "type": "change",
                                               "z": "7e6af0015415146d",
                                               "name": "AND ?",
                                               "rules": [
                                                   {
                                                       "t": "set",
                                                       "p": "payload",
                                                       "pt": "msg",
                                                       "to": "$reduce(payload.*,function($i, $j){$i and $j})",
                                                       "tot": "jsonata"
                                                   }
                                               ],
                                               "action": "",
                                               "property": "",
                                               "from": "",
                                               "to": "",
                                               "reg": false,
                                               "x": 670,
                                               "y": 6500,
                                               "wires": [
                                                   [
                                                       "807f93af8b411c17"
                                                   ]
                                               ],
                                               "info": "# All Property of an object must be true.\n\nAll properties of an object must be true.\n\n`{\n    \"Office\": true,\n    \"Bedroom\": true,\n    \"Living Room Balcony\": true,\n    \"Living Room Right Window\": true,\n    \"Living Room Left Window\": true\n}`\n\nis true,\n\n`{\n    \"Office\": true,\n    \"Bedroom\": false,\n    \"Living Room Balcony\": true,\n    \"Living Room Right Window\": true,\n    \"Living Room Left Window\": true\n}`\n\nis false.\n\n# Alle Eigenschaften eines Objektes müssen wahr sein\n\nAlle Eigenschaften eines Objektes müssen wahr sein.\n\n`{\n    \"Büro Balkon\": true,\n    \"Schlafzimmer Balkon\": true,\n    \"Wohnzimmer Balkon\": true,\n    \"Wohnzimmer rechtes Fenster\": true,\n    \"Wohnzimmer linkes Fenster\": true\n}`\n\nergibt true,\n\n`{\n    \"Büro Balkon\": true,\n    \"Schlafzimmer Balkon\": true,\n    \"Wohnzimmer Balkon\": true,\n    \"Wohnzimmer rechtes Fenster\": false,\n    \"Wohnzimmer linkes Fenster\": true\n}`\n\nergibt false."
                                           },
                                           {
                                               "id": "5be9d6962a70746d",
                                               "type": "switch",
                                               "z": "7e6af0015415146d",
                                               "name": "OR?",
                                               "property": "$reduce(payload.*,function($i, $j){$i or $j})",
                                               "propertyType": "jsonata",
                                               "rules": [
                                                   {
                                                       "t": "true"
                                                   },
                                                   {
                                                       "t": "false"
                                                   }
                                               ],
                                               "checkall": "true",
                                               "repair": false,
                                               "outputs": 2,
                                               "x": 330,
                                               "y": 6320,
                                               "wires": [
                                                   [],
                                                   []
                                               ],
                                               "info": "# Only one or more properties of an object need to be true.\n\n Only one or more properties of an object need to be true.\n\n`{\n    \"Office\": false,\n    \"Bedroom\": false,\n    \"Living Room Balcony\": false,\n    \"Liviueng Room Right Window\": false,\n    \"Living Room Left Window\": false\n}`\n\nis false,\n\n`{\n    \"Office\": false,\n    \"Bedroom\": true,\n    \"Living Room Balcony\": false,\n    \"Living Room Right Window\": false,\n    \"Living Room Left Window\": false\n}`\n\nis true.\n\n# Mindestens eine Eigenschaft des Objektes muss wahr sein.\n\nMindestens eine Eigenschaft des Objektes muss wahr sein.\n\n`{\n    \"Büro Balkon\": false,\n    \"Schlafzimmer Balkon\": false,\n    \"Wohnzimmer Balkon\": false,\n    \"Wohnzimmer rechtes Fenster\": false,\n    \"Wohnzimmer linkes Fenster\": false\n}`\n\nergibt false,\n\n`{\n    \"Büro Balkon\": false,\n    \"Schlafzimmer Balkon\": true,\n    \"Wohnzimmer Balkon\": false,\n    \"Wohnzimmer rechtes Fenster\": false,\n    \"Wohnzimmer linkes Fenster\": false\n}`\n\nergibt true (wahr)."
                                           },
                                           {
                                               "id": "cef81d9d372220df",
                                               "type": "change",
                                               "z": "7e6af0015415146d",
                                               "name": "OR ?",
                                               "rules": [
                                                   {
                                                       "t": "set",
                                                       "p": "payload",
                                                       "pt": "msg",
                                                       "to": "$reduce(payload.*,function($i, $j){$i or $j})",
                                                       "tot": "jsonata"
                                                   }
                                               ],
                                               "action": "",
                                               "property": "",
                                               "from": "",
                                               "to": "",
                                               "reg": false,
                                               "x": 330,
                                               "y": 6360,
                                               "wires": [
                                                   []
                                               ],
                                               "info": "# Only one or more properties of an object need to be true.\n\n Only one or more properties of an object need to be true.\n\n`{\n    \"Office\": false,\n    \"Bedroom\": false,\n    \"Living Room Balcony\": false,\n    \"Liviueng Room Right Window\": false,\n    \"Living Room Left Window\": false\n}`\n\nis false,\n\n`{\n    \"Office\": false,\n    \"Bedroom\": true,\n    \"Living Room Balcony\": false,\n    \"Living Room Right Window\": false,\n    \"Living Room Left Window\": false\n}`\n\nis true.\n\n# Mindestens eine Eigenschaft des Objektes muss wahr sein.\n\nMindestens eine Eigenschaft des Objektes muss wahr sein.\n\n`{\n    \"Büro Balkon\": false,\n    \"Schlafzimmer Balkon\": false,\n    \"Wohnzimmer Balkon\": false,\n    \"Wohnzimmer rechtes Fenster\": false,\n    \"Wohnzimmer linkes Fenster\": false\n}`\n\nergibt false,\n\n`{\n    \"Büro Balkon\": false,\n    \"Schlafzimmer Balkon\": true,\n    \"Wohnzimmer Balkon\": false,\n    \"Wohnzimmer rechtes Fenster\": false,\n    \"Wohnzimmer linkes Fenster\": false\n}`\n\nergibt true (wahr)."
                                           },
                                           {
                                               "id": "3d479b8d8cf8bb24",
                                               "type": "change",
                                               "z": "7e6af0015415146d",
                                               "name": "NOT",
                                               "rules": [
                                                   {
                                                       "t": "set",
                                                       "p": "payload",
                                                       "pt": "msg",
                                                       "to": "$not(payload)\t",
                                                       "tot": "jsonata"
                                                   }
                                               ],
                                               "action": "",
                                               "property": "",
                                               "from": "",
                                               "to": "",
                                               "reg": false,
                                               "x": 490,
                                               "y": 6340,
                                               "wires": [
                                                   []
                                               ]
                                           },
                                           {
                                               "id": "fc01283fd925fd9c",
                                               "type": "comment",
                                               "z": "7e6af0015415146d",
                                               "name": "meine Logik-Nodes",
                                               "info": "",
                                               "x": 190,
                                               "y": 6260,
                                               "wires": []
                                           },
                                           {
                                               "id": "d8880d092aea4bd4",
                                               "type": "inject",
                                               "z": "7e6af0015415146d",
                                               "name": "",
                                               "props": [
                                                   {
                                                       "p": "payload"
                                                   },
                                                   {
                                                       "p": "topic",
                                                       "vt": "str"
                                                   }
                                               ],
                                               "repeat": "",
                                               "crontab": "",
                                               "once": false,
                                               "onceDelay": 0.1,
                                               "topic": "topic1",
                                               "payload": "true",
                                               "payloadType": "bool",
                                               "x": 220,
                                               "y": 6500,
                                               "wires": [
                                                   [
                                                       "52e5a4db11c00365"
                                                   ]
                                               ]
                                           },
                                           {
                                               "id": "e7457bc09c39f0a9",
                                               "type": "inject",
                                               "z": "7e6af0015415146d",
                                               "name": "",
                                               "props": [
                                                   {
                                                       "p": "payload"
                                                   },
                                                   {
                                                       "p": "topic",
                                                       "vt": "str"
                                                   }
                                               ],
                                               "repeat": "",
                                               "crontab": "",
                                               "once": false,
                                               "onceDelay": 0.1,
                                               "topic": "topic1",
                                               "payload": "false",
                                               "payloadType": "bool",
                                               "x": 210,
                                               "y": 6540,
                                               "wires": [
                                                   [
                                                       "52e5a4db11c00365"
                                                   ]
                                               ]
                                           },
                                           {
                                               "id": "75e97a2f3de610e3",
                                               "type": "inject",
                                               "z": "7e6af0015415146d",
                                               "name": "",
                                               "props": [
                                                   {
                                                       "p": "payload"
                                                   },
                                                   {
                                                       "p": "topic",
                                                       "vt": "str"
                                                   }
                                               ],
                                               "repeat": "",
                                               "crontab": "",
                                               "once": false,
                                               "onceDelay": 0.1,
                                               "topic": "topic2",
                                               "payload": "true",
                                               "payloadType": "bool",
                                               "x": 220,
                                               "y": 6600,
                                               "wires": [
                                                   [
                                                       "da768d9610d74ace"
                                                   ]
                                               ]
                                           },
                                           {
                                               "id": "d54b8850e7baeadd",
                                               "type": "inject",
                                               "z": "7e6af0015415146d",
                                               "name": "",
                                               "props": [
                                                   {
                                                       "p": "payload"
                                                   },
                                                   {
                                                       "p": "topic",
                                                       "vt": "str"
                                                   }
                                               ],
                                               "repeat": "",
                                               "crontab": "",
                                               "once": false,
                                               "onceDelay": 0.1,
                                               "topic": "topic2",
                                               "payload": "false",
                                               "payloadType": "bool",
                                               "x": 210,
                                               "y": 6640,
                                               "wires": [
                                                   [
                                                       "da768d9610d74ace"
                                                   ]
                                               ]
                                           },
                                           {
                                               "id": "cec439f3f58e485b",
                                               "type": "inject",
                                               "z": "7e6af0015415146d",
                                               "name": "",
                                               "props": [
                                                   {
                                                       "p": "payload"
                                                   },
                                                   {
                                                       "p": "topic",
                                                       "vt": "str"
                                                   }
                                               ],
                                               "repeat": "",
                                               "crontab": "",
                                               "once": false,
                                               "onceDelay": 0.1,
                                               "topic": "topic3",
                                               "payload": "true",
                                               "payloadType": "bool",
                                               "x": 220,
                                               "y": 6700,
                                               "wires": [
                                                   [
                                                       "8cfb7fe629cb3864"
                                                   ]
                                               ]
                                           },
                                           {
                                               "id": "fa95f7360b6c91bf",
                                               "type": "inject",
                                               "z": "7e6af0015415146d",
                                               "name": "",
                                               "props": [
                                                   {
                                                       "p": "payload"
                                                   },
                                                   {
                                                       "p": "topic",
                                                       "vt": "str"
                                                   }
                                               ],
                                               "repeat": "",
                                               "crontab": "",
                                               "once": false,
                                               "onceDelay": 0.1,
                                               "topic": "topic3",
                                               "payload": "false",
                                               "payloadType": "bool",
                                               "x": 210,
                                               "y": 6740,
                                               "wires": [
                                                   [
                                                       "8cfb7fe629cb3864"
                                                   ]
                                               ]
                                           },
                                           {
                                               "id": "6b338a0f25b8a36a",
                                               "type": "join",
                                               "z": "7e6af0015415146d",
                                               "name": "",
                                               "mode": "custom",
                                               "build": "object",
                                               "property": "payload",
                                               "propertyType": "msg",
                                               "key": "topic",
                                               "joiner": "\\n",
                                               "joinerType": "str",
                                               "accumulate": true,
                                               "timeout": "",
                                               "count": "1",
                                               "reduceRight": false,
                                               "reduceExp": "",
                                               "reduceInit": "",
                                               "reduceInitType": "",
                                               "reduceFixup": "",
                                               "x": 470,
                                               "y": 6620,
                                               "wires": [
                                                   [
                                                       "b5dd6dc0da9e8c83",
                                                       "55d97225125db746",
                                                       "6dcb71cf2a719263",
                                                       "5c43e54468acf258"
                                                   ]
                                               ]
                                           },
                                           {
                                               "id": "807f93af8b411c17",
                                               "type": "debug",
                                               "z": "7e6af0015415146d",
                                               "name": "Ergebnis UND",
                                               "active": true,
                                               "tosidebar": true,
                                               "console": false,
                                               "tostatus": false,
                                               "complete": "payload",
                                               "targetType": "msg",
                                               "statusVal": "",
                                               "statusType": "auto",
                                               "x": 880,
                                               "y": 6500,
                                               "wires": []
                                           },
                                           {
                                               "id": "be836d8c583562d3",
                                               "type": "debug",
                                               "z": "7e6af0015415146d",
                                               "name": "Ergebnis ODER",
                                               "active": true,
                                               "tosidebar": true,
                                               "console": false,
                                               "tostatus": false,
                                               "complete": "payload",
                                               "targetType": "msg",
                                               "statusVal": "",
                                               "statusType": "auto",
                                               "x": 880,
                                               "y": 6560,
                                               "wires": []
                                           },
                                           {
                                               "id": "bee35810b67e0fe3",
                                               "type": "debug",
                                               "z": "7e6af0015415146d",
                                               "name": "Wenn UND = wahr",
                                               "active": true,
                                               "tosidebar": true,
                                               "console": false,
                                               "tostatus": false,
                                               "complete": "payload",
                                               "targetType": "msg",
                                               "statusVal": "",
                                               "statusType": "auto",
                                               "x": 890,
                                               "y": 6640,
                                               "wires": []
                                           },
                                           {
                                               "id": "98788861c8ea3152",
                                               "type": "debug",
                                               "z": "7e6af0015415146d",
                                               "name": "Wenn UND = falsch",
                                               "active": true,
                                               "tosidebar": true,
                                               "console": false,
                                               "tostatus": false,
                                               "complete": "payload",
                                               "targetType": "msg",
                                               "statusVal": "",
                                               "statusType": "auto",
                                               "x": 890,
                                               "y": 6680,
                                               "wires": []
                                           },
                                           {
                                               "id": "6a617a990679ee53",
                                               "type": "debug",
                                               "z": "7e6af0015415146d",
                                               "name": "Wenn ODER = wahr",
                                               "active": true,
                                               "tosidebar": true,
                                               "console": false,
                                               "tostatus": false,
                                               "complete": "payload",
                                               "targetType": "msg",
                                               "statusVal": "",
                                               "statusType": "auto",
                                               "x": 900,
                                               "y": 6740,
                                               "wires": []
                                           },
                                           {
                                               "id": "c16cb77cc5959037",
                                               "type": "debug",
                                               "z": "7e6af0015415146d",
                                               "name": "Wenn ODER = falsch",
                                               "active": true,
                                               "tosidebar": true,
                                               "console": false,
                                               "tostatus": false,
                                               "complete": "payload",
                                               "targetType": "msg",
                                               "statusVal": "",
                                               "statusType": "auto",
                                               "x": 900,
                                               "y": 6780,
                                               "wires": []
                                           },
                                           {
                                               "id": "5c78dfe8762a3c1f",
                                               "type": "change",
                                               "z": "7e6af0015415146d",
                                               "name": "AND ?",
                                               "rules": [
                                                   {
                                                       "t": "set",
                                                       "p": "payload",
                                                       "pt": "msg",
                                                       "to": "$reduce(payload.*,function($i, $j){$i and $j})",
                                                       "tot": "jsonata"
                                                   }
                                               ],
                                               "action": "",
                                               "property": "",
                                               "from": "",
                                               "to": "",
                                               "reg": false,
                                               "x": 170,
                                               "y": 6360,
                                               "wires": [
                                                   []
                                               ],
                                               "info": "# All Property of an object must be true.\n\nAll properties of an object must be true.\n\n`{\n    \"Office\": true,\n    \"Bedroom\": true,\n    \"Living Room Balcony\": true,\n    \"Living Room Right Window\": true,\n    \"Living Room Left Window\": true\n}`\n\nis true,\n\n`{\n    \"Office\": true,\n    \"Bedroom\": false,\n    \"Living Room Balcony\": true,\n    \"Living Room Right Window\": true,\n    \"Living Room Left Window\": true\n}`\n\nis false.\n\n# Alle Eigenschaften eines Objektes müssen wahr sein\n\nAlle Eigenschaften eines Objektes müssen wahr sein.\n\n`{\n    \"Büro Balkon\": true,\n    \"Schlafzimmer Balkon\": true,\n    \"Wohnzimmer Balkon\": true,\n    \"Wohnzimmer rechtes Fenster\": true,\n    \"Wohnzimmer linkes Fenster\": true\n}`\n\nergibt true,\n\n`{\n    \"Büro Balkon\": true,\n    \"Schlafzimmer Balkon\": true,\n    \"Wohnzimmer Balkon\": true,\n    \"Wohnzimmer rechtes Fenster\": false,\n    \"Wohnzimmer linkes Fenster\": true\n}`\n\nergibt false."
                                           },
                                           {
                                               "id": "55d97225125db746",
                                               "type": "change",
                                               "z": "7e6af0015415146d",
                                               "name": "OR ?",
                                               "rules": [
                                                   {
                                                       "t": "set",
                                                       "p": "payload",
                                                       "pt": "msg",
                                                       "to": "$reduce(payload.*,function($i, $j){$i or $j})",
                                                       "tot": "jsonata"
                                                   }
                                               ],
                                               "action": "",
                                               "property": "",
                                               "from": "",
                                               "to": "",
                                               "reg": false,
                                               "x": 670,
                                               "y": 6560,
                                               "wires": [
                                                   [
                                                       "be836d8c583562d3"
                                                   ]
                                               ],
                                               "info": "# Only one or more properties of an object need to be true.\n\n Only one or more properties of an object need to be true.\n\n`{\n    \"Office\": false,\n    \"Bedroom\": false,\n    \"Living Room Balcony\": false,\n    \"Liviueng Room Right Window\": false,\n    \"Living Room Left Window\": false\n}`\n\nis false,\n\n`{\n    \"Office\": false,\n    \"Bedroom\": true,\n    \"Living Room Balcony\": false,\n    \"Living Room Right Window\": false,\n    \"Living Room Left Window\": false\n}`\n\nis true.\n\n# Mindestens eine Eigenschaft des Objektes muss wahr sein.\n\nMindestens eine Eigenschaft des Objektes muss wahr sein.\n\n`{\n    \"Büro Balkon\": false,\n    \"Schlafzimmer Balkon\": false,\n    \"Wohnzimmer Balkon\": false,\n    \"Wohnzimmer rechtes Fenster\": false,\n    \"Wohnzimmer linkes Fenster\": false\n}`\n\nergibt false,\n\n`{\n    \"Büro Balkon\": false,\n    \"Schlafzimmer Balkon\": true,\n    \"Wohnzimmer Balkon\": false,\n    \"Wohnzimmer rechtes Fenster\": false,\n    \"Wohnzimmer linkes Fenster\": false\n}`\n\nergibt true (wahr)."
                                           },
                                           {
                                               "id": "6dcb71cf2a719263",
                                               "type": "switch",
                                               "z": "7e6af0015415146d",
                                               "name": "AND?",
                                               "property": "$reduce(payload.*,function($i, $j){$i and $j})",
                                               "propertyType": "jsonata",
                                               "rules": [
                                                   {
                                                       "t": "true"
                                                   },
                                                   {
                                                       "t": "false"
                                                   }
                                               ],
                                               "checkall": "true",
                                               "repair": false,
                                               "outputs": 2,
                                               "x": 670,
                                               "y": 6660,
                                               "wires": [
                                                   [
                                                       "bee35810b67e0fe3"
                                                   ],
                                                   [
                                                       "98788861c8ea3152"
                                                   ]
                                               ],
                                               "info": "# All properties of an object must be true.\n\nAll properties of an object must be true.\n\n`{\n    \"Office\": true,\n    \"Bedroom\": true,\n    \"Living Room Balcony\": true,\n    \"Living Room Right Window\": true,\n    \"Living Room Left Window\": true\n}`\n\nis true,\n\n`{\n    \"Office\": true,\n    \"Bedroom\": false,\n    \"Living Room Balcony\": true,\n    \"Living Room Right Window\": true,\n    \"Living Room Left Window\": true\n}`\n\nis false.\n\n# Alle Eigenschaften eines Objektes müssen wahr sein\n\nAlle Eigenschaften eines Objektes müssen wahr sein.\n\n`{\n    \"Büro Balkon\": true,\n    \"Schlafzimmer Balkon\": true,\n    \"Wohnzimmer Balkon\": true,\n    \"Wohnzimmer rechtes Fenster\": true,\n    \"Wohnzimmer linkes Fenster\": true\n}`\n\nergibt true,\n\n`{\n    \"Büro Balkon\": true,\n    \"Schlafzimmer Balkon\": true,\n    \"Wohnzimmer Balkon\": true,\n    \"Wohnzimmer rechtes Fenster\": false,\n    \"Wohnzimmer linkes Fenster\": true\n}`\n\nergibt false."
                                           },
                                           {
                                               "id": "5c43e54468acf258",
                                               "type": "switch",
                                               "z": "7e6af0015415146d",
                                               "name": "OR?",
                                               "property": "$reduce(payload.*,function($i, $j){$i or $j})",
                                               "propertyType": "jsonata",
                                               "rules": [
                                                   {
                                                       "t": "true"
                                                   },
                                                   {
                                                       "t": "false"
                                                   }
                                               ],
                                               "checkall": "true",
                                               "repair": false,
                                               "outputs": 2,
                                               "x": 670,
                                               "y": 6760,
                                               "wires": [
                                                   [
                                                       "6a617a990679ee53"
                                                   ],
                                                   [
                                                       "c16cb77cc5959037"
                                                   ]
                                               ],
                                               "info": "# Only one or more properties of an object need to be true.\n\n Only one or more properties of an object need to be true.\n\n`{\n    \"Office\": false,\n    \"Bedroom\": false,\n    \"Living Room Balcony\": false,\n    \"Liviueng Room Right Window\": false,\n    \"Living Room Left Window\": false\n}`\n\nis false,\n\n`{\n    \"Office\": false,\n    \"Bedroom\": true,\n    \"Living Room Balcony\": false,\n    \"Living Room Right Window\": false,\n    \"Living Room Left Window\": false\n}`\n\nis true.\n\n# Mindestens eine Eigenschaft des Objektes muss wahr sein.\n\nMindestens eine Eigenschaft des Objektes muss wahr sein.\n\n`{\n    \"Büro Balkon\": false,\n    \"Schlafzimmer Balkon\": false,\n    \"Wohnzimmer Balkon\": false,\n    \"Wohnzimmer rechtes Fenster\": false,\n    \"Wohnzimmer linkes Fenster\": false\n}`\n\nergibt false,\n\n`{\n    \"Büro Balkon\": false,\n    \"Schlafzimmer Balkon\": true,\n    \"Wohnzimmer Balkon\": false,\n    \"Wohnzimmer rechtes Fenster\": false,\n    \"Wohnzimmer linkes Fenster\": false\n}`\n\nergibt true (wahr)."
                                           },
                                           {
                                               "id": "471a757274736ce3",
                                               "type": "comment",
                                               "z": "7e6af0015415146d",
                                               "name": "... in Aktion",
                                               "info": "",
                                               "x": 160,
                                               "y": 6440,
                                               "wires": []
                                           },
                                           {
                                               "id": "52e5a4db11c00365",
                                               "type": "junction",
                                               "z": "7e6af0015415146d",
                                               "x": 320,
                                               "y": 6520,
                                               "wires": [
                                                   [
                                                       "016f3a621d800e55"
                                                   ]
                                               ]
                                           },
                                           {
                                               "id": "da768d9610d74ace",
                                               "type": "junction",
                                               "z": "7e6af0015415146d",
                                               "x": 320,
                                               "y": 6620,
                                               "wires": [
                                                   [
                                                       "016f3a621d800e55"
                                                   ]
                                               ]
                                           },
                                           {
                                               "id": "8cfb7fe629cb3864",
                                               "type": "junction",
                                               "z": "7e6af0015415146d",
                                               "x": 320,
                                               "y": 6720,
                                               "wires": [
                                                   [
                                                       "016f3a621d800e55"
                                                   ]
                                               ]
                                           },
                                           {
                                               "id": "016f3a621d800e55",
                                               "type": "junction",
                                               "z": "7e6af0015415146d",
                                               "x": 380,
                                               "y": 6620,
                                               "wires": [
                                                   [
                                                       "6b338a0f25b8a36a"
                                                   ]
                                               ]
                                           }
                                        ]
                                        

                                        Im Prinzip kann auch eine JOIN Node Dir aus mehreren Eigenschaften eines Objektes EIN Ergebnis ermitteln (nicht nur logische Verknüpfungen).

                                        c1b02b58-11b4-412f-b9c2-d2b0d9e0830b-image.png

                                        Das benötigt zwar mehr Einarbeitung - aber damit kann man auch selbst Durchschnitte etc. berechnen und ist nicht unbedingt auf fertige Nodes der Community angewiesen - auch wenn man die natürlich nutzen kann. Es gibt auch fertige Boolean Nodes - aber wie gesagt, wenn man mit Standardnodes und JSONATA hinkommt, dann ziehe ich diese Vorgehensweise vor.

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

                                          @i0br0ker sagte in Einfache Funktion - Wertüberwachung mit 2 Verzögerungszeiten:

                                          @mickym Okay ich hab die 2 pfade schon über join zusammengeführt wie in dem Flow von dir der auch schon läuft bei mir.
                                          Und dann die msg.topics schon eindeutig geändert ... ok dann google ich mal weiter ist ja eigentlich nicht so das ich mir alles erschnorren möchte 😉 Aber wenn ich grundlegend meine Funktionen mal habe kann ich damit arbeiten.
                                          DANKE

                                          Ach und beim "Googlen" wirst Du leider feststellen, dass es auch im Netz noch viel zu viele Leute gibt, die herkömmlich mit function Nodes codieren und somit das Potential vorgefertigter Funktionsblöcke (Nodes) nicht zu schätzen oder anzuwenden wissen.

                                          Es gibt Fälle, wo function Nodes Sinn machen - insbesondere wenn man weitere NodeJS Bibliotheken einbinden will, aber ansonsten macht man sich oft viel zu viel Arbeit mit der Codeschreiberei und wie gesagt, viele Nodes können Funktionen, die man ja nicht selbst nachprogrammieren, zusammensuchen oder via KI bekommt und keiner versteht, was der Code tut.

                                          Du kannst auch JEDEN Flow in einer function Node abbilden, sowie Du es am Anfang gemacht hast - aber die Fehlersuche ist viel mühsamer und oft ist das ganze wenig strukturiert (sorry kein Angriff auf Deine Programmierkünste). Ich bin halt jetzt schon oft zu faul, mir im Code alle Möglichkeiten zu überlegen.

                                          Für mich ist es viel einfacher, wenn Du sagst - OK ich habe das Problem, wie kann man es lösen, als wenn man nachher einen fertigen Code "überprüfen" soll.

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

                                            Hier noch ein paar Anregungen - um über Arrays und JOIN Nodess verschiedene Berechnungen zu machen. Ich habe hier nun den Durchschnitt genommen, denn man aber auch in der Sequenz zu reduzieren - mit komplexeren Berechnungen füttern kann. Ich habe nur das Beispiel aus der Hilfe genommen:

                                            Wenn man bereits ein Array hat, dann kann man es direkt über JSONATA oder über eine JOIN Node zu einem Ergebnis überführen:

                                            b60d25ca-4f86-4b38-818a-02e83bd6179a-image.png

                                            Nun kann man die JOIN Node bevor man sie reduziert auch zu Erstellung eines Arrays verwenden.

                                            1. Nach einer bestimmten Anzahl von Messwerten
                                            2. Nach einer bestimmten Zeit.

                                            So kann man also den Durchschnitt zum Beispiel von Messungen innerhalb 1 Minute verwenden.

                                            Nach einer Minute - werden sofern Messwerte angekommen sind, diese automatisch als Array released und können für die Durchschnittsberechnung verwendet werden.

                                            3cc6e997-854d-44f5-aacb-3ce31f6524c4-image.png

                                            Mit complete kann das Array auch sofort released werden.

                                            5a3d38f6-4f3b-476b-b974-2f3fc46703df-image.png

                                            So kann man also Messwerte beliebig innerhalb einer Zeiteinheit konsolidieren - wie max, min etc. - das geht also alles mit Boardmitteln (wobei es für diese einfachen Funktionen, JSONATA Funktionen gibt, so dass man die Reduzierung nicht über eine JOIN Node machen muss.)

                                            Hier wieder zum Ausprobieren:

                                            [
                                               {
                                                   "id": "4a38c02fa8d419eb",
                                                   "type": "join",
                                                   "z": "7e6af0015415146d",
                                                   "name": "",
                                                   "mode": "reduce",
                                                   "build": "object",
                                                   "property": "payload",
                                                   "propertyType": "msg",
                                                   "key": "topic",
                                                   "joiner": "\\n",
                                                   "joinerType": "str",
                                                   "accumulate": true,
                                                   "timeout": "",
                                                   "count": "",
                                                   "reduceRight": false,
                                                   "reduceExp": "$A+payload",
                                                   "reduceInit": "0",
                                                   "reduceInitType": "num",
                                                   "reduceFixup": "$A/$N",
                                                   "x": 690,
                                                   "y": 6960,
                                                   "wires": [
                                                       [
                                                           "f2f6a6b833d0cbe3"
                                                       ]
                                                   ]
                                               },
                                               {
                                                   "id": "1b8c4632e6aa8fc2",
                                                   "type": "inject",
                                                   "z": "7e6af0015415146d",
                                                   "name": "",
                                                   "props": [
                                                       {
                                                           "p": "payload"
                                                       }
                                                   ],
                                                   "repeat": "",
                                                   "crontab": "",
                                                   "once": false,
                                                   "onceDelay": 0.1,
                                                   "topic": "",
                                                   "payload": "[15,20,6,8]",
                                                   "payloadType": "json",
                                                   "x": 180,
                                                   "y": 6960,
                                                   "wires": [
                                                       [
                                                           "4f41141b7fdc6049",
                                                           "a685b310bd5cad08"
                                                       ]
                                                   ]
                                               },
                                               {
                                                   "id": "4f41141b7fdc6049",
                                                   "type": "split",
                                                   "z": "7e6af0015415146d",
                                                   "name": "",
                                                   "splt": "\\n",
                                                   "spltType": "str",
                                                   "arraySplt": 1,
                                                   "arraySpltType": "len",
                                                   "stream": false,
                                                   "addname": "",
                                                   "x": 350,
                                                   "y": 6960,
                                                   "wires": [
                                                       [
                                                           "4a38c02fa8d419eb"
                                                       ]
                                                   ]
                                               },
                                               {
                                                   "id": "f2f6a6b833d0cbe3",
                                                   "type": "debug",
                                                   "z": "7e6af0015415146d",
                                                   "name": "Sequenz reduzieren => Mittelwert",
                                                   "active": true,
                                                   "tosidebar": true,
                                                   "console": false,
                                                   "tostatus": false,
                                                   "complete": "payload",
                                                   "targetType": "msg",
                                                   "statusVal": "",
                                                   "statusType": "auto",
                                                   "x": 940,
                                                   "y": 6960,
                                                   "wires": []
                                               },
                                               {
                                                   "id": "a685b310bd5cad08",
                                                   "type": "change",
                                                   "z": "7e6af0015415146d",
                                                   "name": "... Mit JSONATA",
                                                   "rules": [
                                                       {
                                                           "t": "set",
                                                           "p": "payload",
                                                           "pt": "msg",
                                                           "to": "$average(payload)\t",
                                                           "tot": "jsonata"
                                                       }
                                                   ],
                                                   "action": "",
                                                   "property": "",
                                                   "from": "",
                                                   "to": "",
                                                   "reg": false,
                                                   "x": 380,
                                                   "y": 6900,
                                                   "wires": [
                                                       [
                                                           "f55364965ba0031a"
                                                       ]
                                                   ]
                                               },
                                               {
                                                   "id": "f55364965ba0031a",
                                                   "type": "debug",
                                                   "z": "7e6af0015415146d",
                                                   "name": "Durchschnitt - dafür braucht man in der Regel keine Node",
                                                   "active": true,
                                                   "tosidebar": true,
                                                   "console": false,
                                                   "tostatus": false,
                                                   "complete": "payload",
                                                   "targetType": "msg",
                                                   "statusVal": "",
                                                   "statusType": "auto",
                                                   "x": 750,
                                                   "y": 6900,
                                                   "wires": []
                                               },
                                               {
                                                   "id": "b592a118eb019814",
                                                   "type": "join",
                                                   "z": "7e6af0015415146d",
                                                   "name": "",
                                                   "mode": "reduce",
                                                   "build": "object",
                                                   "property": "payload",
                                                   "propertyType": "msg",
                                                   "key": "topic",
                                                   "joiner": "\\n",
                                                   "joinerType": "str",
                                                   "accumulate": true,
                                                   "timeout": "",
                                                   "count": "",
                                                   "reduceRight": false,
                                                   "reduceExp": "$A+payload",
                                                   "reduceInit": "0",
                                                   "reduceInitType": "num",
                                                   "reduceFixup": "$A/$N",
                                                   "x": 690,
                                                   "y": 7160,
                                                   "wires": [
                                                       [
                                                           "2f5807d58b630812"
                                                       ]
                                                   ]
                                               },
                                               {
                                                   "id": "2f5807d58b630812",
                                                   "type": "debug",
                                                   "z": "7e6af0015415146d",
                                                   "name": "Sequenz reduzieren => Mittelwert",
                                                   "active": true,
                                                   "tosidebar": true,
                                                   "console": false,
                                                   "tostatus": false,
                                                   "complete": "payload",
                                                   "targetType": "msg",
                                                   "statusVal": "",
                                                   "statusType": "auto",
                                                   "x": 960,
                                                   "y": 7160,
                                                   "wires": []
                                               },
                                               {
                                                   "id": "f477a7db73cc1533",
                                                   "type": "inject",
                                                   "z": "7e6af0015415146d",
                                                   "name": "",
                                                   "props": [
                                                       {
                                                           "p": "payload"
                                                       }
                                                   ],
                                                   "repeat": "",
                                                   "crontab": "",
                                                   "once": false,
                                                   "onceDelay": 0.1,
                                                   "topic": "",
                                                   "payload": "6",
                                                   "payloadType": "num",
                                                   "x": 210,
                                                   "y": 7140,
                                                   "wires": [
                                                       [
                                                           "35287ce1b1118281"
                                                       ]
                                                   ]
                                               },
                                               {
                                                   "id": "9034307ed6ff36a5",
                                                   "type": "inject",
                                                   "z": "7e6af0015415146d",
                                                   "name": "",
                                                   "props": [
                                                       {
                                                           "p": "payload"
                                                       }
                                                   ],
                                                   "repeat": "",
                                                   "crontab": "",
                                                   "once": false,
                                                   "onceDelay": 0.1,
                                                   "topic": "",
                                                   "payload": "8",
                                                   "payloadType": "num",
                                                   "x": 210,
                                                   "y": 7180,
                                                   "wires": [
                                                       [
                                                           "35287ce1b1118281"
                                                       ]
                                                   ]
                                               },
                                               {
                                                   "id": "6e9f0e588c13de80",
                                                   "type": "debug",
                                                   "z": "7e6af0015415146d",
                                                   "name": "test array",
                                                   "active": true,
                                                   "tosidebar": true,
                                                   "console": false,
                                                   "tostatus": false,
                                                   "complete": "payload",
                                                   "targetType": "msg",
                                                   "statusVal": "",
                                                   "statusType": "auto",
                                                   "x": 520,
                                                   "y": 7220,
                                                   "wires": []
                                               },
                                               {
                                                   "id": "c830f915a6f2df47",
                                                   "type": "inject",
                                                   "z": "7e6af0015415146d",
                                                   "name": "complete",
                                                   "props": [
                                                       {
                                                           "p": "complete",
                                                           "v": "true",
                                                           "vt": "bool"
                                                       }
                                                   ],
                                                   "repeat": "",
                                                   "crontab": "",
                                                   "once": false,
                                                   "onceDelay": 0.1,
                                                   "topic": "",
                                                   "x": 200,
                                                   "y": 7240,
                                                   "wires": [
                                                       [
                                                           "35287ce1b1118281"
                                                       ]
                                                   ]
                                               },
                                               {
                                                   "id": "35287ce1b1118281",
                                                   "type": "join",
                                                   "z": "7e6af0015415146d",
                                                   "name": "",
                                                   "mode": "custom",
                                                   "build": "array",
                                                   "property": "payload",
                                                   "propertyType": "msg",
                                                   "key": "topic",
                                                   "joiner": "\\n",
                                                   "joinerType": "str",
                                                   "accumulate": false,
                                                   "timeout": "60",
                                                   "count": "",
                                                   "reduceRight": false,
                                                   "reduceExp": "",
                                                   "reduceInit": "",
                                                   "reduceInitType": "",
                                                   "reduceFixup": "",
                                                   "x": 370,
                                                   "y": 7160,
                                                   "wires": [
                                                       [
                                                           "992a3b14e76080d8",
                                                           "6e9f0e588c13de80",
                                                           "f4f51d2cdd158174"
                                                       ]
                                                   ]
                                               },
                                               {
                                                   "id": "992a3b14e76080d8",
                                                   "type": "split",
                                                   "z": "7e6af0015415146d",
                                                   "name": "",
                                                   "splt": "\\n",
                                                   "spltType": "str",
                                                   "arraySplt": 1,
                                                   "arraySpltType": "len",
                                                   "stream": false,
                                                   "addname": "",
                                                   "x": 510,
                                                   "y": 7160,
                                                   "wires": [
                                                       [
                                                           "b592a118eb019814"
                                                       ]
                                                   ]
                                               },
                                               {
                                                   "id": "f4f51d2cdd158174",
                                                   "type": "change",
                                                   "z": "7e6af0015415146d",
                                                   "name": "... Mit JSONATA",
                                                   "rules": [
                                                       {
                                                           "t": "set",
                                                           "p": "payload",
                                                           "pt": "msg",
                                                           "to": "$average(payload)\t",
                                                           "tot": "jsonata"
                                                       }
                                                   ],
                                                   "action": "",
                                                   "property": "",
                                                   "from": "",
                                                   "to": "",
                                                   "reg": false,
                                                   "x": 540,
                                                   "y": 7100,
                                                   "wires": [
                                                       [
                                                           "5715eda0b05a7e22"
                                                       ]
                                                   ]
                                               },
                                               {
                                                   "id": "5715eda0b05a7e22",
                                                   "type": "debug",
                                                   "z": "7e6af0015415146d",
                                                   "name": "Durchschnitt - dafür braucht man in der Regel keine Node",
                                                   "active": true,
                                                   "tosidebar": true,
                                                   "console": false,
                                                   "tostatus": false,
                                                   "complete": "payload",
                                                   "targetType": "msg",
                                                   "statusVal": "",
                                                   "statusType": "auto",
                                                   "x": 910,
                                                   "y": 7100,
                                                   "wires": []
                                               }
                                            ]
                                            

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

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            341
                                            Online

                                            31.7k
                                            Users

                                            79.8k
                                            Topics

                                            1.3m
                                            Posts

                                            2
                                            48
                                            1356
                                            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