Hauptmenü

Statistik

Begonnen von fExplorer, 20 Januar 2020, 23:16:02

Vorheriges Thema - Nächstes Thema

fExplorer

Hallo,

ich erhalte via statistics für einen myStrom Switch mit Verbrauchsmessung die Min/Max/Avrg Werte für power.

Nun möchte ich eine tägliche und monatliche Summe der Wattstunden.

Ich kann aus dem Wiki und der Commandref zu statistics noch nicht so recht herausbekommen ob das damit geht?

Mir erschliesst sich auch noch nicht, was mit deltaReadings und singularReading gemeint ist.

Dank für Hilfe!

KölnSolar

power ist ja ein "schwankender" Wert. Daher Min/Max/Avrg.

Für das, was Du möchtest, bräuchtest Du einen "Zähler" und dann
ZitatDelta between start and end values - over a period of hour, day, month and year:
RPi3/2 buster/stretch-SamsungAV_E/N-RFXTRX-IT-RSL-NC5462-Oregon-CUL433-GT-TMBBQ-01e-CUL868-FS20-EMGZ-1W(GPIO)-DS18B20-CO2-USBRS232-USBRS422-Betty_Boop-EchoDot-OBIS(Easymeter-Q3/EMH-KW8)-PCA301(S'duino)-Deebot(mqtt2)-zigbee2mqtt

fExplorer

Zitat von: KölnSolar am 21 Januar 2020, 00:26:45
power ist ja ein "schwankender" Wert. Daher Min/Max/Avrg.

Für das, was Du möchtest, bräuchtest Du einen "Zähler" und dann

Ja, mit dem "Min/Max/Avrg" klappt das auch.
Ich hatte dies ergänzt

attr Statistik deltaReadings httpSolarPower:power
attr Statistik singularReadings httpSolarPower:power:Delta:Day|httpSolarPower:power:Delta:Month


Und gehofft, dass ich im Log die zusätzlichen summierten Werte für power erhalte, aber da wird nichts hineingeschrieben außer den "normalen" Statistikwerten:

2020-01-20_23:59:55 httpSolarPower statPowerDayLast: Min: 0.000000000000000 Avg: 4.994820453680325 Max: 72.447166442871094

Wo ist da mein Fehler?

Das Device sieht so aus

defmod httpSolarPower HTTPMOD http://myip/report 60
attr httpSolarPower disable 0
attr httpSolarPower extractAllJSON 1
attr httpSolarPower httpVersion 1.1
attr httpSolarPower room Solar

setstate httpSolarPower 2020-01-21 17:10:43 power 0
setstate httpSolarPower 2020-01-21 17:10:43 relay 1
setstate httpSolarPower 2020-01-21 17:10:43 statPowerDay Min: 0.000000000000000 Avg: 34.165755917872104 Max: 219.449417114258011
setstate httpSolarPower 2020-01-20 23:59:55 statPowerDayLast Min: 0.000000000000000 Avg: 4.994820453680325 Max: 72.447166442871094
setstate httpSolarPower 2020-01-21 17:10:43 statPowerMonth Min: 0.000000000000000 Avg: 14.243070411099630 Max: 219.449417114258011 (since: 2020-01-14_22:15:15 )
setstate httpSolarPower 2020-01-21 17:10:43 statPowerYear Min: 0.000000000000000 Avg: 14.243853189691697 Max: 219.449417114258011 (since: 2020-01-14_22:15:15 )
setstate httpSolarPower 2020-01-21 17:10:43 statTemperatureDay Min: 9.18730735778809 Avg: 9.76384163097130 Max: 10.25000000000000
setstate httpSolarPower 2020-01-20 23:59:55 statTemperatureDayLast Min: 10.2500000000000 Avg: 10.8483016128752 Max: 11.1843147277832
setstate httpSolarPower 2020-01-21 17:10:43 statTemperatureMonth Min: 9.18730735778809 Avg: 11.60686871491162 Max: 13.31250000000000 (since: 2020-01-14_22:15:15 )
setstate httpSolarPower 2020-01-21 17:10:43 statTemperatureYear Min: 9.18730735778809 Avg: 11.60687037041269 Max: 13.31250000000000 (since: 2020-01-14_22:15:15 )
setstate httpSolarPower 2020-01-21 17:10:43 temperature 10.0625



KölnSolar

Wie gesagt, Du brauchst einen fortlaufenden "Zähler". Das Modul kann das selber nicht leisten. Ein Zähler besteht ja aus kumulierter Vergangenheit + power * Zeiteinheit. Vielleicht wird es über die Einheiten klarer: Dein power-reading ist  vermutlich in kW(Zeitpunktbetrachtung der Leistung; permanent schwankend). Arbeit ist Leistung * Zeit, kW * t = kWh. Hat Dein device kein "Ertragsreading" ? Schlimmstenfalls nur Tagesertrag, aber daraus lässt sich dann per userReading auch ein kontinuierlicher Zähler basteln.
RPi3/2 buster/stretch-SamsungAV_E/N-RFXTRX-IT-RSL-NC5462-Oregon-CUL433-GT-TMBBQ-01e-CUL868-FS20-EMGZ-1W(GPIO)-DS18B20-CO2-USBRS232-USBRS422-Betty_Boop-EchoDot-OBIS(Easymeter-Q3/EMH-KW8)-PCA301(S'duino)-Deebot(mqtt2)-zigbee2mqtt

fExplorer

Zitat von: KölnSolar am 21 Januar 2020, 19:21:04
Wie gesagt, Du brauchst einen fortlaufenden "Zähler". Das Modul kann das selber nicht leisten. Ein Zähler besteht ja aus kumulierter Vergangenheit + power * Zeiteinheit. Vielleicht wird es über die Einheiten klarer: Dein power-reading ist  vermutlich in kW(Zeitpunktbetrachtung der Leistung; permanent schwankend). Arbeit ist Leistung * Zeit, kW * t = kWh. Hat Dein device kein "Ertragsreading" ? Schlimmstenfalls nur Tagesertrag, aber daraus lässt sich dann per userReading auch ein kontinuierlicher Zähler basteln.

Ja, das ist mir vom Prinzip schon klar, ich tu mich aber noch schwer, den richtigen Ansatz zu finden, wie ich das in fhem realisiere.

Der myStrom-Switch selbst stellt keine kummulierten Werte zur Verfügung, nur den power Snapshot. Ich lese das jede Minute aus und lass das in ein tägliches log schreiben:

2020-01-22_09:09:48 httpSolarPower relay: 1
2020-01-22_09:09:48 httpSolarPower power: 2.72084879875183
2020-01-22_09:09:48 httpSolarPower temperature: 8.56247901916504
2020-01-22_09:10:48 httpSolarPower relay: 1
2020-01-22_09:10:48 httpSolarPower temperature: 8.56247901916504
2020-01-22_09:10:48 httpSolarPower power: 2.71081376075745
2020-01-22_09:11:48 httpSolarPower relay: 1
2020-01-22_09:11:48 httpSolarPower power: 2.83444571495056
2020-01-22_09:11:48 httpSolarPower temperature: 8.56248664855957
2020-01-22_09:12:48 httpSolarPower temperature: 8.56248664855957
2020-01-22_09:12:48 httpSolarPower power: 2.28956913948059


Wie baue ich mir jetzt ein Reading, dass aus dem log des Vortages alle power werte einsammelt? Und wie kann ich dann in/mit dem Reading rechnen?

KölnSolar

#5
ZitatJa, das ist mir vom Prinzip schon klar
Ich glaube nicht.  :-\ Zumindest bekommst Du so ja nur eine Scheingenauigkeit. Du bekommst je min. einen power-Wert. Wenn zufällig kurz vorher die Sonne aufblitzt, dazwischen aber immer dicke Wolken, dann kannst Du einen selbst errechneten Wert ziemlich vergessen.

Ansonsten kannst Du zB. ein userReadings erstellenattr httpSolarPower userReadings zaehler:power.* {ReadingsVal($name,"zaehler",0) + $EVTPART1 / 60} darauf kannst Du dann das statistics-Modul loslassen.
RPi3/2 buster/stretch-SamsungAV_E/N-RFXTRX-IT-RSL-NC5462-Oregon-CUL433-GT-TMBBQ-01e-CUL868-FS20-EMGZ-1W(GPIO)-DS18B20-CO2-USBRS232-USBRS422-Betty_Boop-EchoDot-OBIS(Easymeter-Q3/EMH-KW8)-PCA301(S'duino)-Deebot(mqtt2)-zigbee2mqtt

fExplorer

Zitat von: KölnSolar am 22 Januar 2020, 17:42:19

Ansonsten kannst Du zB. ein userReadings erstellenattr httpSolarPower userReadings zaehler:power.* {ReadingsVal($name,"zaehler",0) + $EVTPART1 / 60} darauf kannst Du dann das statistics-Modul loslassen.

Hier bekomme ich diesen Fehler.

Error evaluating httpSolarPower userReading powerMinute: Global symbol "$EVTPART1" requires explicit package name (did you forget to declare "my $EVTPART1"?) at (eval 20813) line 1.


Ich dachte $EVTPART1 ist eine vordefinierte Variable?
Wo muss diese deklariert werden?


KölnSolar

Dachte ich eigentlich auch... :-\ Dann ersetze es mit ReadingsVal($name,"power",0)
RPi3/2 buster/stretch-SamsungAV_E/N-RFXTRX-IT-RSL-NC5462-Oregon-CUL433-GT-TMBBQ-01e-CUL868-FS20-EMGZ-1W(GPIO)-DS18B20-CO2-USBRS232-USBRS422-Betty_Boop-EchoDot-OBIS(Easymeter-Q3/EMH-KW8)-PCA301(S'duino)-Deebot(mqtt2)-zigbee2mqtt

fExplorer

Zitat von: KölnSolar am 23 Januar 2020, 09:30:33
Dachte ich eigentlich auch... :-\ Dann ersetze es mit ReadingsVal($name,"power",0)

OK, da liefert er mir den Wert offenbar korrekt in das userReadings:

powerMinute 6.18473482131958

Die Variable $name wird hier praktisch mit powerMinute befüllt?

Das "power" definiert woher die Daten kommen?

Und die 0?

Wzut

Zitat von: fExplorer am 23 Januar 2020, 10:15:44
Die Variable $name wird hier praktisch mit powerMinute befüllt?

Das "power" definiert woher die Daten kommen?

Und die 0?
nein $name steht in deinem Fall für httpSolarPower

ja aus welchem Reading

0 als default wenn power keinen Wert hat
Maintainer der Module: MAX, MPD, UbiquitiMP, UbiquitiOut, SIP, BEOK, readingsWatcher