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

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

Vorheriges Thema - Nächstes Thema

optimizer

Wie vermutet wird auch in einer weiteren statistics-Definition kein Max-Eintrag bei Delta-Readings erzeugt.
Dass bei Delta-Reading von Haus aus kein MIN/MAX gerechnet wird, leuchtet mir ein.
Aber was spricht dagegen bei einem expliciten "singularReadings" die angegebenen statTypes zu errechnen, z.B. als statxxxxMaxDayLast?
Es würde das tägliche loggen von Zählerständen enorm erleichtern.

tupol


optimizer

ZitatWie hast du das neue statistics definiert?
Im Prinzip wie das erste, jedoch mit "Max" als Präfix nur mit einem singularreading:
Internals:
   CFGFN
   DEF        vz280 Max
   DEV_REGEXP vz280
   NAME       PV_Statistik_Max
   NR         733
   NTFY_ORDER 10-PV_Statistik_Max
   PREFIX     Max
   STATE      Updated stats for: vz280
   TYPE       statistics
   Readings:
     2015-08-21 15:35:39   monitoredDevicesVOLKSZAEHLER vz280
     2015-08-23 21:59:55   nextPeriodChangeCalc 2015-08-23 22:59:55
     2015-08-23 21:59:55   state           Updated stats for: vz280
   Fhem:
     modulVersion $Date: 2015-07-27 17:56:28 +0200 (Mon, 27 Jul 2015) $
Attributes:
   singularReadings vz280:energy:(Max):(Hour|Day)

Könntest du bei Delta-Readings nicht auch das DayLast für MinMax  automatisch einmal am Tag zu erzeugen?

tupol

Mit dieser definition bildest du aber keine statistic des stat-wertes. Du must noch die readings definieren.

cwagner

Moin,
mit dieser Definition erstelle ich ein Statistik-Device:
define Statistik statistics Wetterstation|SW_.*|Switch_Heizkeller stat_

Von meinen verschiedenen Switchen erhalte ich die Statistiken. Einen Switch und einzelne Readings von Wetterstation möchte ich ausschließen:
attr Statistik excludedReadings Wetterstation:(rain|brightness),SW_Radio:.*

oder auch
attr Statistik excludedReadings Wetterstation:(rain|brightness)|SW_Radio:.*

schließen die Statistiken für den SW_Radio leider nicht aus. Was mache ich falsch?
PI 2B+/5 Raspbian 12, Perl 5.36.0, FHEM 6.3: 295 Module in ConfigDB: Steuerung Heizkessel, FBH, Solarthermie, kontr. Lüftung mit WRG. Smarthome u.a. HMCUL, 1-Wire (FT232RL ; DS2480B), EnOcean (TCM EPS3), MQTT2. DOIF, PID20, Threshold, OWX; Micropelt IRTV, Volkszähler, SolarForecast; MariaDB

optimizer

Hallo tupol,

dann hab ich wohl nicht verstanden, was du mit "statistic des stat-wertes" meinst.  :-[
Mit einem separaten Reading (Kopie von energy) + minAvgMaxReadings auf Kopie + singularReadings würde es zwar funktionieren, ich suche aber nach einem einfacheren Weg.
Ich finde ein zusätzlicher MinAvgMax u. *Last auch bei Delta-Readings würde dein Modul aufwerten.

okiberlin

Hallo tupol,

ist es möglich das Modul zu erweitern um auch das Reading windGust auszuwerten? Der LaCrosse TX22 liefert Windgeschwindigkeit und Böen.
Ich habe folgendes konfiguriert:

attr Wetter.Statistik singularReadings Wetter.Terrasse:rain:Delta:(Hour|Day)|Wetter.*:temperature:(Avg|Max|Min):(Day|Week|Month|Year)|Wetter.Terrasse:(windSpeed|windGust):Max:(Hour|Day)
attr Wetter.Statistik excludedReadings Wetter.*:humidity


Der Sensor Wetter.Terrasse liefert u.a. diese Readings:

2015-09-08 20:52:33   statWindSpeedHour Min: 0.0 Avg: 0.5 Max: 1.5
2015-09-08 19:59:55   statWindSpeedHourLast Min: 0.0 Avg: 0.8 Max: 2.6
2015-09-08 20:52:33   statWindSpeedHourMax 1.5
2015-09-08 19:59:55   statWindSpeedHourMaxLast 2.6
2015-09-08 20:51:53   state           T: 15.9 H: 57
2015-09-08 20:52:33   temperature     15.9
2015-09-08 20:52:33   windDirectionDegree 157.5
2015-09-08 20:52:33   windDirectionText SSE
2015-09-08 20:51:53   windGust        0.9
2015-09-08 20:52:33   windSpeed       0.4


windSpeed und die anderen Readings werden durch Wetter.Statistik korrekt berechnet. Nur bei windGust passiert leider nix.

Viele Grüße
oki

tupol


okiberlin

geht tatsächlich, ich hatte minAvgMaxReadings übersehen, peinlich :-[

gima84

Hi, ich häng meine Frage hier einfach mal dran.

Ich habe das Module aktiviert:
define ErtragWaermepumpe statistics ebus
attr ErtragWaermepumpe deltaReadings Energieertrag


Im Geräte ebus gibts 4 Readings, die minütlich aktualisiert werden. Das Reading "Energieertrag" wird nur aller 2 Stunden aktualisiert. Im Event monitor, sehe ich jedoch 4 Einträge für das Statistikmodul (wenn sich die minütlichen Readings aktualisieren).

2015-10-05 18:58:18 GAEBUS ebus Vorlauf: 34.19 ok
2015-10-05 18:58:18 GAEBUS ebus statEnergieertrag: Hour: 0 Day: 10 Month: 28 Year: 28 (since: 2015-10-03 )
2015-10-05 18:58:18 GAEBUS ebus Rücklauf: 25.44 ok
2015-10-05 18:58:18 GAEBUS ebus statEnergieertrag: Hour: 0 Day: 10 Month: 28 Year: 28 (since: 2015-10-03 )
2015-10-05 18:58:18 GAEBUS ebus Wärmepumpenstatus: heat
2015-10-05 18:58:18 GAEBUS ebus statEnergieertrag: Hour: 0 Day: 10 Month: 28 Year: 28 (since: 2015-10-03 )
2015-10-05 18:58:18 GAEBUS ebus Energieintegral: -20
2015-10-05 18:58:18 GAEBUS ebus statEnergieertrag: Hour: 0 Day: 10 Month: 28 Year: 28 (since: 2015-10-03 )


Ich habe schon die Optionen ignoreDefaultAssignments mit 0 und 1 probiert. excludedReadings ebenfalls auf diese 4 Reading gesetzt. Hat leider alles nichts geholfen.

Gibts dazu eine Idee?

Gruß Martin

tupol

#130
Das ist korrekt. Die Statistik wird jedesmal aktualisiert, wenn ein notify-event auf dem Gerät erzeugt wird.

gima84

Danke für die Antwort. Gibts eine Möglichkeit das zu verhindern, oder macht das aus Architektursicht keinen Sinn?

StefanW

Hallo,

wäre es möglich, das Modul um das reading temperature2 zu erweitern?

Ich möchte nämlich bei einem TX25IT den Wert vom Kabelsensor auch mit erfassen.

Gruß
Stefan

optimizer

Hallo tupol,

im Sub statistics_doStatisticSpecialPeriod müsste while ( $#hidden > $specialPeriod ) { meiner Meinung nach so lauten: while ( $#hidden >= $specialPeriod ) { (s. Patch-Datei)

Diese Funktion hat mich dabei inspiriert, einen lang ersehnten Wunsch umzusetzen ;) : einen rollierenden Monatszeitraum (z.B. 12 Monate) mit dem davor liegenden Zeitraum vergleichen zu können.
Die neue Funktion "statistics_doStatisticSpecialPeriodMonth" mit dem neuen Attribut "specialDeltaPeriodMonth" erzeugt dann zwei Readings: stat*specialPeriodMonth u. stat*specialPeriodMonthLast

Eine weitere Funktion "ReadStatistik" hilft vielleicht auch anderen, die einen Hour/Day/Month/Year-StatistikWert aus so einem Reading
Hour: 0.2 Day: 11.8 Month: 11.8 Year: 123.0
ermitteln wollen: Z.B. gibt dann der Aufruf ReadStatistik("DeinDeviceName","statReadingName","Month") den jeweiligen Monatswert zurück.

Wäre schön, wenn du die Änderungen in das Modul aufnehmen könntest. (s. Patch-Datei)

Gruß
optimizer

PS: Als weitere Möglichkeit könnte man die Funktion noch allgemeiner gestalten, um alle Perioden und verschiedene Funktionen (sum, avg) zu ermöglichen.
z.B. mit Attribut specialDeltaPeriodNew 12 month avg
einen Durchschnitt über die letzten 12 Monate.
nur so 'ne Idee  :)

tupol

Hallo Optimizer,

Danke für die Vorschläge.
Das mit dem "while" erschließt sich mir aber nicht. Meines Erachtens ist da kein Fehler.

Für die specialPeriods müsste etwas allgemeineres ähnlich der singularReadings aufgebaut werden - mit mehreren Perioden für definierte Readings. Da habe ich ein statistics_doStatisticSpecialPeriod2 angefangen, bin aber noch nicht weit gekommen. Insbesondere die Attribute-Definition wird einfach immer unübersichtlicher

ReadStatistiks ist sinnvoll aber besser in myUtils und der Wiki aufgehoben. Für das statistics-Modul gibt es ja bereits singularReadings

Gruß

tupol