Hallo,
ich berechne die aktuell verbrauchte Leistung aus dem Zählerstand.
Ich habe dazu drei verschiedene Varianten im Einsatz:
Jetzt ist aber komisch, dass die drei Varianten zu unterschiedlichen Ergebnissen kommen:
Beim der 1min Variante stimmt also etwas nicht....
sh.Allgemein.Stromzaehler.Zaehlerstand() gibt ja den aktuellen Zählerstand.
sh.Allgemein.Stromzaehler.Zaehlerstand.db('min', '1i') sollte doch den niedrigsten Wert zwischen jetzt und vor einer Minute geben, oder?
Somit sollte die Differenz den Verbrauch der letzten Minute ergeben, oder?
Das scheint aber nicht ganz hin zu kommen. Der Fehler ist aber auch nicht ein Faktor zwei (so dass ich zwei Minuten erwischt hätte).
Was mich auch wundert:
Sollte das nicht 0 ergeben?
Gruß,
Hendrik
ich berechne die aktuell verbrauchte Leistung aus dem Zählerstand.
Ich habe dazu drei verschiedene Varianten im Einsatz:
- ([Zählerstand]-[Zählerstand vor 10 min])*3600/60/10
- ([Zählerstand]-[Zählerstand vor 1 min]) *3600/60
- (3600/800*1000Ws)/[Zeit seit dem letzten Impuls]
(1Impuls =3600*1000/800 Ws, da 800 Impulse pro kWh)
Code:
[[[Zaehlerstand]]] name = Zaehlerstand type = num sqlite = yes knx_dpt = 14 eval = sh.Allgemein.Stromzaehler.Counter()/800.0+65535*sh.Allgemein.Stromzaehler.Faktor()+97597.7-14.64 eval_trigger = Allgemein.Stromzaehler.Counter [[[Momentanleistung_1min]]] type = num sqlite = yes eval = (sh.Allgemein.Stromzaehler.Zaehlerstand()- sh.Allgemein.Stromzaehler.Zaehlerstand.db('min', '1i'))*60.0*1000.0 eval_trigger=Allgemein.Stromzaehler.Counter [[[Momentanleistung_10min]]] type = num sqlite = yes eval = (sh.Allgemein.Stromzaehler.Zaehlerstand()- sh.Allgemein.Stromzaehler.Zaehlerstand.db('min', '10i'))*60.0*1000.0/10.0 eval_trigger=Allgemein.Stromzaehler.Counter [[[Momentanleistung_freq]]] type = num sqlite = yes #Frequenzzaehler: Jeder Counter=1/800kWh=3600/800kws=3600/800*1000Ws; Zeit zwischen zwei Impulsen messen und dadurch teilen --> W eval = 4500/sh.Allgemein.Stromzaehler.Counter.prev_age() eval_trigger=Allgemein.Stromzaehler.Counter enforce_updates=yes
Code:
>>> sh.Allgemein.Stromzaehler.Momentanleistung_1min.db('avg', '15h', '14h') 689.08 >>> sh.Allgemein.Stromzaehler.Momentanleistung_freq.db('avg', '15h', '14h') 437.61 >>> sh.Allgemein.Stromzaehler.Momentanleistung_10min.db('avg', '15h', '14h') 454.55
Code:
(sh.Allgemein.Stromzaehler.Zaehlerstand()- sh.Allgemein.Stromzaehler.Zaehlerstand.db('min', '1i'))
sh.Allgemein.Stromzaehler.Zaehlerstand.db('min', '1i') sollte doch den niedrigsten Wert zwischen jetzt und vor einer Minute geben, oder?
Somit sollte die Differenz den Verbrauch der letzten Minute ergeben, oder?
Das scheint aber nicht ganz hin zu kommen. Der Fehler ist aber auch nicht ein Faktor zwei (so dass ich zwei Minuten erwischt hätte).
Was mich auch wundert:
Code:
sh.Allgemein.Stromzaehler.Zaehlerstand.db('max', '1i')- sh.Allgemein.Stromzaehler.Zaehlerstand() -0.0012500000302679837
Gruß,
Hendrik
Kommentar