Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Aus sekündlichen Leistungsdaten Minutendurchschnitt bilden

    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

    Aus sekündlichen Leistungsdaten Minutendurchschnitt bilden

    This topic has been deleted. Only users with topic management privileges can see it.
    • frank2604
      frank2604 @paul53 last edited by

      @paul53 sagte in Aus sekündlichen Leistungsdaten Minutendurchschnitt bilden:

      @frank2604 sagte: Holt es sich die Daten aus der Historisierung?

      Welches Script?

      Ich hatte das hier gefunden: Gleitender Durchschnitt, Min., Max. über def. Zeitraum

      @frank2604 sagte in Aus sekündlichen Leistungsdaten Minutendurchschnitt bilden:

      Was ist, wenn das Skript mal nicht läuft?

      Weshalb sollte es mal nicht laufen ?

      Gute Frage. Wartungsarbeiten, Skript-Adapter gestoppt

      paul53 1 Reply Last reply Reply Quote 0
      • paul53
        paul53 @frank2604 last edited by

        @frank2604 sagte: Ich hatte das hier gefunden:

        Der gleitende Durchschnitt ist zu komplex und wird nicht benötigt, wenn jede Minute ein Mittelwert gebildet werden soll. Es geht recht einfach:

        Bild_2021-02-24_181323.png

        E 1 Reply Last reply Reply Quote 0
        • E
          ente34 @paul53 last edited by

          @paul53
          Setzt das Script nicht eine konstante Abtastung voraus?
          Andernfalls müsste man sich die Zeitstempel merken und das Produkt aus Zeit und Wert aufsummieren

          paul53 frank2604 3 Replies Last reply Reply Quote 0
          • paul53
            paul53 @ente34 last edited by

            @ente34 sagte: Setzt das Script nicht eine konstante Abtastung voraus?

            Ja, steht doch in der Überschrift des Themas.

            1 Reply Last reply Reply Quote 0
            • frank2604
              frank2604 @ente34 last edited by

              @ente34 sagte in Aus sekündlichen Leistungsdaten Minutendurchschnitt bilden:

              @paul53
              Setzt das Script nicht eine konstante Abtastung voraus?
              Andernfalls müsste man sich die Zeitstempel merken und das Produkt aus Zeit und Wert aufsummieren

              Guter Punkt. Der Modus Adapter fragt konstant jede Sekunde ab. Eigentlich sollte der Trigger "wurde aktualisiert" auch bei unveränderten Werten reagieren. Alternativ könnte ich auch hier einen CRON-Zeitplan mit sekündlicher Ausführung nehmen?

              1 Reply Last reply Reply Quote 0
              • paul53
                paul53 @ente34 last edited by paul53

                @ente34 sagte: Andernfalls müsste man sich die Zeitstempel merken und das Produkt aus Zeit und Wert aufsummieren

                Das wird bereits gemacht:

                @frank2604 sagte in Aus sekündlichen Leistungsdaten Minutendurchschnitt bilden:

                daraus mittels Skript die Energie (Wh) berechne,

                Man kann auch den Energiewert verwenden, um daraus jede Minute den Mittelwert der Leistung zu ermitteln; am besten im gleichen Script, da dort sicherlich die ungerundeten Werte zur Verfügung stehen.

                frank2604 1 Reply Last reply Reply Quote 0
                • frank2604
                  frank2604 @paul53 last edited by

                  @paul53

                  Zunächst einmal vielen Dank für die Idee mit dem Blockly-Skript. Das funktioniert schon mal prima. Mit 'Liste' hatte ich bisher noch nicht gearbeitet. Hatte keine Ahnung, was man damit anfangen kann 👍. Wenn ich das für alle DP machen möchte, müsste ich für jeden ein Skript anlegen, richtig?

                  Zur Idee mit der Rückrechnung aus der Energie. Hier mal der Ausschnitt aus dem JS-Skript für einen DP:

                  // Datenpunkte für die QUELLEN (Leistung in W) in Konstante schreiben
                   const idNetzbezugW             = 'javascript.0.Strom.Netzbezug.Leistung'/*Netzbezug Leistung*/
                  
                   // Datenpunkte der ZIELE (Energie in Wh) in Konstante schreiben
                   const idNetzbezugWh           = 'javascript.0.Strom.Netzbezug.Fortlaufend'/*Netzbezug fortlaufend*/
                  
                  // Variablen für die Fortschreibung der Energie definieren und mit dem letzen Wert füllen, falls Skript gestopt wurde
                   var energyNetzbezug            = getState("javascript.0.Strom.Netzbezug.Fortlaufend").val;
                  
                   // Berechnung durchführen und Werte in Ziel-Datenpunkte schreiben
                   on({ id: idNetzbezugW }, function (dp) {
                       energyNetzbezug = energyNetzbezug + dp.oldState.val * (dp.state.ts - dp.oldState.ts) / 3600000; // Wh
                       setState(idNetzbezugWh, Math.round(energyNetzbezug * 1000) / 1000 , true); // Wh gerundet auf 3 Nachkommastellen
                  

                  Wie würdest Du das mit der Berechnung für dem Minutendurchschnitt der Leistung machen? Sorry, bin nicht so fit in JS und habe mir das obige auch nur zusammengesucht ...😁

                  paul53 1 Reply Last reply Reply Quote 0
                  • paul53
                    paul53 @frank2604 last edited by paul53

                    @frank2604 sagte: Wie würdest Du das mit der Berechnung für dem Minutendurchschnitt der Leistung machen?

                    Ergänzen:

                    var Wh;
                    schedule('* * * * *', function() {
                        if(Wh) {
                            let mittel = 60 * (energyNetzbezug - Wh);
                            setState(idMittel, Math.round(mittel), true);
                        }
                        Wh = energyNetzbezug;
                    });
                    
                    E 1 Reply Last reply Reply Quote 0
                    • E
                      ente34 @paul53 last edited by

                      @paul53
                      Wäre es nicht ressourcen-schonender, man würde die Werte gleich aufsummieren?
                      Man bräucht dann nur einen Zähler+Summe pro Energiewert.
                      Das würden vermutlich auch den Garbage Collector etwas beruhigen.
                      Ich bin allerdings kein Javascript Experte...
                      Und wenn man im Hinterkopf behält, dass @frank2604 20 Werte mitteln will, würdest Du dann 20 Trigger erstellen oder lieber einen sekündlichen Zeitplan, der dann alle Werte abklappert?

                      Eigentlich ein ganz spannendes Projekt ...

                      paul53 1 Reply Last reply Reply Quote 0
                      • paul53
                        paul53 @ente34 last edited by

                        @ente34 sagte: würdest Du dann 20 Trigger erstellen oder lieber einen sekündlichen Zeitplan, der dann alle Werte abklappert?

                        Wenn alle Werte in einem Script vorhanden sind, würde ich nur einen Minuten-Zeitplan verwenden.
                        Da die Wh im Datenpunkt offenbar auf 3 Nachkommastellen gerundet sind - was ungewöhnlich ist, kann man auch in einem getrennten Skript alle Datenpunkte abklappern.

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

                        Support us

                        ioBroker
                        Community Adapters
                        Donate

                        397
                        Online

                        31.9k
                        Users

                        80.2k
                        Topics

                        1.3m
                        Posts

                        blockly javascript
                        3
                        12
                        475
                        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