Hallo,
Ich habe eine FHZ1300 und bei der Kommunikation mit einem FHT80b bekomme ich den Fehler unten. Die Kommunikation funktioniert prinzipiell, der Fehler kommt nur sporadisch.
Auf der FHZ1300 ist fhtsoftbuffer 1 gesetzt. Bei gesetztem fhtsoftbuffer 1 wird auch ab und zu ,,FHZ get fhtbuf" öfter aufgerufen was dann anscheinend zu ,,Unkown code" führt.
2022.01.29 03:33:34 3: Watchdog wd_ga_Heizung triggered
2022.01.29 03:33:34 2: FHZ get fhtbuf
2022.01.29 03:33:34 1: PERL WARNING: Use of uninitialized value $msg in concatenation (.) or string at ./FHEM/11_FHT.pm line 708.
2022.01.29 03:33:34 2: FHZ get fhtbuf
2022.01.29 03:33:34 2: FHZ get fhtbuf
2022.01.29 03:33:34 2: FHT set ga_Heizung report2 255
2022.01.29 03:37:35 2: FHZ get fhtbuf
2022.01.29 03:37:35 2: FHT set ga_Heizung report2 255
2022.01.29 05:43:44 3: Watchdog wd_sz_Heizung triggered
2022.01.29 05:43:44 2: FHZ get fhtbuf
2022.01.29 05:43:45 2: FHZ get fhtbuf
2022.01.29 05:43:46 2: FHZ get fhtbuf
2022.01.29 05:43:47 2: FHZ get fhtbuf
2022.01.29 05:43:48 2: FHZ get fhtbuf
2022.01.29 05:43:48 2: FHZ get fhtbuf
2022.01.29 05:43:49 3: FHZ_0: Unknown code 8107c9d3010285014a, help me!
2022.01.29 05:43:50 3: FHZ_0: Unknown code 8107c9d3010285014a, help me!
2022.01.29 05:43:50 3: FHZ_0: Unknown code 8107c9d3010285014a, help me!
2022.01.29 05:43:50 3: FHZ_0: Unknown code 8107c9d3010285014a, help me!
2022.01.29 05:43:50 3: FHZ_0: Unknown code 8107c9d3010285014a, help me!
2022.01.29 05:44:19 2: FHZ get fhtbuf
2022.01.29 05:44:19 2: FHT set sz_Heizung report2 255
Wenn man sich den Code anschaut prüft das anschließende return $msg, jedoch nicht das Log?
for(;;) {
return 0 if(!defined($io->{FD})); # Avoid crash if the CUL/FHZ is absent
my $msg = CallFn($io->{NAME}, "GetFn", $io, (" ", "fhtbuf"));
Log3 $io, 5, "getFhtBuffer: $count $msg";
return hex($1) if($msg && $msg =~ m/=> ([0-9A-F]+)$/i);
return 0 if($count++ >= 5);
}
Danke für Hinweise
Danke fuer den Hinweis, ich habe die WARNING Nachricht gefixt.
Zum Rest der Meldungen:
Dieser Code versucht bis zu 6-mal eine FHZ-interne Variable (laenge des Puffers) abzufragen und wartet (FHEM blockierend) jeweils eine Sekunde.
In dem abgebildeten Fall hat das FHZ alle Anfragen mit ca 5 Sekunden Verspaetung beantwortet.
Da eine spontane Meldung des Antwortes nicht vorkommt, gibt es auch keinen Parser dafuer, daher die "Unknown code" Meldungen.
Diese Stelle im Code ist 12+ Jahre alt, die richtige Loesung waere ein Umbau auf nicht blockierendes Warten.
Angesichts des Aufwandes fuer mich (geschaetzt 0.5-1 Tag), der Auswirkung fuer den Benutzer, und der abnehmenden Anzahl der Anwender plane das aber nicht zu tun.
Vielen Dank für die schnelle Antwort!
Eine Idee warum die FHZ1300 sporadisch mit 5s Verspätungen antwortetet? Das kommt nur 1-2 mal pro Tag vor und regelmäßig 1x nachts wenn ich an mehreren FHZ (6) den Modus (auto/manuell) setze.
Da alles funktioniert denke ich auch, das ein größerer Umbau wenig Sinn macht
Ich habe die geänderte Zeile in meinen Code eingefügt: funktioniert
Log3 $io, 5, "getFhtBuffer: $count ".($msg ? $msg : "<empty>");