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. nodeRed - Verfügbare Leistung berechnen

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    nodeRed - Verfügbare Leistung berechnen

    This topic has been deleted. Only users with topic management privileges can see it.
    • H
      HomeSweetHome last edited by

      Hallo,

      eine Frage zu nodeRed. Habe den NodeRed Adapter im Einsatz und erfasse über ioBroker die Daten meiner PV-Anlage und die Daten der Wallbox. Nun möchte ich den Heizstab einer Warmwasser Wärmepumpe aktivieren/deaktivieren. Dafür habe ich folge Infos und Logik geplant.
      fda18525-2a88-4f78-ab14-2fc3007671f8-grafik.png
      Habe die PV-Leistung, den Verbrauch und die Leistung über die Wallbox, sowie den Ladestand meiner Batterie.

      Der Funktion Node soll nun 2 Ergebnisse liefern
      Überschuss Wert p_Ueberschuss = p_PC-Anlage - p_Load - p_Wallobox und ein Wert if( ( v_Battery > 10% )and( p_PC-Anlage - p_Load - p_Wallobox>0 ){ b_Ueberschuss=1 }else{ b_Ueberschuss=0 }

      Wie kann ich dies am einfachsten umsetzten?

      Danke und Gruß homeSweethome

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

        @homesweethome Darf ich fragen, warum du mit function nodes und Java Script programmieren willsr, anstatt die Logik in NodeRed abzubilden?

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

          @mickym,
          muss kein function node sein, dachte das ist die einfachste Lösung, bin offen für jegliche Lösung. Möchte gerne als Anfänger dazulernen 😉
          Gruss

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

            @homesweethome Na wenn Du gerne programmierst ohne die Vorteile einer grafischen Programmierung zu nutzen - dann kannst Du natürlich jeden Flow in eine function Node packen.

            Aber Du gehst in meinen Augen die Sache falsch an. Was soll denn den Flow triggern?
            Ändert sich ein Wert oder soll bei jeder Änderung von allen 4 Werten getriggert werden?
            Wann soll der Heizstab aktiviert oder deaktiviert werden?

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

              @mickym
              die Werte ändern sich zu unterschiedlichen Zeitpunkten und die WP bzw. der Heizstab soll über die beschriebene Logik aktiviert werden "b_Ueberschuss=1". Die Werte kommen vom Fronius Adapter sowie Fronius-Wattpilot Adapter alle 10 Sekunden
              Gruss

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

                @homesweethome sagte in nodeRed - Verfügbare Leistung berechnen:

                @mickym
                die Werte ändern sich zu unterschiedlichen Zeitpunkten und die WP bzw. der Heizstab soll über die beschriebene Logik aktiviert werden "b_Ueberschuss=1"
                Gruss

                Dannn habe ich folgende Frage. Was soll denn die 1. Berechnung, wenn letztlich nur diese Berechnung

                 if( ( v_Battery > 10% )and( p_PC-Anlage - p_Load - p_Wallobox>0 ){ b_Ueberschuss=1 }else{ b_Ueberschuss=0 }
                

                darüber entscheidet, ob eingeschaltet wird oder nicht, dann brauch ich das andere nicht oder? - Der p_Überschuss ist doch das was da in Klammer ist oder?

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

                  @mickym
                  der Wert p_Ueberschuss ist für die Anzeige in VIS, nicht zur Steuerung der WP/Heizstab
                  Gruss

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

                    @homesweethome sagte in nodeRed - Verfügbare Leistung berechnen:

                    @mickym
                    der Wert p_Ueberschuss ist für die Anzeige in VIS, nicht zur Steuerung der WP/Heizstab
                    Gruss

                    Ah sehr gut - nun beginnen wir das ganze schon aufzudröseln. Das heißt Du möchtest den Wert p_Überschuss in einen Datenpunkt schreiben, den Du dann über die VIS darstellen kannst. Gleichzeitig aber willst Du diesen Wert aber auch zur Steuerung Deines Heizstabes verwenden.

                    Das ganze soll alle 10 Sekunden erfolgen, da in diesem Intervall einer der 3 Datenpunkte aktualisiert wird.

                    Ich sehe aber um das Umzusetzen eher folgende Logik:

                    • Die Überschussrechnung folgt erst mal getrennt von der Rechnung der Steuerung des Heizstabes. Warum - weil sich, wenn sich der Ladezustand der Batterie nicht ändert, es Unsinn die Aktivierung des Heizstabes neu zu berechnen. Sprich wenn der Ladeszustand der Batterie unter 10% ist, dann ist es egal was für ein Überschuss da ist.
                    • Oder solange kein Überschuss da ist, ist auch der Zustand der Batterie unwichtig.

                    Also würde ich erst mal den Überschuss berechnen und diesen Abspeichern, dass Du ihn anzeigen kannst und die Steuerung des Heizstabes über den Ladezustand der Batterie zu triggern. Einverstanden?

                    Wenn ja - dann leg Dir unter 0_userdata.0 einen Datenpunkt an, in den wir den Überschuss abspeichern, den wir sowohl zur Anzeige, also auch zur Steuerung des Heizstabes verwenden.
                    Da Deine Anlage die anderen 3 Datenpunkte alle 10 Sekunden beschreibt, werden wir die pV-Anlage zur Berechnung des Überschusses triggern lassen.

                    Wenn Du soweit bist oder Fragen hast, dann melde Dich halt.

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

                      @mickym

                      Guten Morgen, hier fängt es schon an. Ich denke ich habe die Logik von NodeRed noch nicht verinnerlicht. NodeRed scheint strickt Event-getriggert und nicht zustandsgesteuert zu sein. Es muss wohl immer ein Wechsel einer Größe vorliegen. Sie dann die anderen Größen am selben Node noch aktuell? Gespeichert?

                      Zu deinem Vorschlag. "Nummern-Zustand" habe ich unter "0_userdata.0 " angelegt. Wie führe ich doch die Größen zusammen und berechne diesen einfachen Term?
                      Gruß

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

                        @homesweethome sagte in nodeRed - Verfügbare Leistung berechnen:

                        NodeRed scheint strickt Event-getriggert und nicht zustandsgesteuert zu sein.

                        NodeRed, wie auch alle anderen Logikmaschinen im iobroker haben alle die gleichen Trigger. NodeRed hat sogar noch einen mehr, da Du mit Inject-Nodes manuell einen Flow an beliebigen Stellen antriggern kannst und nicht nur insgesamt Stoppen und Starten kannst.

                        Grundsätzlich stehen Dir also alle Möglichkeiten zur Verfügung:

                        1. Manuell via Inject Nodes
                        2. Aktualisierung eines Datenpunktes im iobroker (mit oder ohne Wertänderung)
                        3. Nach dem Start von NodeRed
                        4. Durch zeitgesteuerte Ereignisse.

                        Hier unterscheidet sich NodeRed nicht von allen anderen Logikmaschinen wie Blockly, JS und sonstige.

                        Meine Empfehlung ist immer grundsätzlicher Natur - und sollte Dir einfach helfen. Ich versuche immer durch Datenpunktaktualisierungen triggern zu lassen, als sinnlos in best. Zeitabständen zu pollen. Ausserdem versuche ich unnötige Berechnungen zu vermeiden, wenn es sich vermeiden lässt.

                        Grundsätzlich ist es so, dass Du wenn Du mehrere Werte in Deinem Flow verarbeiten willst, du diese zusammenführen musst, damit Du sie zum Zeitpunkt zur Verfügung hast. Dabei stehen Dir grundsätzlich 2 Methoden zur Verfügung:

                        1. Du speicherst Werte aus den benötigten Datenpunkten in NodeRed in Variablen. Dabei steht Dir folgende Gültigkeit oder Kontext zur Verfügung:
                        • In Functionnodes im sogenannten Nodekontext
                        • In einem Flow - im Flowkontext
                        • Global - Überall.

                        Die Variablen kannst Du Dir über das Kontextfenster anschauen:
                        dff898a3-ac7f-46f5-b5f7-690661a651f6-image.png

                        1. Oder Du nimmst alle zur Berechnung benötigten Wert in Dein Nachrichtenobjekt auf. Diese Methode würde ich Dir in diesem Fall mal als Erstes zeigen.

                        Da bei Dir eh alles, alle 10 s getriggert wird, würde ich in diesem Fall die Leistung der PV-Anlagen mit einer iobroker-IN Node triggern lassen und dann die restlichen beiden Werte (Load und was die Wallbox zieht) auslesen und in das Nachrichtenobjekt aufnehmen. Dabei nutzt Du die iobroker Get Nodes. Darauf achten, dass Du Load und der Wallbox eigene Attribute verpasst, sonst überschreibst Du Dir die payload.

                        Anschließend lässt Du Dir mit einer Debug Node das GESAMTE Nachrichtenobjekt ausgeben und postest es bitte hier in CodeTags, in dem Du auf der obersten Ebene - die Schaltfläche Wert kopieren verwendest und dann hier in CodeTags einstellst.

                        copy path.gif

                        Code-Tags.gif

                        Wenn Du dann soweit bist, werden wir

                        1. Die Berechnung des Überschusses durchführen
                        2. Den Überschuss in eine Flowvariable speichern
                        3. Den Überschuss in dem von Dir erstellten Datenpunkt speichern, damit Du ihn in Deiner VIS anzeigen kannst.

                        Und wenn Du gelernt hast, wie man GRAFISCH mit NodeRed programmiert - können wir immer noch mal deine Methode verwenden und alles in eine Function Node packen und mit Javascript programmieren.

                        Entscheide DU, ob Du hier weitermachen willst, in dem Du auf dieses Posting antwortest.

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

                          @HomeSweetHome

                          Wenn Dir es ALLERDINGS lieber ist und DU nicht lernen willst, wie man mit den GRAFISCH mit den Nodes ein Logik aufbaut und Du lieber mit Javascript codieren willst, dann machen wir hier weiter und schreiben nur Code in die function Node, soweit es geht.
                          In diesem Fall brauchst Du auch nur alle iobroker-IN Nodes mit Deiner function Node verbinden und wir schreiben Code. Können wir auch machen - aber dann verzichtest Du halt auf die Vorteile einer grafischen und logischen Aufschlüsselung Deiner Logik.

                          Als erstes musst Du dann jede payload in Deinem Nodekontext speichern, da Du ja sonst nicht alle Werte zur Verfügung hast. In diesem Fall prüfst Du also das topic und schreibst dann die payload in den entsprechenden Nodekontext.

                          Anschließend liest Du den Kontext wieder in Variablen und prüfst vor der Berechnung, ob auch jede Variable gültige Werte besitzt.

                          Entscheide DU, ob Du hier weitermachen willst, in dem Du auf dieses Posting antwortest.

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

                          Support us

                          ioBroker
                          Community Adapters
                          Donate

                          640
                          Online

                          31.9k
                          Users

                          80.1k
                          Topics

                          1.3m
                          Posts

                          2
                          11
                          355
                          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