Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. JavaScript
    5. E3DC Hauskraftwerk steuern

    NEWS

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    E3DC Hauskraftwerk steuern

    This topic has been deleted. Only users with topic management privileges can see it.
    • A
      ArnoD @smartboart last edited by

      @smartboart

      Super, Danke.👍
      Werde mich am Wochenende mal damit beschäftigen. 🙂

      1 Reply Last reply Reply Quote 0
      • S
        stevie77 @ArnoD last edited by

        @ArnoD sagte in E3DC Hauskraftwerk steuern:

        Warum rechnest du den nicht bei jeder Aktualisierung vom Wert dazu. ?

        Ich vermute mal, dass der Faktor bei einmal einfacher zu bestimmen ist (ist ja auch ein Annäherungsprozess) bzw. ich wollte nicht darüber nachdenken, ob es ungenauer wird, wenn ich jede Sekunde oder bei jeder Modbus-Wertänderung einen Korrekturfaktor anwende (vor allem darf ich ja nicht den Gesamtwert mehrfach multiplizieren, sondern müsste irgendwie an den Wert rankommen, der bei Sourceanalytix addiert wird). Verstehe eh nicht so genau, wie Sourceanalytix genau funktioniert, also wie da die Summe gebildet wird. War ja auch kein Problem seither, als nur einmal am Tag das Diagramm aus dem Wert aufgebaut wurde. Reicht mir auch weiterhin den Korrekturfaktor erst abends anzuwenden, vorher schaue ich sowieso nicht drauf...

        1 Reply Last reply Reply Quote 0
        • A
          ArnoD last edited by

          @smartboart dein upgrade vom Tabellenscript Zählerstände ist mega 🙂
          Würde es dir was ausmachen wenn ich das in das E3DC-Control Script integriere ? oder sollen die beiden lieber eigenständige Scripte bleiben ?
          Man könnte dadurch einen Monatlichen Chron Job reduzieren, da ich den Json String für das Diagramm auch monatlich speichere.

          smartboart 1 Reply Last reply Reply Quote 0
          • A
            ArnoD @stevie77 last edited by

            @stevie77 sagte in E3DC Hauskraftwerk steuern:

            Okay, ich hab' mir jetzt ne Liste angelegt, was ich bei einem Update des Skripts alles ändern muss. Unter anderem ergänze ich das früher vorhandene

            Was musst du noch alles ändern ?
            -Werde die Abfrage um 22 Uhr wieder integrieren, da es für mich keine Rolle spielt ob diese drin ist oder nicht,
            -Ich werde auf Änderungen von beiden Zählerstände (Zähler 0 und 1) reagieren.
            Das mit dem Korrekturfaktor auf die PV-Leistung habe ich mir mal angesehen, ist nicht so einfach wie gedacht.
            Ich müsste mir jedes Mal den alten Wert merken um den Korrekturfaktor nur auf die Differenz zwischen alten und neuen Wert dazu zu rechnen. Das Problem ist das ja eine Änderung bei beiden PV-Zähler zu einer Berechnung führen würde und ich mir die jeweiligen Werte merken müsste.
            Wenn es für dich in Ordnung ist mit dem einmaligen Korrekturfaktor auf das Ist-Ergebnis um 22:00 Uhr, würde ich mir die Arbeit sparen. 🙂

            S 1 Reply Last reply Reply Quote 0
            • smartboart
              smartboart @ArnoD last edited by smartboart

              @ArnoD sagte in E3DC Hauskraftwerk steuern:

              @smartboart dein upgrade vom Tabellenscript Zählerstände ist mega 🙂
              Würde es dir was ausmachen wenn ich das in das E3DC-Control Script integriere ? oder sollen die beiden lieber eigenständige Scripte bleiben ?
              Man könnte dadurch einen Monatlichen Chron Job reduzieren, da ich den Json String für das Diagramm auch monatlich speichere.

              du kannst das gerne integrieren, ich sehe es aber eher als separates script. passt so besser zu meiner organisationsstruktur. Da hat aber jeder seine eigene Ordnung...

              Ich will dir da aber nicht rein reden, das ist ja deine Arbeit hier. Wenn du es drinne haben möchtest, mach es ...

              A 1 Reply Last reply Reply Quote 0
              • A
                ArnoD @smartboart last edited by

                @smartboart
                Ok dann lasse ich die beiden getrennt, Ist wahrscheinlich auch besser zur Fehler Suche.

                1 Reply Last reply Reply Quote 0
                • A
                  ArnoD last edited by

                  @smartboart Habe mal eine Frage 🙂
                  Kann man mit der on() Funktion zwei States überwachen, oder muss ich mir hier was basteln?

                  S smartboart 2 Replies Last reply Reply Quote 0
                  • S
                    stevie77 @ArnoD last edited by

                    @ArnoD sagte in E3DC Hauskraftwerk steuern:

                    Was musst du noch alles ändern ?

                    • evtl. Ersetzen "if (UnloadSoC<50){UnloadSoC=50;}" durch "if (UnloadSoC<60){UnloadSoC=60;}"
                    • Zeile "sUnload[2] = AktSpeicherSoC;" ersetzen durch sUnload[2] = UnloadSoC;
                    • am Ende ergänzen: schedule({hour: 22, minute: 1}, function(){makeJson();});

                    Vielleicht kann man die ersten beiden Zeilen parametrierbar machen. Also die erste ist ja leicht direkt durch eine User-Variable variabel 😉 zu gestalten. Bei der zweiten wäre es eben eine if-Abfrage auf eine vom Benutzer zu setzende Parametereinstellung.

                    -Werde die Abfrage um 22 Uhr wieder integrieren, da es für mich keine Rolle spielt ob diese drin ist oder nicht,
                    -Ich werde auf Änderungen von beiden Zählerstände (Zähler 0 und 1) reagieren.

                    Das wäre schön, dann wird die Liste wieder kürzer.

                    Das mit dem Korrekturfaktor auf die PV-Leistung habe ich mir mal angesehen, ist nicht so einfach wie gedacht.
                    Ich müsste mir jedes Mal den alten Wert merken um den Korrekturfaktor nur auf die Differenz zwischen alten und neuen Wert dazu zu rechnen. Das Problem ist das ja eine Änderung bei beiden PV-Zähler zu einer Berechnung führen würde und ich mir die jeweiligen Werte merken müsste.

                    Genau das war meine Überlegung, weshalb ich das nur einmal am Schluss kurz vor 22 Uhr mache wenn ich sicher sein kann, dass sich der Tageswert nicht mehr ändert.

                    Wenn es für dich in Ordnung ist mit dem einmaligen Korrekturfaktor auf das Ist-Ergebnis um 22:00 Uhr, würde ich mir die Arbeit sparen. 🙂

                    Ja klar, das habe ich sowieso in ein anderes Skript integriert, das läuft mit. Es funktionierte halt nur nicht mehr, weil das Diagramm um 22 Uhr nicht nochmals aktualisiert wurde.

                    1 Reply Last reply Reply Quote 0
                    • S
                      stevie77 @ArnoD last edited by

                      @ArnoD sagte in E3DC Hauskraftwerk steuern:

                      Kann man mit der on() Funktion zwei States überwachen, oder muss ich mir hier was basteln?

                      Das Problem hatte ich auch bei der Berechnung der Gesamtleistung meiner beiden PV-Anlagen als eine kurze Zahl in der immer sichtbaren Statusleiste. Also zwei Trigger für eine Funktion. Ich hab mich dann für folgendes entschieden, was gut funktioniert und recht kurz und unkompliziert ist.

                      on(powerPV1, calculateCompletePVPower);
                      on(powerPV2, calculateCompletePVPower);
                      
                      function calculateCompletePVPower() {...}
                      

                      Falls du noch was kürzeres findest, lass' es mich auch wissen. 🙂

                      1 Reply Last reply Reply Quote 0
                      • A
                        ArnoD last edited by

                        So habe ich es erstmal auch gelöst, habe mich nur gefragt ob es hier nicht bereits ein Workaround gibt, da ich bestimmt nicht der erste bin der das benötigt.
                        Habe aber nur eine Lösung gefunden wie man eine Gruppe triggert oder alle mit der ID .State am ende. Hilft aber in meinem Fall nicht, da beides nicht zutrifft.

                        1 Reply Last reply Reply Quote 0
                        • A
                          ArnoD last edited by

                          Neue Version 0.2.01 hochgeladen.

                          1 Reply Last reply Reply Quote 0
                          • smartboart
                            smartboart @ArnoD last edited by smartboart

                            @ArnoD
                            du kannst das über die enumeration lösen indem du beide states einer Funktion zuordnest oder eben im script über einen funktionsaufruf..

                            z.B:

                            var cacheSelectorState = $('state[state.id=*.STATE](functions="Zaehler")'); // Gewerk Zaehler
                            cacheSelectorState.on(function(obj) { // bei Zustandänderung *.STATE im Gewerk Zaehler
                            if (logging) log('Auslösender Zaehler: ' + obj.id + ': ' + obj.state.val); // Info im Log, welcher Zustand sich geändert hat
                            Berechnen(); // Funktionsaufruf
                            });
                            

                            oder

                            const id1 = '';
                            const id2 = '';
                            
                            on(id1, function(dp) {
                               if (logging) log ('Trigger Zaehler');
                               Berechnen();
                            });
                            
                            on(id2, function(dp) {
                               if (logging) log ('Trigger Zaehler2');
                               Berechnen();
                            
                            function Berechnen(){
                            }
                            
                            
                            A 1 Reply Last reply Reply Quote 0
                            • A
                              ArnoD @smartboart last edited by

                              @smartboart sagte in E3DC Hauskraftwerk steuern:

                              @ArnoD
                              du kannst das über die enumeration lösen indem du beide states einer Funktion zuordnest oder eben im script über einen funktionsaufruf..

                              z.B:

                              var cacheSelectorState = $('state[state.id=*.STATE](functions="Zaehler")'); // Gewerk Zaehler
                              cacheSelectorState.on(function(obj) { // bei Zustandänderung *.STATE im Gewerk Zaehler
                              if (logging) log('Auslösender Zaehler: ' + obj.id + ': ' + obj.state.val); // Info im Log, welcher Zustand sich geändert hat
                              Berechnen(); // Funktionsaufruf
                              });
                              

                              Dieses Beispiel ist interessant.
                              Wie müsste ich die folgenden Programmzeilen umschreiben ?

                              if (existsState(sPvLeistung_kWh)){
                                  on({id: sPvLeistung_kWh,change: "ne"}, function (obj){SummePvLeistung();});
                              }
                              if (existsState(sEinspeiserLeistung_kWh)){
                                  on({id: sEinspeiserLeistung_kWh,change: "ne"}, function (obj){SummePvLeistung();});	
                              }
                              

                              Verstehe die erste Zeile in deinem Beispiel noch nicht ganz.

                              smartboart 1 Reply Last reply Reply Quote 0
                              • smartboart
                                smartboart @ArnoD last edited by

                                @ArnoD
                                wenn ich einen Screenshot von den beiden Objekten aus dem admin bekomme, bastle ich das zusammen.
                                Wie gesagt beide Objekte müssen dann im Admin unter Aufzählungen dem Gewerk Zaehler zugeordnet sein.

                                mit folgendem Script kann man prüfen ob die selektorfunktion funktioniert..

                                const test = $ ('state[state.id=*.STATE](functions=Zaehler)');
                                test.each(function(id,i){
                                log(id);
                                });
                                
                                A 3 Replies Last reply Reply Quote 0
                                • A
                                  ArnoD @smartboart last edited by

                                  @smartboart
                                  Du meinst in dieser Maske ?

                                  bild1.png

                                  smartboart 1 Reply Last reply Reply Quote 0
                                  • A
                                    ArnoD @smartboart last edited by

                                    @smartboart sagte in E3DC Hauskraftwerk steuern:

                                    Wie gesagt beide Objekte müssen dann im Admin unter Aufzählungen dem Gewerk Zaehler zugeordnet sein.

                                    stehe auf dem Schlauch 🙂
                                    Wo kann ich das Objekt dem Gewerk Zaehler zuordnen?

                                    1 Reply Last reply Reply Quote 0
                                    • A
                                      ArnoD @smartboart last edited by

                                      @smartboart

                                      ok, meinst du das ?
                                      funktioniert nur nicht.
                                      bild1.png

                                      smartboart 1 Reply Last reply Reply Quote 0
                                      • smartboart
                                        smartboart @ArnoD last edited by

                                        @ArnoD sagte in E3DC Hauskraftwerk steuern:

                                        @smartboart

                                        ok, meinst du das ?
                                        funktioniert nur nicht.
                                        bild1.png

                                        ja genau da

                                        1 Reply Last reply Reply Quote 0
                                        • smartboart
                                          smartboart @ArnoD last edited by

                                          @ArnoD sagte in E3DC Hauskraftwerk steuern:

                                          @smartboart
                                          Du meinst in dieser Maske ?

                                          bild1.png

                                          ja

                                          smartboart 1 Reply Last reply Reply Quote 0
                                          • smartboart
                                            smartboart @smartboart last edited by

                                            @ und der 2. state?

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

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            711
                                            Online

                                            31.7k
                                            Users

                                            79.8k
                                            Topics

                                            1.3m
                                            Posts

                                            70
                                            3331
                                            1363120
                                            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