Hallo zusammen,
ich habe an meinem LaCrosseGateway eine DHT22 angeschlossen, der eine Raumtemperatur liefert.
Seit einem Update am 27. Dezember 2019 funktionert das Logging der Temperatur in LogDb nicht mehr.
Das scheint mit dem Attribut event-aggregator zusammen zu hängen.
Kann das mit folgender Änderung zu tun haben?
https://forum.fhem.de/index.php/topic,92841.0.html
Ich habe diese Zeilen zurück geändert, nun funktioniert das Logging wieder.
Definition des Attributes:
attr myLaCrosseGateway1 event-aggregator temperature::none:median:600
Danke und Grüße
Rainer
ZitatKann das mit folgender Änderung zu tun haben?
Vorstellbar ist es, genaueres kann nur der Maintainer (https://fhem.de/MAINTAINER.txt) sagen.
Falls er sich nicht meldet, bitte ihn per PM benachrichtigen.
Hallo,
mein event-aggregator feuert ebenfalls keine Events mehr. Das System war einige Monate unbeaufsichtigt gelaufen und ich habe am 6. Januar ein Update durchgeführt.
Der Aggregator soll den minimalen und maximale Wert je eines Readings aus den jeweils letzten 14 Stunden loggen.
event-aggregator TMax14::none:max:50400,TMin14::none:min:50400
Es scheint dass die Aggregation selbst funktioniert, nur werden die Readings nicht mit den Aggregaten sondern immer mit dem aktuellen Wert angezeigt. Und: keine Events....
{ Dumper($defs{"HT_AussenT14"}{READINGS}{"TMax14"}{".ts"}) }
$VAR1 = bless( {
'v' => '9.6',
'_t' => '1579290042.60003',
'_t0' => '1579239905.71996',
'tSeries' => [
'1579239905.71996',
'1579240207.06044',
'1579240508.37902',
...
'1579290042.60003'
],
'sd' => '2.37876994891816',
'_M' => '9.5563829787234',
'autoreset' => undef,
'integral' => '1796.6',
'_S' => '1058.14818986683',
'method' => 'none',
'count' => 188,
'vSeries' => [
'5.6',
'5.6',
'5.6',
'5.6',
...
'9.6',
'9.6',
'9.6'
],
'n' => 188,
'lost' => 0,
'max' => '12.8',
't' => '1579290042.60003',
'holdTime' => 50400,
't0' => '1579239905.71996',
'median' => '9.8',
'min' => '5.3',
'_v' => '9.6',
'mean' => '9.5563829787234',
'v0' => '5.6'
}, 'TimeSeries' );
Das Reading TMax14 ist entsprechend leider nicht der max-Wert sondern der letzte in der Serie...
NR 274
STATE HeizMode: Winter Min: 9.6 Max: 9.6
TYPE dummy
READINGS:
2020-01-16 21:42:16 StatusQuo change
2020-01-17 20:50:49 TMax14 9.6
2020-01-17 20:50:49 TMin14 9.6
Hat vor dem Update sauber funktioniert. Roll-back auf die alte Version würde ich gerne vermeiden. Aggregationsmethode ändern oder Aggregator herausnehmen wäre in meinem Fall keine Option.
Gruß
Peter
Hallo frickelpiet,
Schau dir den Link im ersten Post an und baue die beiden Zeilen in der fhem.pl zurück.
Dann klappt es wieder.
Grüße
ergerd
Hallo ergerd,
sieht bei mir so aus:
require "TimeSeries.pm";
$ts = TimeSeries->new( { method => $method,
autoreset=>(looks_like_number($duration) ? $duration:undef),
holdTime =>(looks_like_number($holdTime) ? $holdTime:undef)});
$readings->{".ts"}= $ts;
Wenn ich den Post richtig lese, sollte es mit dem "looks_like_number()" funktionieren. Bei mir leider nicht... :-(
Ich hab mal - obwohl ich ja nicht gerne am Code herumpfusche - zum Testen den alten Code restauriert...
$ts= TimeSeries->new( { method => $method,
autoreset => $duration,
holdTime => $holdTime } );
...und "schwupps!" kommen die Events wieder durch"!
Wirklich intuitiv ist das nicht. Und mein Problem ist: was passiert beim nächste Update?!
Peter
Hallo frickelpiet,
Genau das habe ich auch gemacht.
Und fhem.pl vom Update ausgeschlossen.
Grüße
ergerd
Zitat von: ergerd am 18 Januar 2020, 21:01:10
...
Und fhem.pl vom Update ausgeschlossen.
Grüße
ergerd
Das ist ja für mich keine Lösung...
Ich bin kein Perl-Programmierer, aber es scheint das die Konstruktion des Objekts und Fehlerbehandlung in
TimeSeries.pm stark davon abhängt ob autoreset als Zahl, "
undef" oder
'' übergeben wird. Evtl. gilt ähnliches für holdTime. Der Test durch "
looks_like_number" und "
defined()" führt dann nicht unbedingt zum selben gewünschten Verhalten...
ich werde es mal bei den Verantwortlichen für
TimeSeries.pl und
fhem.pl (
sub readingsBulkUpdate()) versuchen...
Mit dem Update von heute (# $Id: fhem.pl 21044 2020-01-24 17:56:00Z rudolfkoenig $) funktioniert mein Event-Aggregator wieder wie erwartet. Danke an die Maintainer!
https://forum.fhem.de/index.php/topic,92841.msg1016616.html#msg1016616 (https://forum.fhem.de/index.php/topic,92841.msg1016616.html#msg1016616)
Update: Natürlich gibt es jetzt wieder die Warnung im Log:
PERL WARNING: Argument "" isn't numeric in numeric ge (>=) at FHEM/TimeSeries.pm line 265.
Wenn der Wert von autoreset in der Definition weggelassen wird, ist der >= Operator halt etwas überfordert.
Für mich ist eine "Warning" aber das kleinere Übel (wenn überhaupt eins).
Hallo frickelpiet,
Vielen Dank für deinen Einsatz, desgleichen an die Ausführenden!
Läuft bei mir auch wieder.
Grüße
Rainer