Vertständnis von event-aggregator

Begonnen von sz_wolfi, 14 Dezember 2019, 21:09:24

Vorheriges Thema - Nächstes Thema

sz_wolfi

1. Update: frische VM, neues fhem-5.9.tar -> SENSOR_2_test dummy: funktioniert ! - integrale werden angezeigt. - GEHT!

... jetzt muss ich diese 'funktionierende' fhem-instanz auf die alte VM dazu packen - um es weiter einzugrenzen. :-(
(liegt's an fhem - oder liegt's am perl ? - das OS ist ja beides mal gleich - bzw. 'fast gleich')


sz_wolfi

2nd Update: frisches fhem-5.9 auf der gleichen VM geht AUCH ! - liegt also nicht am perl.

ich habe als "Produktions"-Release - mit fhem-5.7 angefangen - und das dauernd upgedatet.
(ein update-check sagt 'nothing to do ...')

scheint aber nicht das gleiche zu sein wie ein 'frisches' 5.9 :-(

sz_wolfi

3. Update:
fhem 5.9 'stock' (also das tar.gz ohne Updates) - funktioniert - und wenn ich da drin 'update' machen (also: 16.12.2019) -> geht's wieder NICHT mehr!
wird (fuer mich) akt. etwas zu aufwaendig, das Update (was ja nicht gerade klein ist) weiter zu zerpflücken :-(
... aber soweit kann ich es rel. sicher eingrenzen.

mumpitzstuff

Ich habe nicht alles gelesen aber kannst du mal probieren folgendes zurückzubauen?

https://forum.fhem.de/index.php/topic,92841.0.html

Dieser Patch wurde vor kurzem eingecheckt und hat jetzt vielleicht doch andere Auswirkungen als gedacht.

sz_wolfi

Zitat von: mumpitzstuff am 16 Dezember 2019, 17:47:59
Ich habe nicht alles gelesen aber kannst du mal probieren folgendes zurückzubauen?

https://forum.fhem.de/index.php/topic,92841.0.html

Dieser Patch wurde vor kurzem eingecheckt und hat jetzt vielleicht doch andere Auswirkungen als gedacht.

bingo!


fhem:/opt/fhem # diff -u fhem.pl-ORIG fhem.pl
--- fhem.pl-ORIG        2019-12-16 21:29:19.686210089 +0100
+++ fhem.pl     2019-12-16 21:31:42.283311657 +0100
@@ -4874,8 +4874,10 @@
       } else {
         require "TimeSeries.pm";
         $ts = TimeSeries->new( { method => $method,
-                  autoreset=>(looks_like_number($duration) ? $duration:undef),
-                  holdTime =>(looks_like_number($holdTime) ? $holdTime:undef)});
+                  autoreset => $duration,
+                  holdTime => $holdTime } );
+#                  autoreset=>(looks_like_number($duration) ? $duration:undef),
+#                  holdTime =>(looks_like_number($holdTime) ? $holdTime:undef)});
         $readings->{".ts"}= $ts;
         # access from command line:
         # { $defs{"myClient"}{READINGS}{"myValue"}{".ts"}{max} }


wenn ich die zwei Zeilen so zurückbaue - geht's wieder :-)

sz_wolfi

...jetzt  habe ich noch einen weiteren kleinen Bug:

ich nehme diesen Dummy:   --- Integral ueber 60 Sekunden:


defmod AGGR_test dummy
attr AGGR_test event-aggregator MotionFreq::const:integral:60
attr AGGR_test readingList basicSet
attr AGGR_test room TESTING
attr AGGR_test setList basicSet:slider,0,1,100
attr AGGR_test userReadings MotionFreq:basicSet.* { if (ReadingsNum("$NAME","basicSet",0) > 0) { Log 1,"uR: $NAME = 1";; return 1;;} else {Log 1,"uR: $NAME = 0";; return 0;;} }
attr AGGR_test webCmd basicSet


und dieses DOIF - um den Dummy - alle 5 sek umzuschalten:


defmod doif_half DOIF ( [+00:00:05] and [AGGR_test:basicSet] == 0 )\
( { Log 1,"doif_half: set to 1";;} set AGGR_test basicSet 1;;)\
DOELSEIF\
( [+00:00:05] and [AGGR_test:basicSet] == 1 )\
( { Log 1,"doif_half: set to 0";;} set AGGR_test basicSet 0;;)
attr doif_half disable 0
attr doif_half do always
attr doif_half room TESTING


...also - alle 5 Sek toggle zwischen 0 und 1

MEINE Erwartung waere - dass das Integral - ueber 60 Sek - immer '30' ist.
aber das Reading geht dauernd hoeher ... ist jetzt bei 299.x - also 300 !

äh - Moment - da war ja was vorher:


{ Dumper($defs{"AGGR_test"}{READINGS}{"MotionFreq"}{".ts"}) }


und schon kommt die Antwort: (nur der Anfang - langt aber um die Loesung zu sehen):


$VAR1 = bless( {
                 '_M' => '2.49998664259911',
                 '_S' => '789.285900270158',
                 '_t' => '1576531377.00512',
                 '_t0' => '1576530777.00487',
                 '_v' => 0,
                 'autoreset' => '',
                 'count' => 121,
>>>>>>>                'holdTime' => 600,
                 'integral' => '299.998397111893',
                 'lost' => 0,


... die 'holdTime' - kann man nicht mehr im laufenden Betrieb ändern - via 'attr'.

Klar, das WEB-interface zeigt den 'neuen' Wert an - ist aber 'fake news'. ;-)

war auf 600 - und hatte sie später via 'attr' auf 60 "geändert".

Da hilft kein 'attribut'-Delete ( und neu setzen ) - nur ein fhem-restart :-(

ABER:
fuer '600' Sek 'holdtime' - und 50% "Tastverhältnis" - ist das Integral dann mit ~300 vollkommen korrekt.

... meine "Wusel"-Frequenz-Berechnung sollte dann funktionieren :-)

stromer-12

Zitat von: sz_wolfi am 16 Dezember 2019, 21:35:16
bingo!


fhem:/opt/fhem # diff -u fhem.pl-ORIG fhem.pl
--- fhem.pl-ORIG        2019-12-16 21:29:19.686210089 +0100
+++ fhem.pl     2019-12-16 21:31:42.283311657 +0100
@@ -4874,8 +4874,10 @@
       } else {
         require "TimeSeries.pm";
         $ts = TimeSeries->new( { method => $method,
-                  autoreset=>(looks_like_number($duration) ? $duration:undef),
-                  holdTime =>(looks_like_number($holdTime) ? $holdTime:undef)});
+                  autoreset => $duration,
+                  holdTime => $holdTime } );
+#                  autoreset=>(looks_like_number($duration) ? $duration:undef),
+#                  holdTime =>(looks_like_number($holdTime) ? $holdTime:undef)});
         $readings->{".ts"}= $ts;
         # access from command line:
         # { $defs{"myClient"}{READINGS}{"myValue"}{".ts"}{max} }


wenn ich die zwei Zeilen so zurückbaue - geht's wieder :-)

Bei mir ebenso, nach zurückändern dieser beiden Zeilen, geht bei mir die Event-Aggregatoren wieder.
FHEM (SVN) auf RPi1B mit HMser | ESPLink
FHEM (SVN) virtuell mit HMLAN | HMUSB | CUL

ergerd

Ich habe auch die beiden Zeilen wieder zurück geändert, weil event-aggregator nicht mehr funktioniert hat.

Grüße
ergerd
FHEM auf RasPi 4, ZigBee, 1Wire2WLAN, DS2423, Buderus KM200, Button+, LaCrosseGateway, PCA301, ConBee III, LuftdatenInfo, OneWireGW, Div. ESPs u. Shellys

stromer-12

Ich habe noch mal nachgesehen.
Wenn ich bei "median" für das Intervall eine ":0:" anstelle von "::" eintrage geht es mit der aktuellen fhem.pl wieder.
Für mich reicht das erst mal, ohne Änderungen an den Dateien vorzunehmen.
FHEM (SVN) auf RPi1B mit HMser | ESPLink
FHEM (SVN) virtuell mit HMLAN | HMUSB | CUL

thymjan

Seit meinem FHEM-Dezember-Update funktioniert meine event-aggregator Konfiguration ebenfalls nicht mehr.
Folgendes habe ich benutzt um bei einem Sensor Ausreißer auszuschließen:
attr Sensor event-aggregator Messwert::none:median:900
Nun werden die Sensorwerte nicht mehr geloggt.

thymjan

Zitat von: stromer-12 am 29 Dezember 2019, 20:17:33
Ich habe noch mal nachgesehen.
Wenn ich bei "median" für das Intervall eine ":0:" anstelle von "::" eintrage geht es mit der aktuellen fhem.pl wieder.
Für mich reicht das erst mal, ohne Änderungen an den Dateien vorzunehmen.
Werde dies gleich mal testen...

mumpitzstuff

Sag bitte Bescheid ob es dann wieder funktioniert. Falls ja, werde ich die Doku dazu anpassen. Der Patch sollte eigentlich eine nervige Fehlermeldung im Log beheben, hat aber anscheinend unvorhergesehene Auswirkungen.

thymjan

Ich habe zwei Readings mit einem event-aggregator in einer Kommaseparierten Liste. Beim zweiten Reading in der Liste funktioniert die Null. Beim ersten scheint sich nichts zu ändern, hier greift die Konfiguration nicht.

Jetzt habe ich die fhem.pl zurückgeändert und die zwei Nullen wieder entfernt.

Melde mich sobald ich Ergebnisse habe...

thymjan

":0:" oder ehemalige fhem.pl-Version scheint vom Ergebnis doch gleich zu sein.

In folgender Reihe sortiert die median-Funktion die 0.4 nicht mehr aus. Dies hat vor dem update noch funktioniert.
Das kann aber auch an was anderem liegen:
2019-12-29_20:53:45 0.4
2019-12-29_20:53:45 352.5
2019-12-29_20:53:45 352.7
2019-12-29_20:53:48 352.6
2019-12-29_20:58:47 0.4
2019-12-29_20:58:48 352.6
2019-12-29_20:58:48 352.7
2019-12-29_20:58:50 352.7
2019-12-29_21:03:50 0.4
2019-12-29_21:03:50 352.5
2019-12-29_21:03:50 352.9
2019-12-29_21:03:53 352.7
2019-12-29_21:08:52 0.4
2019-12-29_21:08:52 352.7
2019-12-29_21:08:53 352.6
2019-12-29_21:08:55 352.8
2019-12-29_21:13:54 0.4
2019-12-29_21:13:55 352.7
2019-12-29_21:13:55 352.6
2019-12-29_21:13:58 352.9

mumpitzstuff

Hmm das ist tatsächlich eigenartig. Eigentlich sollte die 0.4 hier tatsächlich raus fliegen.

Ich schau mir erst mal das Problem mit :: und :0: noch mal genau an. Alles andere kann ich schlecht beurteilen, da ich nicht der Author des Event aggregators bin.

DOIF kann aber neuerdings auch sowas. Vielleicht liefert das ja bessere Ergebnisse.