Use of uninitialized value $msg in concatenation (.) 11_FHT.pm line 708

Begonnen von Hinata, 29 Januar 2022, 08:42:48

Vorheriges Thema - Nächstes Thema

Hinata

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

rudolfkoenig

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.

Hinata

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

Hinata

Ich habe die geänderte Zeile in meinen Code eingefügt: funktioniert


Log3 $io, 5, "getFhtBuffer: $count ".($msg ? $msg : "<empty>");