Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. PV Überschuss berechnen

    NEWS

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    PV Überschuss berechnen

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

      Nun bei der Fragestellung traue ich mir zu, dass mit allen 3 Logikmaschinen umsetzen so können, nur müsste halt mal der Threadersteller dann hier mal am Ball bleiben und die Datenpunkte konkret benennen - damit man das zusammen durchführen könnte. 😉

      Soviel Blockly und Javascript beherrsche ich auch. 😉

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

        So nachdem sich der TE wieder ewig nicht meldet - habe ich hier mal eine Beispiel gemacht.

        50e874bc-d03f-49d8-87fa-d3435e60a1f5-image.png

        Hier sind also 3 Datenpunkte - die können theoretisch auch irgendwo im System sein, das Ergebnis sollte unter 0_userdata.0 sein.

        Wir gehen also von einer Subtraktion aus:

        Minuend - Subtrahend = Ergebnis
        

        Der Minuend triggert und könnte in dem Fall der aktuelle Stromverbrauch Deines Shellies 3em sein. Der Subtrahend ist also das was Du abziehst in dem Fall die PV Erzeugung - umgekehrt kannst Du es ja dann selbst machen, wenn Du es anders rum brauchst. In Deinem Ergebnis steht also entweder ein Verbrauch (positiver Wert) oder ein Überschuss (negativer Wert). Wie gesagt umdrehen kannst Du es alleine. Keine Ahnung was mehr Sinn macht was triggert. Ich gehe mal vom Verbrauch aus.

        Nun zu den 3 Logikmaschinen:

        1. Node-Red:

        56e66943-19f2-4ddf-a9ee-e13cbf178568-image.png

        Du siehst der Minuend triggert (also stößt den Flow an) - im Status steht immer der aktuelle Wert des Datenpunktes. Dann wird der Subtrahend geholt, gerechnet und das Ergebnis wieder in den Datenpunkt geschrieben.

        1. Blockly

        2e8d1b09-c11b-42e7-9445-20a3a0c0278e-image.png

        Auch hier triggert der Minuend - das Ergebnis wird geschrieben in dem ich den Wert des Subtrahenden hole (blaues Puzzle Wert) und vom Wert des Minuenden (rosa Puzzle Wert) abziehe.

        1. Javascript:
        on({id: "0_userdata.0.Test.Substraktion.Minuend", change: 'any'}, function (obj){
            var minuend = obj.state.val;
            var subtrahend = getState("0_userdata.0.Test.Substraktion.Subtrahend").val;
            
            
            setState('0_userdata.0.Test.Substraktion.Ergebnis', minuend - subtrahend, true);
        })
        

        Auch hier triggert der Minuend mit on(...), der Subtrahend wird mit getState(...) geholt und das Ergebnis mit setState(...) geschrieben.

        So damit hast Du nun 3 Lösungen und kannst Dir überlegen, welches System Du am intuitivsten findest.

        Homoran 1 Reply Last reply Reply Quote 1
        • Homoran
          Homoran Global Moderator Administrators @mickym last edited by Homoran

          @mickym sagte in PV Überschuss berechnen:

          Auch hier triggert der Minuend

          es müssten beide triggern

          @homoran sagte in PV Überschuss berechnen:

          Auf die beiden IDs bei Änderung triggern

          dann kannst du nicht mit '>Wert arbeiten

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

            @homoran Na ich kann auch Lösungen bringen, wo beides triggert - kein Problem. 😉 Das Rechnen bleibt ja das Gleiche. 😉

            Homoran 1 Reply Last reply Reply Quote 1
            • Homoran
              Homoran Global Moderator Administrators @mickym last edited by

              @mickym so war das nicht gemeint!

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

                @homoran sagte in PV Überschuss berechnen:

                @mickym so war das nicht gemeint!

                Was meinst Du dann?

                Homoran 1 Reply Last reply Reply Quote 0
                • Homoran
                  Homoran Global Moderator Administrators @mickym last edited by Homoran

                  @mickym du musst jetzt nichts neues basteln, wäre Luxus, aber das war nicht meine Intention.

                  Da ich vorhin schrieb "auf beides triggern", wollte ich @Stoffsn nur "warnen", dass dann der rote '>Wert Baustein nicht funktioniert.

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

                    @homoran Der rote Baustein enthält immer den Wert des triggers.

                    Homoran 1 Reply Last reply Reply Quote 0
                    • Homoran
                      Homoran Global Moderator Administrators @mickym last edited by Homoran

                      @mickym sagte in PV Überschuss berechnen:

                      @homoran Der rote Baustein enthält immer den Wert des triggers.

                      korrekt!
                      aber wenn du zwei Trigger (via Zahnrad) hast und der Subtrahend triggert.....

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

                        So also das gleiche nochmal mit 2 Triggern - das heißt ich ignoriere den Wert und hole den in jedem Fall.

                        1. NodeRed

                        d8c266f5-3a9b-4452-94f0-98dc255e3847-image.png

                        1. Blockly

                        d839074c-f977-4753-acc4-f2013843a22a-image.png

                        1. Javascript
                        on({id: ["0_userdata.0.Test.Substraktion.Minuend","0_userdata.0.Test.Substraktion.Subtrahend"], change: 'any'}, function (obj){
                            var minuend = getState("0_userdata.0.Test.Substraktion.Minuend").val;
                            var subtrahend = getState("0_userdata.0.Test.Substraktion.Subtrahend").val;
                            
                            
                            setState('0_userdata.0.Test.Substraktion.Ergebnis', minuend - subtrahend, true);
                        })
                        

                        In allenFällen ignorierst Du den Wert des triggers und holst den Wert nochmal neu.

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

                          Ich hab nochmal versucht die Entsprechungen aller 3 Systeme grafisch zu veranschaulichen - die Logik ist ja bei allen 3 Systemen die Gleiche:

                          d44f5f37-dac6-4feb-98ed-e975294981d8-image.png

                          Homoran 1 Reply Last reply Reply Quote 1
                          • Homoran
                            Homoran Global Moderator Administrators @mickym last edited by

                            @mickym dumme Frage:
                            muss man in native js mit var arbeiten?

                            [advanced]
                            in Blockly könnte man das ja auch, macht das Verständnis für Einsteiger aber erst einmal schwieriger.
                            Würde Ressourcen sparen, insbesondere wenn man nur den getrigerten Wert neu einlesen würde
                            [/advanced|

                            paul53 mickym 3 Replies Last reply Reply Quote 0
                            • paul53
                              paul53 @Homoran last edited by

                              @homoran sagte: muss man in native js mit var arbeiten?

                              Nein, die Variablen machen es nur besser lesbar.

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

                                @homoran Nein kannst auch direkt auslesen - wird aber unübersichtlicher. 😉

                                on({id: ["0_userdata.0.Test.Substraktion.Minuend","0_userdata.0.Test.Substraktion.Subtrahend"], change: 'any'}, function (obj){
                                      
                                    setState('0_userdata.0.Test.Substraktion.Ergebnis', getState("0_userdata.0.Test.Substraktion.Minuend").val - getState("0_userdata.0.Test.Substraktion.Subtrahend").val, true);
                                })
                                
                                1 Reply Last reply Reply Quote 0
                                • paul53
                                  paul53 @Homoran last edited by paul53

                                  @homoran
                                  Besserer Stil in JS:

                                  const idMinuend = '0_userdata.0.Test.Substraktion.Minuend';
                                  const idSubtrahend = '0_userdata.0.Test.Substraktion.Subtrahend';
                                  const idErgebnis = '0_userdata.0.Test.Substraktion.Ergebnis';
                                  
                                  on([idMinuend, idSubtrahend], function() {
                                      setState(idErgebnis, getState(idMinuend).val - getState(idSubtrahend).val, true);
                                  });
                                  

                                  orientiert am Blockly mit "wurde geändert".

                                  1 Reply Last reply Reply Quote 0
                                  • S
                                    Stoffsn last edited by

                                    Entschuldigt erstmal für die späte Rückmeldung, aber leider hatte ich heute keine Zeit zum Lesen oder Schreiben. Ich habe die Beispiele jetzt mit Blockly nachgebaut. Funktioniert soweit super, besten Dank.

                                    Ich habe nur ein Problem. Ein Wert wird in KW und einer in Watt gespeichert. Jetzt stimmt die Rechnung natürlich nicht. Kann man die Werte auch irgendwie anpassen?

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

                                      @stoffsn Dann halt den Watt Bereich durch 1000 teilen.

                                      1fa02d8d-4cd5-4fee-8ec3-443ba2d6bb86-image.png

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

                                        @mickym Danke
                                        Es könnte so einfach sein

                                        Homoran 1 Reply Last reply Reply Quote 0
                                        • BananaJoe
                                          BananaJoe Most Active @Stoffsn last edited by BananaJoe

                                          @stoffsn sagte in PV Überschuss berechnen:

                                          Hallo,
                                          Ich logge meinen Stromverbrauch mit einem Shelly 3em. Die PV Erzeugung logge ich über den Datenpunkt aus dem Huawei Fusion Solar Adapter. Ich habe also keinen extra Smartmeter. Kann ich irgendwie aus den beiden Datenpunkten, sprich PV Erzeugung minus Verbrauch, einen Datenpunkt erstellen der mir den aktuellen Überschuss ausgibt. Damit ich dann weitere Geräte bei Überschuss steuern kann. Ich möchte mir eigentlich nicht zusätzlich einen Smartmeter von Huawei kaufen.

                                          Danke

                                          Das mag jetzt banal anmuten ...

                                          Also bei mir zeigt der Shelly 3EM negative Werte an wenn ich Einspeise (=Überschuss), fragt man den über den Shelly-Adapter ab so gibt es auch einen Total / Gesamtwert:

                                          shelly.0.SHEM-3#xxxxxxxxxxxx#1.Total.InstantPower
                                          

                                          Ich verbrate auch den Überschuss und orientiere mich einfach auch nur an diesem Wert ... je nachdem wie hoch der ist schalte ich entsprechende Dinge nach Priorität. Ein wenn der negative Wert hoch genug ist, aus wenn 100 Watt (positiv) wieder überschritten werden.

                                          Homoran 1 Reply Last reply Reply Quote 0
                                          • Homoran
                                            Homoran Global Moderator Administrators @Stoffsn last edited by

                                            @stoffsn sagte in PV Überschuss berechnen:

                                            Es könnte so einfach sein

                                            das ist es!

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

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            922
                                            Online

                                            31.7k
                                            Users

                                            79.8k
                                            Topics

                                            1.3m
                                            Posts

                                            5
                                            51
                                            3110
                                            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