@chemieka:
@a200:
@chemieka schau dir mal mein Script weiter oben. Damit werden datenpunkte für Stunde Tag Woche und Monat erzeugt. `
Das wären dann aber recherische Werte die aus den Momentanwert kommen. Also nicht aus dem Gerät?
Natürlich sehr Schade wenn das so ist. Kannst du kurz schreiben was ich mit dem Script genau machen muss, ich bin bis jetzt mit so etwas nicht in Berührung gekommen. Damit die Daten dann auch representativ sind wie oft müsste ich auslesen lassen? `
@chemieka:
Damit die Daten dann auch representativ sind wie oft müsste ich auslesen lassen? `
- Für stündliche Statistik - 1 x pro Stunde
Für tägliche Statistik - 1 x pro Tag
Für wöchentliche Statistik - 1 x pro Woche
Für monatliche Statistik - 1 x pro Monat

Also nach meinen Informationen, kannst du zwar durch das Blinken verschiedene Werte abrufen, diese werden aber ausschließlich im Display angezeigt und nicht als Datenpaket gesendet.
Jetzt mal zum meinem Skript. Ich erklär das am Beispiel des Tageswertes.
Jeden Tag um 23:59 (Man könnte das auch auf die Spitze treiben und es um 23:59:59 starten) wird der aktueller Gesamtverbrauch in den Datenpunkt "javascript.0.Stromzähler.Hager.tmp.Total-d" gespeichert. Diesen Wert speichere ich persönlich noch in der DB. Muss aber nicht sein. Der Wert Gleichzeitig wird die Differenz zwischen den letzten und dem aktuellen Eintrag in diesem Datenpunkt berechnet. Gesamt(aktuell) - Gesamt(letztens) = Tagesverbrauch. Dieser Tagesverbrauch, als relativer Wert, wird in den Datenpunkt "javascript.0.Stromzähler.Hager.Day" gespeichert.
Das ist Alles. Im ".Total-d" habe ich den absoluten Wert des Zählers am Ende jeden Tages. Was mir auch erlaubt nachträglich Berechnungen durchzuführen).
Im ".Day" habe ich den relativen Verbrauchswert am Ende jeden Tages. Woraus ich eine Tagesverbrauchskurve erstellen kann.
Das Gleich wird von meinem Skript stündlich, täglich, wöchentlich und monatlich gemacht. Die Datenmenge, die in der DB gespeichert werden ist dann entsprechend mehr oder weniger hoch, allerdings übersichtlich.
- minütlich: 525600 pro Jahr
stündlich: 8760 pro Jahr
täglich: 365 pro Jahr
wöchentlich: 52 pro Jahr
monatlich 12 pro Jahr.
Da ich zusätzlich den Gesamtverbrauch (Wert aus smartmeter) minütlich speichere, bin ich in der Lage mittels SQL auch Andere Punkte zu berechnen. Was aber, wenn man auf die minütliche Auswertung verzichtet, nicht machen muss.
Melde dich, falls du noch weitere Fragen an mich hast
Aktuelle Version:
! ````
// NEU - Zählerstand vom Anfang der akt. Stunde wird ermittelt
//
! var cronH = "0 * * * *";
var cronD = "59 23 * * *";
var cronW = "0 0 * * 1";
var cronM = "0 0 1 * ";
! var idHAGTotH = "javascript.0.Stromzähler.Hager.tmp.Total-h";
var idHAGTotD = "javascript.0.Stromzähler.Hager.tmp.Total-d";
var idHAGTotW = "javascript.0.Stromzähler.Hager.tmp.Total-w";
var idHAGTotM = "javascript.0.Stromzähler.Hager.tmp.Total-m";
var idHAGTotal = "smartmeter.0.1-0:1_8_0255.value"; /Stromverbrauch insgesammt/
var idHAGZielH = "javascript.0.Stromzähler.Hager.Hour";
var idHAGZielD = "javascript.0.Stromzähler.Hager.Day";
var idHAGZielW = "javascript.0.Stromzähler.Hager.Week";
var idHAGZielM = "javascript.0.Stromzähler.Hager.Month";
var debug = false;
! var DPArray = [idHAGTotH, idHAGTotD , idHAGTotW, idHAGTotM, idHAGZielH, idHAGZielD, idHAGZielW, idHAGZielM];
var DPUnit = "kWh";
! DPArray.forEach(function(wert, index, array) {
var DPType = wert.split(".");
var DPDescr = "Power consumption of " + (DPType[DPType.length - 1]);
| if(index > 3) DPUnit = "Wh"; |
| createState(wert, 0, { |
| name: DPDescr, |
| desc: DPDescr, |
| type: 'number', |
| unit: DPUnit, |
| role: 'value' |
| }); |
});
! function haupt (VorId, ZielId) {
var nVorwert = getState(VorId).val;
var nAktuell = getState(idHAGTotal).val;
var nDiff = ((nAktuell * 10) - (nVorwert * 10)) * 100;
setState(ZielId, nDiff, true);
if(debug) log("Aus: " + nAktuell +" - "+ nVorwert + " = " + nDiff);
var shandler = on ({id: ZielId, change: 'any'}, function(data) {
setState(VorId, (nAktuell*10)/10, true);
unsubscribe(shandler);
});
}
! // regelmässige Wiederholungen
// -----------------------------------------------------------------------------
! schedule(cronH, function () {
haupt(idHAGTotH, idHAGZielH);
});
schedule(cronD, function () {
haupt(idHAGTotD, idHAGZielD);
});
schedule(cronW, function () {
haupt(idHAGTotW, idHAGZielW);
});
schedule(cronM, function () {
haupt(idHAGTotM, idHAGZielM);
});
! ````
Viel Spaß,
a200.