Closed sidey79 closed 2 years ago
Test 09_parseDatat.t
aus Modul 14_SD_WS09
mit folgender FHEM Version ausgeführt:
2022.04.13 22:42:12 3: version : Latest Revision: 25531
File Rev Last Change
fhem.pl 25521 2022-01-20 18:25:19Z rudolfkoenig
No Id found for 99_DockerImageInfo.pm
98_FhemTestUtils.pm 22660 2020-08-24 10:17:42Z rudolfkoenig
No Id found for 00_load.t
14_SD_WS09.pm 21622 2021-08-10 19:51:16Z sidey79
# $Id: 00_SIGNALduino.pm v3.5.4 2022-03-12 17:55:30Z sidey79 $
99_SUNRISE_EL.pm 24249 2021-04-14 05:45:49Z rudolfkoenig
99_Utils.pm 24128 2021-04-02 16:29:11Z rudolfkoenig
98_version.pm 15140 2017-09-26 09:20:09Z markusbloch
DevIo.pm 24800 2021-07-26 11:42:33Z rudolfkoenig
GPUtils.pm 19666 2019-06-20 11:17:29Z CoolTux
HttpUtils.pm 25487 2022-01-17 20:59:02Z rudolfkoenig
Meta.pm 21008 2020-01-18 10:22:10Z loredo
RTypes.pm 10476 2016-01-12 21:03:33Z borisneubert
# $Id: SD_ProtocolData.pm 3.5.x 2022-01-30 10:19:30Z elektron-bbs $
ok
Ergebnis
All tests successful. Files=1, Tests=2, 1 wallclock secs ( 0.04 usr 0.00 sys + 0.44 cusr 0.04 csys = 0.52 CPU) Result: PASS
Revision 25634 funktioniert auch noch
@elektron-bbs
Es sieht so aus, als ob ich den Test durch mehrere Revs laufen lassen musste um den zuletzt funktionalen zu finden.
Mit dem Update Befehl ist mir nichts bekannt, wie ich eine spezifische Revision bekomme.
Wenn ich das fhem Verzeichnis aus dem SVN hole, könnte ich vor jedem Testlauf eine spezifische Revision holen. Sobald der Test fehl schlägt wissen wir, welche Änderungen es verursacht.
Kann es sein, das sich an "time" etwas geändert hat?
Auf dem System, wo es noch funktioniert, liefert mir dieses:
my $testtime = time;
Log3 $hash, 4,"SD_WS09_WindDirAverage_01 $name: time=$testtime";
den Wert: time=1649962931 aber bei dem, wo es nicht mehr funktioniert, den Wert: time=1649962935.2339
Mit dem float scheint
$weight = $decay ** ($age / $avtime);
aber nicht zu funktionieren.
Wenn ich in der sub SD_WS09_WindDirAverage die Zeile
my $ctime = time;
ändere in:
my $ctime = int time;
funktioniert die Durchschnittsberechnung wieder:
2022.04.14 21:13:56 4: SD_WS09_WindDirAverage --- OK ----
2022.04.14 21:13:56 4: SD_WS09_WindDirAverage Math::Trig:OK
2022.04.14 21:13:56 4: SD_WS09_WindDirAverage_01 WH1080: time=1649963636.57536
2022.04.14 21:13:56 4: SD_WS09_WindDirAverage_01 WH1080 :Speed=0.3 DirR=1.57 Time=2022-04-14 21:13:56
2022.04.14 21:13:56 4: SD_WS09_WindDirAverage_02 WH1080 :avtime=600 decay=0 minspeed=0
2022.04.14 21:13:56 4: SD_WS09_WindDirAverage_04 WH1080 :Speed=0.3 Dir=1.57 Time=2022-04-14 21:13:56 minspeed=0 ctime=1649963636 ltime=1649962935 stime=1649962410 num=2
2022.04.14 21:13:56 4: SD_WS09_WindDirAverage_06 WH1080 :Speed=0.3 Dir=1.57 Time=2022-04-14 21:13:56 minspeed=0 num=2
2022.04.14 21:13:56 4: SD_WS09_WindDirAverage_07 WH1080 i=0 Speed=0.30 Dir=1.57 Time=21:02:15 ctime=1649963636 akt.=1649962935
2022.04.14 21:13:56 4: SD_WS09_WindDirAverage_08 WH1080 i=0 Speed=0.30 Dir=1.57 Time=21:13:56 vec=0.30/0.00 age=0 1.00
2022.04.14 21:13:56 4: SD_WS09_WindDirAverage_09 WH1080 Mittelwert über 1 Werte ist 90, avspeed=0.3
2022.04.14 21:13:56 4: SD_WS09_WindDirAverage_END WH1080 Mittelwert=90
Ja, an time würde tatsächlich etwas geändert.
Hier die Referenz zur Änderung https://github.com/fhem/fhem-mirror/commit/0635ed35b4c2aa6f1ef683caf6e779396d3b421f
Wenn wir anstelle time() den Aufruf in CORE::time() ändern, dann geht es wieder wie zuvor.
Von @elektron-bbs
Woran es genau liegt, habe ich noch nicht heraus gefunden. Der Effekt ist hier aber auch nachvollziehbar. Auf einem System, wo das letzte Update schon etwas zurück liegt (06.02.2022) liefert das Log folgendes:
Auf dem anderen Rechner (Update vor wenigen Minuten) sieht es so aus:
Irgend etwas in der sub SD_WS09_WindDirAverage wird da jetzt anders berechnet.
Originally posted by @elektron-bbs in https://github.com/RFD-FHEM/RFFHEM/issues/1089#issuecomment-1097942106