Autor Thema: statistics Modul / singularReadings / Max funktioniert nicht wie gedacht  (Gelesen 582 mal)

Offline Jupedi

  • Jr. Member
  • **
  • Beiträge: 70
Habe einen HM Stromzähler laufen. Das Statistics Modul schreibt auch die Werte für Monat, Tag und Stunde als singleReadings ins Device.

Was mir Probleme bereitet sind die Max Werte. Ich hätte gern die maximalen kWh von Monat und Tag als jeweils einzelnes Reading.

Es geht mit dem Attribut minAvgMaxReadings alles in einem Reading und dann mit split oder vielleicht substr rausziehen.


Aber müsste es nicht auch als singularReadings funktionieren? (Laut commandref)

singularReadings <GerätRegExp:GeräteWertRegExp:Statistiktyp:Zeitraum>

    Statistik-Typ: Min|Avg|Max|Delta|DurationState|Tendency
    Zeitraum: Hour|Day|Month|Year|1h|2h|3h|6h

Regulärer Ausdruck statistischer Werte, die zusätzlich auch als einzelne Werte gespeichert werden sollen. Erleichtert die Erzeugung von Plots und anderer Auswertungen (notify).
Für "duration"-Gerätewerte muss der Name des jeweiligen Statuswertes als Statistiktyp eingesetzt werden.
Beispiel:
    Wettersensor:rain:Delta:(Hour|Day)|FritzDect:power:Delta:Day
    Wettersensor:rain:Delta:(Hour|Day)|FritzDect:power:Delta:Day

Mein Basiswert ist ein userreading, welches bereits in kwh umgerechnet ist. (Zaehlerstand_Solar_kWh)

Habe es erst so probiert: (singularReadings)
HM_Strommesser:Zaehlerstand_Solar_kWh:Max:Hourdann so:
HM_Strommesser:Statistics_Zaehlerstand_Solar_kWhHour:Max:Hour
Beides hat leider nicht funktioniert.

Die Beispiele sind leider immer mit Delta, aber ich dachte Max geht entsprechend.

Hier noch mal das List.

Internals:
   DEF        HM_Strommesser Statistics_
   DEV_REGEXP HM_Strommesser
   FUUID      6085455f-f33f-0821-5a74-67a813e20fa82b39
   NAME       StatisticDevice
   NOTIFYDEV  global,HM_Strommesser
   NR         368
   NTFY_ORDER 10-StatisticDevice
   PREFIX     Statistics_
   STATE      Updated stats for: HM_Strommesser
   TYPE       statistics
   OLDREADINGS:
   READINGS:
     2021-04-27 16:14:16   monitoredDevicesHMCCUDEV HM_Strommesser
     2021-05-03 11:59:55   nextPeriodChangeCalc 2021-05-03 12:59:55
     2021-05-03 12:41:41   state           Updated stats for: HM_Strommesser
   fhem:
     modulVersion $Date: 2019-12-24 00:07:57 +0100 (Tue, 24 Dec 2019) $
     nextPeriodChangeTime 1620039595
Attributes:
   alias      StatisticDevice
   deltaReadings Zaehlerstand_Solar_kWh
   ignoreDefaultAssignments 1
   room       Strom
   singularReadings HM_Strommesser:Zaehlerstand_Solar_kWh:Delta:Hour|HM_Strommesser:Zaehlerstand_Solar_kWh:Delta:Day|HM_Strommesser:Statistics_Zaehlerstand_Solar_kWhDay:Max:Day|HM_Strommesser:Statistics_Zaehlerstand_Solar_kWhHour:Max:Hour

Kann jemand helfen?

Raspberry 3, CUL Eigenbau(nano,cc1101),
Jeelink
Mediola/Neo Fernbedienung, NET-IO230B, Intertechno Zeug,, itach, Fritzbox7490 (m-net Fw).
  Homematic: HM CCU2, PROCRPC, Thermostate,  Wassermelder aus Fensterkontakten, usw.
Home Entertainment: VU+, SamsungTV, YamahaAVR, OPPO

Offline RalfRog

  • Full Member
  • ***
  • Beiträge: 128
Update
Oh sorry, hatte das Problem nicht richtig erfasst. So was ähnliches ist mir auch schon NICHT gelungen.
--------

Wenn ich mich aus meiner Leserei recht entsinne muss das Reading überhaupt erstmal im Modul "bekannt" gemacht werden.
Aus meiner Sicht daher per Attribut minAvgMaxReadings <Gerätewerte>  =  Zaehlerstand_Solar_kWh

Dann braucht es keine singular Readings mehr, denn hour, day, month, year werden als einzelne Readings erzeugt.

Probier mal aus.

Siehe Wiki und dort Zeile attr myStatDevice deltaReadings total_energy analog für minAvgMaxReadings
Zitat
singularReadings

Bei Verwendung von singularReadings ist darauf zu achten, dass für das entsprechende Device die entsprechende Statistik entweder durch die standardmäßig vorgegebenen Gerätewerte oder durch durationReadings,deltaReadings,minAvgMaxReadings oder tendencyReadings definiert ist. Anderenfalls werden die singularReadings weder angelegt, noch mit Daten gefüllt. Um vom Reading Stromzaehler:total_energy singularReadings anzulegen, muss folgendes definiert werden. Dabei ist darauf zu achten, dass bei singularReadings an keiner Stelle ein Leerzeichen steht:

attr myStatDevice deltaReadings total_energy
attr myStatDevice singularReadings Stromzaehler:total_energy:Delta:Hour|Stromzaehler:total_energy:Delta:Day|Stromzaehler:total_energy:Delta:Month|Stromzaehler:total_energy:Delta:Year
« Letzte Änderung: 03 Mai 2021, 13:54:22 von RalfRog »

Offline RalfRog

  • Full Member
  • ***
  • Beiträge: 128
Hallo
Habe es bei mir mal konkret getestet. Scheint zu klappen.
Ergebnis in den Reading, heute morgen neu entstanden:
statPowerHour       Min: 5.30 Avg: 12.14 Max: 18.40   2021-05-04 10:34:00
statPowerHourLast   Min: 3.18 Avg: 6.45 Max: 21.70    2021-05-04 09:59:55
statPowerDayMax     21.70                             2021-05-04 10:34:00 <==NEU
statPowerDay        Min: 0.00 Avg: 1.53 Max: 21.70    2021-05-04 10:34:00
statPowerDayLast    Min: 0.00 Avg: 34.57 Max: 226.85  2021-05-03 23:59:55
statPowerMonth      Min: 0.00 Avg: 22.82 Max: 284.24  2021-05-04 10:34:00
statPowerMonthLast  Min: 0.00 Avg: 35.93 Max: 256.91  2021-05-01 23:49:55
statPowerYear       Min: 0.00 Avg: 31.00 Max: 284.24  2021-05-04 10:34:00

  • Folgendes Attribut habe ich dazu angelegt: "singularReadings  <Device>:power:Max:Day".
  • Das reading power selbst ist wie oben ersichtlich ein "normales" MinAvgMax-Reading und liefert die üblichen Daten für Min, Avg, Max der Intervalle Hour, Day, Month, Year.
  • Das Reading "statPowerDayMax" ist wie gewünscht zusätzlich entstanden.


Offline Jupedi

  • Jr. Member
  • **
  • Beiträge: 70
Erst mal danke für die Mühe!

Ist deine Power eine Leistung in W?

Der Powerwert klappt bei mir auch (1.POWER), aber der stetig steigende Energiezähler (Zaehlerstand_Solar_kWh) ist mein Problem. (Sprich die kWh)

Würdest du mal dein List von statistics posten?
Raspberry 3, CUL Eigenbau(nano,cc1101),
Jeelink
Mediola/Neo Fernbedienung, NET-IO230B, Intertechno Zeug,, itach, Fritzbox7490 (m-net Fw).
  Homematic: HM CCU2, PROCRPC, Thermostate,  Wassermelder aus Fensterkontakten, usw.
Home Entertainment: VU+, SamsungTV, YamahaAVR, OPPO

Offline RalfRog

  • Full Member
  • ***
  • Beiträge: 128
Bitteschön (ja Leistung in Watt)
Internals:
   DEF        shelly_plug_s
   DEV_REGEXP shelly_plug_s
   NAME       myStatDevice
   NOTIFYDEV  global,shelly_plug_s
   NR         473
   NTFY_ORDER 10-myStatDevice
   PREFIX     stat
   STATE      Updated stats for: shelly_plug_s
   TYPE       statistics
   READINGS:
     2021-05-03 12:54:24   monitoredDevicesShelly shelly_plug_s
     2021-05-04 11:59:55   nextPeriodChangeCalc 2021-05-04 12:59:55
     2021-05-04 12:41:15   state   Updated stats for: shelly_plug_s
   fhem:
     modulVersion $Date: 2019-12-24 00:07:57 +0100 (Tue, 24 Dec 2019) $
     nextPeriodChangeTime 1620125995
Attributes:
   ignoreDefaultAssignments 1   
   deltaReadings energyCum
   minAvgMaxReadings power
   singularReadings shelly_plug_s:power:Max:Day
   room       Unsorted
   verbose    4

Ich habe per Attribut "ignoreDefaultAssignments 1" die Standardzuordnungen abgestellt und dann für "power" und das UserReading "energyCum" neue Statistik-Readings definiert.
  • deltaReadings            energyCum
  • minAvgMaxReadings  power
Übrigens erzeugt das neue Max-Reading auch jedesmal Events wenn sich "power" aktualisiert.

Durch die Eventerzeugung bin ich noch nicht wirklich durchgestiegen. Es fühlt sich etwas inkonsistent an.....
Siehe meine Frage https://forum.fhem.de/index.php/topic,120836.0.html - hoffe zum Thema Events kann tupol was sagen.

Der stetig steigende Wert ist doch hier (5 Sekunden vor Mitternacht) ablesbar. Mein Beispiel:
statEnergyCumLast    Hour: 55.2 Day: 832.1 Month: 1100.0 Year: - (since: )   2021-05-04 12:59:55
« Letzte Änderung: 04 Mai 2021, 13:14:19 von RalfRog »

Offline RalfRog

  • Full Member
  • ***
  • Beiträge: 128
Hallo noch ne Anmerkung
Zitat
Ich hätte gern die maximalen kWh von Monat und Tag als jeweils einzelnes Reading.

Vielleicht macht du einen Denkfehler.
Die Energy-Readings sind aus meiner Sicht als delta-Readings angelegt (es sei denn du definierst ein Min/Max daraus). Und delta-Readings kennen kein Min/Max sondern nur die Differenz (Delta) der Zeitperiode "Hour, Day, Month, Year". Man hat daher Readings für die aktuelle und vorhergehende (Last) Periode.

Liefert dir daher nicht deine Definition "HM_Strommesser:Zaehlerstand_Solar_kWh:Delta:Day" den maximalen Tageswert kurz vor Mitternacht. Falls das Reading keine Events auslöst hast Du natürlich das Problem es zu Loggen.

Ich bastel auch gerade mit einer PV-Balkonanlage rum und suche noch nach einer Mölichkeit etwas Statistik in Graphen zu bekommen.
Halte per UserReading die Power und Tagesenergiewerte über Userreadings fest.
Bin erst danach auf die Module "statistics" und "ElectricityCalculator" gestoßen - aber auch noch nicht rund damit.
Schau dir den "ElectricityCalculator" mal an vielleicht hilft es dir. Der hat aber aufgrund eines anderen Ansatzes einen Haufen an Readings die du vermutlich auch nicht brauchst.
« Letzte Änderung: 04 Mai 2021, 14:06:05 von RalfRog »

Offline Jupedi

  • Jr. Member
  • **
  • Beiträge: 70
Ich habe heute mal einiges angepasst und muss jetzt erst mal abwarten.

ElectricityCalculator schau ich mir mal an.

Raspberry 3, CUL Eigenbau(nano,cc1101),
Jeelink
Mediola/Neo Fernbedienung, NET-IO230B, Intertechno Zeug,, itach, Fritzbox7490 (m-net Fw).
  Homematic: HM CCU2, PROCRPC, Thermostate,  Wassermelder aus Fensterkontakten, usw.
Home Entertainment: VU+, SamsungTV, YamahaAVR, OPPO

Offline RalfRog

  • Full Member
  • ***
  • Beiträge: 128
Hi
Ich warte auch noch, da ich ja auch noch suche (z.B. Monatssumme genau einmal im Log).....

Hatte heute Mittag für mein energyCum-Reading unter anderem ein
==> singularReadings shelly_plug_s:energyCum:Delta:Day
angelegt um die Tagessumme zu erhalten. Das Reading wird ja zusätzlich zum kompletten Delta-Reading geschrieben.

Das Ergebnis ist denke ich genau was du (ich auch) suchst. Events werden für das Logging erzeugt.
  • 2021-05-04_23:58:00 shelly_plug_s  statEnergyCumDay: 0.0  <== stündliches Event
  • 2021-05-04_23:58:00 shelly_plug_s  statEnergyCumDayLast: 484.9 <== genau ein Event kurz vor Mitternacht
  • 2021-05-04_23:58:00 shelly_plug_s  statEnergyCum: Hour: 0.0 Day: 0.0 Month: 1802.3 Year: 2902.3
  • 2021-05-04_23:58:00 shelly_plug_s  statEnergyCumLast: Hour: 0.0 Day: 484.9 Month: 1100.0 Year: -
  • 2021-05-05_00:58:00 shelly_plug_s  statEnergyCum: Hour: 0.0 Day: 0.0 Month: 1802.3 Year: 2902.3
  • 2021-05-05_00:58:00 shelly_plug_s  statEnergyCumLast: Hour: 0.0 Day: 484.9 Month: 1100.0 Year: -
  • 2021-05-05_00:58:00 shelly_plug_s  statEnergyCumDay: 0.0
  • 2021-05-05_00:58:00 shelly_plug_s  statEnergyCumMonth: 1802.3
Genau den Wert möchtest Du doch haben. Den Summenwert des Tages von 0 Uhr bis 23:58 Uhr (maximaler Wert).
Alles was man nicht haben will kann man ja aus dem FileLog herausfiltern bzw. nur das zulassen was rein soll.
« Letzte Änderung: 05 Mai 2021, 01:28:35 von RalfRog »

Offline RalfRog

  • Full Member
  • ***
  • Beiträge: 128
....Ich hätte gern die maximalen kWh von Monat und Tag als jeweils einzelnes Reading.

Hast Du es für dich gelöst? Wie?