NEWS
Aus sekündlichen Leistungsdaten Minutendurchschnitt bilden
-
@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
-
@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:
-
@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 -
@ente34 sagte: Setzt das Script nicht eine konstante Abtastung voraus?
Ja, steht doch in der Überschrift des Themas.
-
@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 aufsummierenGuter 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?
-
@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.
-
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 ...
-
@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; });
-
@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 ...
-
@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.