Hallo Zusammen,
ich nutze schon seit längerem das Statistics Modul,
funktionierte nun auch recht zuverlässig, bis ich wieder mal ein Update gemacht habe.
Seit ein paar Tagen habe ich nun das Problem,
dass bei diversen Readings nun plötzlich ...HourLast nicht mehr erzeugt wird
sondern nur beim Tageswechsel.
Ich steh auf dem Schlauch und hab keinen Plan woran das nun plötzlich liegen kann.
Das Reading das ich triggere heißt: myErtrag
Hat jemand einen Tipp?
VG
Knut
defmod Statistik_SolvisBen statistics SolarNeu|WWasserNeu|SolvisBenBrenner
attr Statistik_SolvisBen deltaReadings myOnTimeH,myErtrag,myVerbrauch
attr Statistik_SolvisBen disable 0
attr Statistik_SolvisBen ignoreDefaultAssignments 1
attr Statistik_SolvisBen room System->FHEM
attr Statistik_SolvisBen singularReadings (SolvisBenBrenner|SolarNeu|WWasserNeu):(myOnTimeH|myErtrag|myVerbrauch):Delta:(Hour|Day|Month|Year)
defmod SolarNeu dummy
attr SolarNeu alias Solarkollektoren
attr SolarNeu devStateIcon on:ios-on-red_fh off:ios-on-blue2_fh
attr SolarNeu event-min-interval .*:3500
attr SolarNeu event-on-change-reading .*.temperatur:0.5,myLeistung:10,Durchfluss:1,stat.*, myMI:1,.*
attr SolarNeu group Energie
attr SolarNeu room Unsorted
attr SolarNeu sortby 008
*
*
*
setstate SolarNeu 2020-06-17 20:07:40 statMyErtrag Hour: 0.2 Day: 0.2 Month: 146.6 Year: 1620.8
setstate SolarNeu 2020-06-17 20:07:40 statMyErtragDay 0.2
setstate SolarNeu 2020-06-17 00:00:22 statMyErtragDayLast 3.7
setstate SolarNeu 2020-06-17 20:07:40 statMyErtragHour 0.2
setstate SolarNeu 2020-06-17 00:00:22 statMyErtragHourLast 3.7
setstate SolarNeu 2020-06-17 00:00:22 statMyErtragLast Hour: 3.7 Day: 3.7 Month: 442.5 Year: 1529.8 (since: 2019-06-22 )
Hallo Zusammen,
nach etwas mehr rumprobieren und erneutem Neustart funktioniert das System wieder.
Was mir aufgefallen ist, dass ein Statistics Objekt mit periodChangePreset=10 funktionierte
hingegen ein Objekt ohne dieses Attribut nicht.
Nachdem ich das nichtfunktionierende Objekt auf periodChangePreset=5 gestellt habe funktioniert es.
Hat sich da was verändert?
Neustart kann nicht wirklich die Lösung sein, denn ich habe den RPi vorher mehrere Male gestartet.
Grüße
Knut
Die Funktionen von statistics wurden seit März 2018 nicht geändert.
Du zeigst die Readings nicht, die zur Kalkulation gehören, bzw. die Änderungen davon.
Mit deinem event-min-interval hast Du maximal ein Event pro Stunde.
Mein Konstrukt hat vor dem Update in der gezeigten Form funktioniert
und ich möchte auch nicht behaupten dass mein Konstrukt optimal war/ist,
ich will es ja nur verstehen.
Das vorheriges Update war am 17.08.2019
Ich habe
attr SolarNeu event-min-interval .*:3500
attr SolarNeu event-on-change-reading .*.temperatur:0.5,myLeistung:10,Durchfluss:1,stat.*, myMI:1,.*
so verstanden, dass
- mit Änderung jederzeit (solange der Differenzbetrag überschritten ist)
- ohne Änderung dann spätestens nach einer Stunde
ein Event erzeugt (zugelassen?) wird.
Dieses Konstrukt hatte ich auch gleich im Verdacht, aber anhand der rot Einfärbung der Events
konnte ich ja sehen, dass die Ereignisse weiterhin durchkommen.
Irritierend war halt, dass ein statistics mit
periodChangePreset ja weiterhin funktionierte
und seit dieser Änderung (incl. restart) funktioniert es ja wieder wie zuvor.
Was meinst du mit?
ZitatDu zeigst die Readings nicht, die zur Kalkulation gehören, bzw. die Änderungen davon.
das besagte Reading hab ich doch hier gezeigt
setstate SolarNeu 2020-06-17 20:07:40 statMyErtrag Hour: 0.2 Day: 0.2 Month: 146.6 Year: 1620.8
setstate SolarNeu 2020-06-17 20:07:40 statMyErtragDay 0.2
setstate SolarNeu 2020-06-17 00:00:22 statMyErtragDayLast 3.7
setstate SolarNeu 2020-06-17 20:07:40 statMyErtragHour 0.2
setstate SolarNeu 2020-06-17 00:00:22 statMyErtragHourLast 3.7
setstate SolarNeu 2020-06-17 00:00:22 statMyErtragLast Hour: 3.7 Day: 3.7 Month: 442.5 Year: 1529.8 (since: 2019-06-22 )
Zitat von: KNUT345 am 20 Juni 2020, 15:55:23
Mein Konstrukt hat vor dem Update in der gezeigten Form funktioniert
und ich möchte auch nicht behaupten dass mein Konstrukt optimal war/ist,
ich will es ja nur verstehen.
Das vorheriges Update war am 17.08.2019
Wie gesasgt: hier sind die Änderungen des Moduls:
@20819 23 déc. 2019 23:07:57 tupol JSONMETER/statistics: POD Correction
@16438 18 mars 2018 18:51:57 tupol LUXTRONIK2,OPENWEATHER,PROPLANTA,JSONMETER,FRITZBOX,statistics: docu
@16416 16 mars 2018 07:09:02 tupol LUXTRONIK2+statistics: docu
@16357 9 mars 2018 09:01:35 tupol statistics: NOTIFYDEV
@16281 26 févr. 2018 18:40:38 tupol statistics: bugfix _count:
Seit dem 9 März 2018 gab es nur Änderungen in der Doku / CommandRef und neue "knownReadings". Du kannst gerne auch im Diff gucken: https://svn.fhem.de/trac/changeset?reponame=&new=20819%40trunk%2Ffhem%2FFHEM%2F98_statistics.pm&old=16357%40trunk%2Ffhem%2FFHEM%2F98_statistics.pm
Deswegen kannst Du auch ruhig das Modul statistics.pm aus dem restoreDir wieder holen. Und gucken, ob das Problem noch besteht.
Zitat von: KNUT345 am 20 Juni 2020, 15:55:23
Ich habe
attr SolarNeu event-min-interval .*:3500
attr SolarNeu event-on-change-reading .*.temperatur:0.5,myLeistung:10,Durchfluss:1,stat.*, myMI:1,.*
so verstanden, dass
- mit Änderung jederzeit (solange der Differenzbetrag überschritten ist)
- ohne Änderung dann spätestens nach einer Stunde
ein Event erzeugt (zugelassen?) wird.
Hast auch richtig verstanden, aber das gielt nur für die Readings, die in event-on-change-reading stehen. Ich hatte das ".*" am Ende übersehen, und dachte, die Events mit "MyErtrag" werden nicht berücksichtigt.
Letztens: mit
ZitatDu zeigst die Readings nicht, die zur Kalkulation gehören, bzw. die Änderungen davon.
meinte ich die Events, die zur Kalkulation führen, nicht die vom statistics Modul.
Seltsam.
Dann hat es evtl. doch mit Restart zu tun.
Meinst du die?
attr SolarNeu userReadings myLeistungN:(Vorlauftemperatur.*|Ruecklauftemperatur.*|Durchfluss.*) {sprintf("%.1f",(ReadingsVal($name,"Vorlauftemperatur",0)-ReadingsVal($name,"Ruecklauftemperatur",0))*ReadingsVal($name,"Durchfluss",0)*ReadingsVal($name,"WFaktor",0))},\
myLeistung:myLeistungN.* {my $a=ReadingsVal($name,"myLeistungN",0);;;; if ($a<=0) {return 0.0} else {return $a}},\
myErtragN:myLeistungN.* integral {ReadingsVal($name,"myLeistung",0)},\
myErtrag:myLeistungN.* {sprintf("%.1f",ReadingsVal($name,"myErtragN",0)/1000/3600)},\
Danke und Grüße
Knut
Nein, ich meine die Events aus dem Eventmonitor (oder evtl. aus der Log), bei Änderungen von SolarNeu:myErtrag.
Evtl. könnten die setstates aus der raw Def reichen, aber nicht nur von den "stat...." Readings sondern auch von den Werte, die zur Kalkulation führen.
Z.B.: ich möchte die Korrelation zwischen statMyErtragHour und myErtrag, oder zwischen statMyLeistungHour und myLeistung sehen
Alternativ: ein kompletes "list" von SolarNeu
Du hast sowas gemeint?
2020-06-21 16:09:19 dummy SolarNeu Vorlauftemperatur: 62.1
2020-06-21 16:09:19 dummy SolarNeu myLeistungN: 5748.7
2020-06-21 16:09:19 dummy SolarNeu myLeistung: 5748.7
2020-06-21 16:09:19 dummy SolarNeu myErtragN: 11484395470.2797
2020-06-21 16:09:19 dummy SolarNeu myEffizienz: 174.892
2020-06-21 16:09:19 dummy SolarNeu Durchfluss: 362
2020-06-21 16:09:19 dummy SolarNeu myLeistungN: 5308.8
2020-06-21 16:09:19 dummy SolarNeu myLeistung: 5308.8
2020-06-21 16:09:19 dummy SolarNeu myEffizienz: 161.509
2020-06-21 16:09:48 dummy SolarNeu Durchfluss: 340
2020-06-21 16:09:48 dummy SolarNeu myLeistungN: 4986.1
2020-06-21 16:09:48 dummy SolarNeu myLeistung: 4986.1
2020-06-21 16:09:48 dummy SolarNeu myErtragN: 11484546421.6137
2020-06-21 16:09:48 dummy SolarNeu myErtrag: 3190.2
2020-06-21 16:09:48 dummy SolarNeu mySolvis: 3272.4
2020-06-21 16:09:48 dummy SolarNeu myEffizienz: 151.692
2020-06-21 16:09:48 dummy SolarNeu statMyErtrag: Hour: 0.5 Day: 8.6 Month: 186.2 Year: 1660.4
2020-06-21 16:09:48 dummy SolarNeu statMyErtragHour: 0.5
2020-06-21 16:09:48 dummy SolarNeu statMyErtragDay: 8.6
2020-06-21 16:09:48 dummy SolarNeu statMyErtragMonth: 186.2
2020-06-21 16:09:48 dummy SolarNeu statMyErtragYear: 1660.4
2020-06-21 16:09:48 dummy SolarNeu statMyErtragTrend: 3510.6
2020-06-21 16:10:18 dummy SolarNeu Vorlauftemperatur: 61.4
2020-06-21 16:10:18 dummy SolarNeu myLeistungN: 4709.1
2020-06-21 16:10:18 dummy SolarNeu myLeistung: 4709.1
2020-06-21 16:10:18 dummy SolarNeu myErtragN: 11484691605.9776
2020-06-21 16:10:18 dummy SolarNeu myEffizienz: 904.552
2020-06-21 16:10:18 dummy SolarNeu Ruecklauftemperatur: 50.1
2020-06-21 16:10:18 dummy SolarNeu myLeistungN: 4471.7
2020-06-21 16:10:18 dummy SolarNeu myLeistung: 4471.7
2020-06-21 16:10:18 dummy SolarNeu myEffizienz: 858.951
2020-06-21 16:10:18 dummy SolarNeu Durchfluss: 273
2020-06-21 16:10:18 dummy SolarNeu myLeistungN: 3590.5
2020-06-21 16:10:18 dummy SolarNeu myLeistung: 3590.5
2020-06-21 16:10:18 dummy SolarNeu myEffizienz: 689.685
Genau das meinte ich ja.
Da sieht man aber, dass myErtragHour doch gesetzt wird. Vielleicht weil Du noch periodChangePreset hast?
Wie sieht es ohne aus?
Gleichzeitig wäre es interessant, mit verbose 4 auf statistics zu sehen, was die Log bei der Kalkulation sagt.