Autor Thema: Use of uninitialized value $msg in concatenation (.) 11_FHT.pm line 708  (Gelesen 1796 mal)

Offline Hinata

  • New Member
  • *
  • Beiträge: 39
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

Offline rudolfkoenig

  • Administrator
  • Hero Member
  • *****
  • Beiträge: 25489
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.

Offline Hinata

  • New Member
  • *
  • Beiträge: 39
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

Offline Hinata

  • New Member
  • *
  • Beiträge: 39
Ich habe die geänderte Zeile in meinen Code eingefügt: funktioniert

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

 

decade-submarginal