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. Function Node welche zwei Werte vergleicht

    NEWS

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    Function Node welche zwei Werte vergleicht

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

      @1984chris Nun ehrlich gesagt funktioniert das doch grundsätzlich:

      14e2c836-2845-44c9-8b74-2d455ca1e159-image.png

      Was problematisch ist, dass Du für die verschiedenen Nachrichteneigenschaften x- Nachrichten hast. Damit hast Du ggf. viele Probleme. Ich würde mit den Inject nodes alles erst mal in den Kontext zu speichern und diesen dann auszulesen. Dann wird das ganze viel übersichtlicher. Also das triggern des Flows von dem Kontext erst mal zu trennen.

      Ich versuch das mal bissi zu vereinfachen, wobei ich Deine 2 Delays auch nicht ganz verstehe.

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

        @1984chris Mal eine blöde Frage - was sollen die Trigger Nodes überhaupt und warum nutzt du wenn nicht nur trigger Nodes?

        So ich bin mir zwar nicht sicher, was der Sinn ist - ggf. willst Du ja nur kurzfristige Unterbrechungen vermeiden.

        Schau mal, ob das so tut:

        7b5580b3-d45f-44cd-bbb8-789fd4627711-image.png

        [{"id":"a86c1f1e4b75e441","type":"inject","z":"b7365eb2cd9f043a","name":"","props":[{"p":"payload"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"81","payloadType":"num","x":170,"y":920,"wires":[["494bb9361ae7bea3"]]},{"id":"f18c81168d9f50a0","type":"inject","z":"b7365eb2cd9f043a","name":"","props":[{"p":"payload"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"2600","payloadType":"num","x":170,"y":820,"wires":[["6fa8637750ac1054"]]},{"id":"a3d2d88cd6708218","type":"inject","z":"b7365eb2cd9f043a","name":"","props":[{"p":"payload"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"79","payloadType":"num","x":170,"y":960,"wires":[["494bb9361ae7bea3"]]},{"id":"f3d26ec9c8d67465","type":"inject","z":"b7365eb2cd9f043a","name":"","props":[{"p":"payload"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"2300","payloadType":"num","x":170,"y":860,"wires":[["6fa8637750ac1054"]]},{"id":"84b2fa38187ff34f","type":"inject","z":"b7365eb2cd9f043a","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"AutoEin","payload":"AutoEin","payloadType":"str","x":160,"y":720,"wires":[["5e6eefda3fb81cfd"]]},{"id":"eba9ab8e96ae87e8","type":"inject","z":"b7365eb2cd9f043a","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"AutoAus","payloadType":"str","x":180,"y":760,"wires":[["5e6eefda3fb81cfd"]]},{"id":"5e6eefda3fb81cfd","type":"change","z":"b7365eb2cd9f043a","name":"","rules":[{"t":"set","p":"AutoEin","pt":"flow","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":390,"y":740,"wires":[["c9bdbf8b0e1b8b42"]]},{"id":"6fa8637750ac1054","type":"change","z":"b7365eb2cd9f043a","name":"","rules":[{"t":"set","p":"Einspeisung","pt":"flow","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":380,"y":840,"wires":[["c9bdbf8b0e1b8b42"]]},{"id":"494bb9361ae7bea3","type":"change","z":"b7365eb2cd9f043a","name":"","rules":[{"t":"set","p":"SOC","pt":"flow","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":380,"y":940,"wires":[["c9bdbf8b0e1b8b42"]]},{"id":"c9bdbf8b0e1b8b42","type":"change","z":"b7365eb2cd9f043a","name":"","rules":[{"t":"set","p":"payload","pt":"msg","to":"{\t   \"AutoEin\":$exists($flowContext(\"AutoEin\")),\t   \"Einspeisung\":$exists($flowContext(\"Einspeisung\")),\t   \"SOC\":$exists($flowContext(\"SOC\"))\t}","tot":"jsonata"}],"action":"","property":"","from":"","to":"","reg":false,"x":650,"y":840,"wires":[["9367f9f7.8f5708"]]},{"id":"2975f91defeba563","type":"debug","z":"b7365eb2cd9f043a","name":"Alle Parameter gesetzt?","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","statusVal":"","statusType":"auto","x":1070,"y":760,"wires":[]},{"id":"9367f9f7.8f5708","type":"switch","z":"b7365eb2cd9f043a","name":"AND?","property":"$reduce(payload.*,function($i, $j){$i and $j})","propertyType":"jsonata","rules":[{"t":"true"}],"checkall":"true","repair":false,"outputs":1,"x":830,"y":840,"wires":[["2975f91defeba563","c6ee18440c5ede12"]],"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":"45a1bb09159cf684","type":"switch","z":"b7365eb2cd9f043a","name":"SOC > 80%","property":"SOC","propertyType":"flow","rules":[{"t":"gt","v":"80","vt":"num"},{"t":"else"}],"checkall":"true","repair":false,"outputs":2,"x":1470,"y":820,"wires":[["55afcaa9b715c923","e6bff6b181617360"],["a24a10d67adf7325"]]},{"id":"5192b4bc40dd7659","type":"switch","z":"b7365eb2cd9f043a","name":"Einspeiseleistung > 2500W","property":"Einspeisung","propertyType":"flow","rules":[{"t":"gt","v":"2500","vt":"num"},{"t":"else"}],"checkall":"true","repair":false,"outputs":2,"x":1220,"y":820,"wires":[["45a1bb09159cf684"],["0f2c3c5c8743b77e"]]},{"id":"f558e9a1afff1836","type":"debug","z":"b7365eb2cd9f043a","name":"Ergebnis","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","statusVal":"","statusType":"auto","x":2480,"y":800,"wires":[]},{"id":"c6ee18440c5ede12","type":"switch","z":"b7365eb2cd9f043a","name":"Auto Ein/Aus","property":"AutoEin","propertyType":"flow","rules":[{"t":"cont","v":"AutoEin","vt":"str"},{"t":"else"}],"checkall":"true","repair":false,"outputs":2,"x":990,"y":840,"wires":[["5192b4bc40dd7659"],["473eacb13a6cb11c"]]},{"id":"5d671131260cc2d4","type":"change","z":"b7365eb2cd9f043a","name":"Schalter Aus","rules":[{"t":"set","p":"payload","pt":"msg","to":"Pumpe Aus 0","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":2090,"y":900,"wires":[["ddf39dae01705e59"]]},{"id":"856ab41216e0c0af","type":"delay","z":"b7365eb2cd9f043a","name":"","pauseType":"delay","timeout":"5","timeoutUnits":"seconds","rate":"1","nbRateUnits":"1","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":false,"allowrate":false,"outputs":1,"x":1900,"y":900,"wires":[["5d671131260cc2d4"]]},{"id":"55afcaa9b715c923","type":"change","z":"b7365eb2cd9f043a","name":"Schalter Ein","rules":[{"t":"set","p":"payload","pt":"msg","to":"Pumpe Ein 1","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":1690,"y":800,"wires":[["ddf39dae01705e59"]]},{"id":"e6bff6b181617360","type":"change","z":"b7365eb2cd9f043a","name":"","rules":[{"t":"set","p":"reset","pt":"msg","to":"true","tot":"bool"}],"action":"","property":"","from":"","to":"","reg":false,"x":1700,"y":840,"wires":[["856ab41216e0c0af"]]},{"id":"19225af3a1bf8b1a","type":"rbe","z":"b7365eb2cd9f043a","name":"","func":"rbe","gap":"","start":"","inout":"out","septopics":true,"property":"payload","topi":"topic","x":2310,"y":800,"wires":[["f558e9a1afff1836"]]},{"id":"a24a10d67adf7325","type":"junction","z":"b7365eb2cd9f043a","x":1620,"y":900,"wires":[["856ab41216e0c0af"]]},{"id":"0f2c3c5c8743b77e","type":"junction","z":"b7365eb2cd9f043a","x":1380,"y":900,"wires":[["a24a10d67adf7325"]]},{"id":"473eacb13a6cb11c","type":"junction","z":"b7365eb2cd9f043a","x":1100,"y":900,"wires":[["0f2c3c5c8743b77e"]]},{"id":"ddf39dae01705e59","type":"junction","z":"b7365eb2cd9f043a","x":2200,"y":800,"wires":[["19225af3a1bf8b1a"]]}]
        

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

          @mickym
          Hallo
          Ich habe mit node red noch nichts zu tun gehabt, bis jetzt und kann auch nichts programieren deshalb habe ich mir gedacht alles mit einzelnen nodes zu machen.
          Habe das Beispiel für mich umbauen wollen weil ich eine Poolwärmepumpe habe und diese z.b nur einschalten soll wenn PV Überschuss >2500W SOC Batterie>80% und der Schalter AutoEin Ein ist. Die Verzögerung ist z.b wenn Wolken drüberziehen und der PV Überschuss <2500W ist, wenn innerhalb 15 min (die 5 sekunden sind nur zum testen) wieder >2500W ein reset erfolgt.
          Deine Variante funktioniert.Danke
          Wie gesagt habe leider keine Programierkenntnisse (JSON).
          Kannst du mir einen Tipp geben wie ich mich in das Thema einarbeiten kann?

          LG Christoph

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

            @1984chris Na ich habe auch sogut wie keinen Code geschrieben - das Einzige war, dass ich sicher gestellt habe, dass alle Daten im Kontext gespeichert sind.
            Bei Objekten im Debug Fenster kannst Du immer den Pfad kopieren und ich habe nur JSONATA verwendet, um sicher zustellen, dass Du alles im Kontext vorhanden ist.

            Die JSONATA Doku insgesamt - mit dem tollen Übungsfenster gibts hier: https://docs.jsonata.org/overview

            Falls Du Dich da einarbeitest helfe ich Dir gerne - habe da auch mit jemand schon Übungen gemacht. Dann musst Dir halt Zeit nehmen.

            Du siehst ja ich habe es auch ohne Programmieren gemacht und ich kann DICH nur ermutigen NICHT zu programmieren, sondern weiterhin einzelne Nodes zu nutzen. Nur so nutzt Du die Möglichkeiten von NodeRed. Also alles richtig gemacht.

            Im Februar 2023 habe ich mit einem Forumsteilnehmer ein paar JSONATA Übungen gemacht. Die kannst Du ja mal versuchen nachzuvollziehen: https://forum.iobroker.net/post/943407

            Ansonsten kann ich Dir die Tutorials von Steve empfehlen - ganz allgemein - die Grundlagen beherrschst Du schon: https://stevesnoderedguide.com/

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

              @mickym
              für was war der Filter?
              hab den jetzt entfernt sonst hat der shelly kurz Ein und gleich wieder ausgeschaltet.
              die zweite Verzögerung ist das als erstes die Poolpumpe ausgeht und dann die Wärmepumpe.
              Ist das so ok?

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

                @1984chris Der Filter verhindert eigentlich, dass gleiche Nachrichten mehrfach geschickt werden. Deswegen glaube ich nicht, dass der Filter für das Ein- und Ausschalten verantwortlich war. Da musst Du woanders suchen, woher das kommt. Klar kannst du die Delay Nodes in Serie schalten und den Reset gleichzeitig an beide Delays schicken.

                Generell empfiehlt sich eigentlich neben einer Verzögerung nicht bei absoluten Werten zu schalten und eine gewisse Hysterese einzubauen.

                1 Reply Last reply Reply Quote 0
                • 1
                  1984chris last edited by

                  Hallo

                  was meinst du mit Kontext gespeichert? hab google schon bemüht aber nicht gefunden.

                  LG CHristoph

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

                    @1984chris Na Du hast doch alles aus den Inject Nodes in Variablen gespeichert (in globale). Es gibt Variablen die haben Gültigkeit in einer Function Node, in einem Flow, oder global in allen Flows.

                    Sehen kannst Du diese Variablen alle im Kontextfenster.

                    1c849485-0a3e-4978-8aef-c67ab1131628-image.png

                    Und warum Du nichts gefunden hast, verstehe ich nicht. Dem Kontext wurde in der Originaldokumentation sogar ein eigenen Kapitel gewidmet: https://nodered.org/docs/user-guide/context

                    Diese Seite enthält sogar ein Video dazu - allerdings in Englisch.

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

                      @mickym
                      habe jsonata kontext speichern eigegeben......

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

                        @1984chris sagte in Function Node welche zwei Werte vergleicht:

                        @mickym
                        habe jsonata kontext speichern eigegeben......

                        In der offiziellen JSONATA Doku findest Du nichts zum Kontext, da JSONATA unter NodeRed ein paar NodeRed spezifische Funktionen hat. Die findest du wenn Du in einer ChangeNode - den JSONATA Editor öffnest.

                        6d492562-6c56-4150-9603-f65c484fbfc5-image.png

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

                          @mickym
                          für was speichert man die Werte im Kontext?
                          die Und -funktion verstehe ich auch nicht....

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

                            @1984chris sagte in Function Node welche zwei Werte vergleicht:

                            für was speichert man die Werte im Kontext?

                            Also insgesamt laufen die Nachrichtenobjekte ja zeitlich nicht synchronisiert von einer Node zur nächsten.
                            9de30e56-490d-4f5f-bee9-8a4b35b988c4-image.png

                            Wenn Du in einer Inject Node drückst läuft das Nachrichtenobjekt ja schon los - auch wenn Du noch keine andere Inject Node gedrückt hast.
                            Du hast ja auch bei Deinem Flow im Kontext gespeichert und alles in das Nachrichtenobjekt aufgenommen.

                            In meinem Flow habe ich das nicht gemacht, sondern direkt die Flowvariablen abgefragt - und die stehen Dir ja zeitlich unbegrenzt und nicht nur in einem Nachrichtenobjekt zur Verfügung

                            Wenn Du Dir meine switch Nodes anschaust, dann schaue ich gar nicht die Werte im Nachrichtenobjekt nach, sondern im flow Kontext.

                            f4ffc7d6-cdb7-4c69-a29e-5b6e8fc2bfca-image.png

                            die Und -funktion verstehe ich auch nicht....

                            Hier prüfe ich einfach die Eigenschaften des Objektes ab mit der $reduce Funktion.
                            Diese ist wiederum hier beschrieben:

                            a4aa3ebc-8374-4ed1-ab58-d2832784b0f6-image.png

                            https://docs.jsonata.org/higher-order-functions#reduce

                            45dad744-140f-42e8-a1e5-fc387005464e-image.png

                            Der erste Parameter ist ein Array und das Erzeuge ich indem ich sage, egal welche Eigenschaften mein Objekt hat - erzeuge daraus ein Array.

                            Wie Du siehst
                            7c7224d9-009a-456f-bb50-ded3c366882d-image.png

                            wenn ich direkt ein Debug Node dahinter setze sehe ich ein Objekt, das für jede Eigenschaft true oder false liefert, je nachdem ob der Kontext definiert wurde.

                            Wenn Du das in den JSONATA Exciser eingibst, dann sieht das so aus und Du siehst mit payload.* erzeuge ich ein Array mit allen Parametern,

                            4dd5ffa9-5fee-4b53-9ea1-c27eee9efbdc-image.png

                            Dieses Array ergibt ein true, wenn alle Werte true sind.

                            Das mache ich mit dem 2. Parameter der $reduce Funktion:

                            839df199-d604-462c-8274-7dec658d6f99-image.png

                            Diese Funktion geht durch das Array und akkumuliert alles in der 1. Variable bei mir $i und $j ist der Wert bei Durchgehen des Arrays.

                            Also bei einem Array

                            [
                              true,
                              true,
                              true
                            ]
                            

                            Ist $i undefiniert und $j = true (theoretisch kann man mit $i den Initialwert auch noch vorbelegen). In dem Fall gibt $i als funktion von true and true immer noch true. Nur wenn ein Wert falsch ist, wird der gesamte Wert falsch.

                            Probiere es einfach aus, indem Du im linken Fenster einen Wert auf false setzt.

                            https://try.jsonata.org/bzBaWUU8r

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

                              @mickym
                              Bin jetzt noch auf ein Problem gekommen wenn ich Jetzt PV Erzeugung 2500W habe soll die Wärmepumpe einschalten das passt ja aber wenn ich jetzt z.b den Trockner einachalte der hat ja auch ca. 2300W und mehr dann habe ich ja wieder Bezug.
                              Wie kann ich das lösen??
                              Es wird immer komplizierter...

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

                                @1984chris Ich kenne leider den gesamten Flow - Du hast ja bis jetzt nur mit Inject Nodes getestet nicht.

                                Ich würde halt jegliche Einspeisung und jeglichen Verbrauch in einer Variable sammeln und nur die gesammelten Werte im Flow verwenden. Sprich wenn Du 2500W Erzeuging hast und 2300W Verbrauch, dann hast Du ja netto nur 200W Erzeugung und das müsste ja dann die Basis für deinen Flow sein.

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

                                  @mickym
                                  aber der Verbrauch steigt ja wenn ich die Wärmepumpe einschalte....

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

                                    @1984chris Na ja stimmt - ändert aber nichts an meiner Aussage.

                                    Du willst das die Wärmepumpe nur läuft wenn die Nettoerzeugung (also ohne Wärmepumpe über 2500 ist). Da aber wenn Du den Trockner einschaltest nur 200 W übrig bleiben, würde die Wärmepumpe beim Einschalten des Trockners wieder abgeschaltet, das ist doch richtig?

                                    Die Wärmepumpe selbst darfst natürlich nicht mitrechnen.

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

                                      @mickym
                                      ja genau.

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

                                        @1984chris Deswegen sammel alle Verbräuche. Zieh den Verbrauch (ohne Wärmepumpe) von der Erzeugung ab und nur wenn dann über 2500 W übrig bleiben, wird die Wärmepumpe eingeschaltet.

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

                                          @mickym
                                          könntest du mir ein BeispielFlow machen?

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

                                            @1984chris So ich habe noch den Haken bei der Filter Node rausgemacht. Der war fehlerhaft. Ansonsten hier nun der erweiterte Flow.

                                            45344eb8-d8a1-4e69-96c7-e5a0fed9c19f-image.png

                                            Durch die Debug Nodes siehst Du nun immer die aktuelle Erzeugung und die Summe des Verbrauchs

                                            Hier der Import:

                                            [{"id":"a86c1f1e4b75e441","type":"inject","z":"517cd16e4d7e6ae4","name":"","props":[{"p":"payload"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"81","payloadType":"num","x":150,"y":3720,"wires":[["494bb9361ae7bea3"]]},{"id":"f18c81168d9f50a0","type":"inject","z":"517cd16e4d7e6ae4","name":"","props":[{"p":"payload"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"2600","payloadType":"num","x":150,"y":3580,"wires":[["6fa8637750ac1054"]]},{"id":"a3d2d88cd6708218","type":"inject","z":"517cd16e4d7e6ae4","name":"","props":[{"p":"payload"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"79","payloadType":"num","x":150,"y":3760,"wires":[["494bb9361ae7bea3"]]},{"id":"f3d26ec9c8d67465","type":"inject","z":"517cd16e4d7e6ae4","name":"","props":[{"p":"payload"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"2300","payloadType":"num","x":150,"y":3620,"wires":[["6fa8637750ac1054"]]},{"id":"84b2fa38187ff34f","type":"inject","z":"517cd16e4d7e6ae4","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"AutoEin","payload":"AutoEin","payloadType":"str","x":140,"y":3480,"wires":[["5e6eefda3fb81cfd"]]},{"id":"eba9ab8e96ae87e8","type":"inject","z":"517cd16e4d7e6ae4","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"AutoAus","payloadType":"str","x":160,"y":3520,"wires":[["5e6eefda3fb81cfd"]]},{"id":"5e6eefda3fb81cfd","type":"change","z":"517cd16e4d7e6ae4","name":"","rules":[{"t":"set","p":"AutoEin","pt":"flow","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":370,"y":3500,"wires":[["043e832f297c9831"]]},{"id":"6fa8637750ac1054","type":"change","z":"517cd16e4d7e6ae4","name":"","rules":[{"t":"set","p":"Einspeisung","pt":"flow","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":360,"y":3600,"wires":[["043e832f297c9831","ed14cc2d24f3ff16"]]},{"id":"494bb9361ae7bea3","type":"change","z":"517cd16e4d7e6ae4","name":"","rules":[{"t":"set","p":"SOC","pt":"flow","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":360,"y":3700,"wires":[["043e832f297c9831"]]},{"id":"c9bdbf8b0e1b8b42","type":"change","z":"517cd16e4d7e6ae4","name":"","rules":[{"t":"set","p":"payload","pt":"msg","to":"{\t   \"AutoEin\":$exists($flowContext(\"AutoEin\")),\t   \"Einspeisung\":$exists($flowContext(\"Einspeisung\")),\t   \"SOC\":$exists($flowContext(\"SOC\")),\t   \"Verbrauch\": $exists($flowContext(\"SOC\"))\t}","tot":"jsonata"}],"action":"","property":"","from":"","to":"","reg":false,"x":930,"y":3600,"wires":[["9367f9f7.8f5708","3a39b9030c5759fa"]]},{"id":"2975f91defeba563","type":"debug","z":"517cd16e4d7e6ae4","name":"Alle Parameter gesetzt?","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","statusVal":"","statusType":"auto","x":1410,"y":3540,"wires":[]},{"id":"9367f9f7.8f5708","type":"switch","z":"517cd16e4d7e6ae4","name":"AND?","property":"$reduce(payload.*,function($i, $j){$i and $j})","propertyType":"jsonata","rules":[{"t":"true"}],"checkall":"true","repair":false,"outputs":1,"x":1110,"y":3600,"wires":[["2975f91defeba563","c6ee18440c5ede12"]],"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":"45a1bb09159cf684","type":"switch","z":"517cd16e4d7e6ae4","name":"SOC > 80%","property":"SOC","propertyType":"flow","rules":[{"t":"gt","v":"80","vt":"num"},{"t":"else"}],"checkall":"true","repair":false,"outputs":2,"x":1810,"y":3580,"wires":[["55afcaa9b715c923","e6bff6b181617360"],["a24a10d67adf7325"]]},{"id":"5192b4bc40dd7659","type":"switch","z":"517cd16e4d7e6ae4","name":"Überschuss > 2500W","property":"$flowContext(\"Einspeisung\") - $flowContext(\"Verbrauch\")\t\t","propertyType":"jsonata","rules":[{"t":"gt","v":"2500","vt":"num"},{"t":"else"}],"checkall":"true","repair":false,"outputs":2,"x":1540,"y":3580,"wires":[["45a1bb09159cf684"],["0f2c3c5c8743b77e"]]},{"id":"f558e9a1afff1836","type":"debug","z":"517cd16e4d7e6ae4","name":"Ergebnis","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","statusVal":"","statusType":"auto","x":2820,"y":3560,"wires":[]},{"id":"c6ee18440c5ede12","type":"switch","z":"517cd16e4d7e6ae4","name":"Auto Ein/Aus","property":"AutoEin","propertyType":"flow","rules":[{"t":"cont","v":"AutoEin","vt":"str"},{"t":"else"}],"checkall":"true","repair":false,"outputs":2,"x":1330,"y":3600,"wires":[["5192b4bc40dd7659"],["473eacb13a6cb11c"]]},{"id":"5d671131260cc2d4","type":"change","z":"517cd16e4d7e6ae4","name":"Schalter Aus","rules":[{"t":"set","p":"payload","pt":"msg","to":"Pumpe Aus 0","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":2430,"y":3660,"wires":[["ddf39dae01705e59"]]},{"id":"856ab41216e0c0af","type":"delay","z":"517cd16e4d7e6ae4","name":"","pauseType":"delay","timeout":"5","timeoutUnits":"seconds","rate":"1","nbRateUnits":"1","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":false,"allowrate":false,"outputs":1,"x":2240,"y":3660,"wires":[["5d671131260cc2d4"]]},{"id":"55afcaa9b715c923","type":"change","z":"517cd16e4d7e6ae4","name":"Schalter Ein","rules":[{"t":"set","p":"payload","pt":"msg","to":"Pumpe Ein 1","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":2030,"y":3560,"wires":[["ddf39dae01705e59"]]},{"id":"e6bff6b181617360","type":"change","z":"517cd16e4d7e6ae4","name":"","rules":[{"t":"set","p":"reset","pt":"msg","to":"true","tot":"bool"}],"action":"","property":"","from":"","to":"","reg":false,"x":2040,"y":3600,"wires":[["856ab41216e0c0af"]]},{"id":"19225af3a1bf8b1a","type":"rbe","z":"517cd16e4d7e6ae4","name":"","func":"rbe","gap":"","start":"","inout":"out","septopics":false,"property":"payload","topi":"topic","x":2650,"y":3560,"wires":[["f558e9a1afff1836"]]},{"id":"9685a44b6acadc85","type":"inject","z":"517cd16e4d7e6ae4","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"Verbraucher 1","payload":"60","payloadType":"num","x":180,"y":3820,"wires":[["6236f30557c7e780"]]},{"id":"3a39b9030c5759fa","type":"debug","z":"517cd16e4d7e6ae4","name":"Alle Parameter","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","statusVal":"","statusType":"auto","x":1140,"y":3540,"wires":[]},{"id":"7971d5242a5ea489","type":"inject","z":"517cd16e4d7e6ae4","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"Verbraucher 2","payload":"100","payloadType":"num","x":170,"y":3900,"wires":[["6236f30557c7e780"]]},{"id":"7c3015bff0b30e2e","type":"inject","z":"517cd16e4d7e6ae4","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"Verbraucher 3","payload":"2300","payloadType":"num","x":170,"y":3980,"wires":[["6236f30557c7e780"]]},{"id":"a3f8d990d290d69d","type":"join","z":"517cd16e4d7e6ae4","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":410,"y":3900,"wires":[["edaa035f0714e9aa"]]},{"id":"edaa035f0714e9aa","type":"change","z":"517cd16e4d7e6ae4","name":"Summe Verbrauch","rules":[{"t":"set","p":"payload","pt":"msg","to":"$sum(payload.*)","tot":"jsonata"},{"t":"set","p":"Verbrauch","pt":"flow","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":590,"y":3900,"wires":[["cf8c319f66d88019","c9bdbf8b0e1b8b42"]]},{"id":"b29693a62628fd9f","type":"inject","z":"517cd16e4d7e6ae4","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"Verbraucher 1","payload":"0","payloadType":"num","x":180,"y":3860,"wires":[["6236f30557c7e780"]]},{"id":"f548db43288fcfb0","type":"inject","z":"517cd16e4d7e6ae4","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"Verbraucher 2","payload":"0","payloadType":"num","x":180,"y":3940,"wires":[["6236f30557c7e780"]]},{"id":"3c6178107678bdff","type":"inject","z":"517cd16e4d7e6ae4","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"Verbraucher 3","payload":"0","payloadType":"num","x":180,"y":4020,"wires":[["6236f30557c7e780"]]},{"id":"cf8c319f66d88019","type":"debug","z":"517cd16e4d7e6ae4","name":"Summe Verbrauch","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","statusVal":"","statusType":"auto","x":830,"y":3900,"wires":[]},{"id":"43328f2d1b31cb20","type":"inject","z":"517cd16e4d7e6ae4","name":"","props":[{"p":"payload"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"4500","payloadType":"num","x":150,"y":3660,"wires":[["6fa8637750ac1054"]]},{"id":"ed14cc2d24f3ff16","type":"debug","z":"517cd16e4d7e6ae4","name":"Einspeisung","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","statusVal":"","statusType":"auto","x":610,"y":3660,"wires":[]},{"id":"a24a10d67adf7325","type":"junction","z":"517cd16e4d7e6ae4","x":1960,"y":3660,"wires":[["856ab41216e0c0af"]]},{"id":"0f2c3c5c8743b77e","type":"junction","z":"517cd16e4d7e6ae4","x":1720,"y":3660,"wires":[["a24a10d67adf7325"]]},{"id":"473eacb13a6cb11c","type":"junction","z":"517cd16e4d7e6ae4","x":1440,"y":3660,"wires":[["0f2c3c5c8743b77e"]]},{"id":"ddf39dae01705e59","type":"junction","z":"517cd16e4d7e6ae4","x":2540,"y":3560,"wires":[["19225af3a1bf8b1a"]]},{"id":"6236f30557c7e780","type":"junction","z":"517cd16e4d7e6ae4","x":340,"y":3900,"wires":[["a3f8d990d290d69d"]]},{"id":"043e832f297c9831","type":"junction","z":"517cd16e4d7e6ae4","x":560,"y":3600,"wires":[["c9bdbf8b0e1b8b42"]]}]
                                            

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

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            960
                                            Online

                                            31.7k
                                            Users

                                            79.7k
                                            Topics

                                            1.3m
                                            Posts

                                            5
                                            207
                                            19058
                                            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