"Statistics Modul" Welche Geräte werden unterstützt?

Begonnen von PowderK, 19 Mai 2014, 21:41:33

Vorheriges Thema - Nächstes Thema

tupol

Der Fehler ist schon seit mehreren Monaten behoben.
Zum Loggen bieten sich die last-Readings an.

optimizer

ZitatDer Fehler ist schon seit mehreren Monaten behoben.
Ich verwende die neueste statistics Version vom 9.1.15. Es Funktioniert bei mir nur mit $value =~ s/(-?[\d.]*)/$1/e

Aus dem sub statistics_maxDecPlaces erhalte ich die Meldung:  Argument "ShowDate:" isn't numeric in numeric eq (==)
Folgendes liefert Dumper für @hidden in der aufrufenden Routine vor Übergabe:
$VAR1 = 'Sum:';
$VAR2 = 0;
$VAR3 = 'Time:';
$VAR4 = '21448087267';
$VAR5 = 'LastValue:';
$VAR6 = '';
$VAR7 = '19.5';
$VAR8 = 'LastTime:';
$VAR9 = '1429873996';
$VAR10 = 'ShowDate:';
$VAR11 = 'ShowDate:';
$VAR12 = 'DecPlaces:';
$VAR13 = '1';

Auch nachdem ich ein neues Statistik-device für die Temperaturen erstellt habe, kommen die gleichen Fehler.

tupol

#107
In der Version vom 9.1.15 sollte
495   $value =~ s/(-?[\d.]*).*/$1/e;
stehen (siehe auch SourceForge) und das entspricht Deinem Term.

Kannst Du bitte für das statistics-Device ein
attr global showInternalValues 1
list <device>
attr global showInternalValues 0

hier posten. Da ist vermutlich, etwas mit den Summen-Werten durcheinander geraten.

optimizer

Zitat495   $value =~ s/(-?[\d.]*).*/$1/e;
Mein Term funktioniert nur ohne ".*" !

Anbei mein device-list der Statistik:

Internals:
   DEF        T_Wohnen
   DEV_REGEXP T_Wohnen
   NAME       Heiz_Statistik
   NR         76
   NTFY_ORDER 10-Heiz_Statistik
   PREFIX     stat
   STATE      Updated stats for: T_Wohnen
   TYPE       statistics
   Readings:
     2015-04-24 12:50:57   .Puffer_mitte:temperatureDay Sum: 0 Time: 4289614866 LastValue:  41.2 LastTime: 1429872657 ShowDate: ShowDate: DecPlaces: 1
     2015-04-24 12:50:57   .Puffer_mitte:temperatureMonth Sum: 0 Time: 4289614866 LastValue:  41.2 LastTime: 1429872657 ShowDate: ShowDate: DecPlaces: 1
     2015-04-24 12:50:57   .Puffer_mitte:temperatureYear Sum: 0 Time: 4289614866 LastValue:  41.2 LastTime: 1429872657 ShowDate: ShowDate: DecPlaces: 1
     2015-04-27 22:06:06   .T_Wohnen:temperatureDay Sum: 0 Time: 331790443277 LastValue:  19.9 LastTime: 1430165166 ShowDate: ShowDate: DecPlaces: 1
     2015-04-27 22:06:06   .T_Wohnen:temperatureMonth Sum: 0 Time: 1252689727025 LastValue:  19.9 LastTime: 1430165166 ShowDate: ShowDate: DecPlaces: 1
     2015-04-27 22:06:06   .T_Wohnen:temperatureYear Sum: 0 Time: 1252689727033 LastValue:  19.9 LastTime: 1430165166 ShowDate: ShowDate: DecPlaces: 1
     2015-04-26 15:04:24   monitoredDevicesGPIO4 T_Wohnen
     2015-04-27 21:59:55   nextPeriodChangeCalc 2015-04-27 22:59:55
     2015-04-27 22:06:06   state           Updated stats for: T_Wohnen
   Fhem:
     modulVersion $Date: 2015-01-09 22:00:59 +0100 (Fri, 09 Jan 2015) $
Attributes:
   verbose    3


list T_Wohnen (Temperatursensor):
Internals:
   CHANGED
   DEF        10-000801ff7e6f
   ERRORCOUNT 0
   INTERVAL   60
   NAME       T_Wohnen
   NR         26
   STATE      T:  19.9 &deg;C ▴ | 22:42
   TYPE       GPIO4
   Readings:
     2015-04-27 22:06:06   statTemperatureDay Min: 0.0 Avg: 0.0 Max: 20.1
     2015-04-26 23:59:55   statTemperatureDayLast Min: 0.0 Avg: 0.0 Max: 20.4
     2015-04-27 22:06:06   statTemperatureMonth Min: 19.3 Avg: 0.0 Max: 21.1
     2015-04-27 22:06:06   statTemperatureYear Min: 19.3 Avg: 0.0 Max: 21.1
     2015-04-27 22:42:36   state           T:  19.9 &deg;C ▴ | 22:42
     2015-04-27 22:42:36   temperature      19.9
   Fhem:
     interfaces temperature
   Helper:
     _98_statistics Heiz_Statistik
Attributes:
   event-on-change-reading temperature
   model      DS1820
   room       GPIO4


Bislang wurde der Tagesdurchschnitt auch noch nie berechnet.
Hoffe es hilft dir weiter.

Gruß
Karlheinz

tupol

Zitat von: optimizer am 27 April 2015, 22:48:27
Mein Term funktioniert nur ohne ".*" !

Bei Dir sind die Hidden-Werte durcheinander. Nach LastValue hast Du zwei Leerzeichen. Wo kommen die her? Hat Dein Reading ein Leerzeichen am Anfang?

optimizer

ZitatHat Dein Reading ein Leerzeichen am Anfang?
Ja, das sieht ganz danach aus. Aber dafür sollte ja die $value Variable nur die Zahl weiterverarbeiten.

tupol


optimizer

Hallo tupol,

mit der neuen Version funktioniert es bislang einwandfrei. Danke.

Einen Feature-Request hätte ich noch :-)
Bei Stromverbrauch und vor allem bei Stromerzeugung verwende ich lieber den rollierenden 12-Monatswert anstatt Jahreswert. Im Vergleich zur 12-M-Vorperiode (last) hat man damit stets die Veränderung trotz saisonalen Schwankungen auf einen Blick. Dazu müssten die letzten 24 Monatswerte zwischengespeichert bzw. nachgelesen werden.
Ist das als zusätzlicher Statistikwert machbar?

Gruß
Karlheinz

tupol

Das ist zu speziell. Das sollte besser über eine Datenbanken erfolgen.

optimizer

ZitatDas ist zu speziell. Das sollte besser über eine Datenbanken erfolgen.
:'(

Eine Warnung bekomme ich noch beim FHEM-Start:
2015.05.02 23:34:15 1: PERL WARNING: Argument "ShowDate:" isn't numeric in numeric eq (==) at ./FHEM/98_statistics.pm line 550.
2015.05.02 23:34:15 1: PERL WARNING: Use of uninitialized value in string ne at fhem.pl line 3782.


Das liegt wohl an nicht richtig geschriebenen Datensatz:      2015-05-02 23:44:02   .T_Wohnen:temperatureMonth Sum: 1840948.5 Time: 409115106969 LastValue: 20.2 LastTime: 1430603042 ShowDate: ShowDate: DecPlaces: 1

Habe die Werte einfach durch ShowDate: 0 in fhem.save ersetzt.

Posti123

Das Energiemessgerät HM-ES-TX-WM hat ein neues Reading "energyCalc" spendiert bekommen, da das Gerät selber nach 832kW/h überlauf den Wert wieder von selber auf 0 setzt. Auf energyCalc wird dann das delta des resets addiert. Leider ignoriert Statistics das Reading, auch mein Singularreading HAUS.STROM:energyCalc:Delta:(Hour|Day|Month|Year) hilft nicht.

Liegt dies am Statistics modul das es angepasst werden muss?
18xHM-CC-RT-DN, 5xHM-TC-IT-WM-W-EU, HMLAN, 2xJeeLink 868, 1xJeeLink433, 1xCUL868, HM-LC-Bl1PBU-FM, HM-LC-Sw2-FM, HM-LC-SW1-FM, HM-LC-Sw1PBU-FM, 5xHM-Sec-SC-2, 2xHM-Sec-SCo, HM-ES-TX-WM, HM-Sen-MDIR-O-2, HM-WDS10-TH-O, 6xTechnoline, 2x PCA301,2xHM-PB-2-WM55-2,2xHM-RC-4-2,2xHM-WDS30-T-O, HM-SEC-WDS-2

tupol

Benutze bitte die Attribute: deltaReadings, durationReadings, minAvgMaxReadings, tendencyReadings

Posti123

Hi,

mein Workaround war energyCalc zu den knowndevices hinzuzufügen aber ich hab im SVN gesehen das du es nun auch hinzugefügt hast. Danke!

VG
18xHM-CC-RT-DN, 5xHM-TC-IT-WM-W-EU, HMLAN, 2xJeeLink 868, 1xJeeLink433, 1xCUL868, HM-LC-Bl1PBU-FM, HM-LC-Sw2-FM, HM-LC-SW1-FM, HM-LC-Sw1PBU-FM, 5xHM-Sec-SC-2, 2xHM-Sec-SCo, HM-ES-TX-WM, HM-Sen-MDIR-O-2, HM-WDS10-TH-O, 6xTechnoline, 2x PCA301,2xHM-PB-2-WM55-2,2xHM-RC-4-2,2xHM-WDS30-T-O, HM-SEC-WDS-2

optimizer

Hallo Tupol,

beim loggen eines energy-Readings (Zählerstand) verwende ich die Statistik-Berechnung bereits ausgiebig:
[font=courier]
energy               21402.5 2015-08-08 17:12:45
statEnergy             Hour: 0.0 Day: 26.8 Month: 193.7 Year: 2173.5 (since: 2015-04-20 ) 2015-08-08 16:59:55
statEnergyDay         26.8 2015-08-08 16:59:55
statEnergyDayLast  27.6 2015-08-07 23:59:56
statEnergyLast    Hour: 0.9 Day: 27.6 Month: 670.3 Year: - 2015-08-08 16:59:55[/font]

Zum Loggen von Delta-Tageswerten haben ich bereits ein singularReadings (vz280:energy:Delta:(Day|Month|Year)) angelegt.
Nun möchte ich ebenfalls einmal pro Tag den Zählerstand mitloggen:
vz280:energy:(Delta|Max):(Day|Month|Year)
Es wird aber nur ein statEnergyDayLast erzeugt.
Kann der *DayLast-Reading-Name beeinflusst werden um beide Readings zu erzeugen? Hast du einen anderen Vorschlag?

Gruß
optimizer

tupol

#119
Max gibt es nicht bei delta readings. Versuch mal ein zweites statistics auf den stat wert. Bin mir aber nicht sicher, ob das funktioniert..