getFhtBuffer: 5 Timeout reading answer for get fhtbuf

Begonnen von Hinata, 30 Januar 2022, 08:45:48

Vorheriges Thema - Nächstes Thema

Hinata

Ich habe einen Raspberry Pi 4 mit Raspberry Pi OS Lite und über USB angeschlossener FHZ1300. Bei der Kommunikation mit meinen FHT80b kommt immer beim Tageswechsel die Meldung ,,getFhtBuffer: 5 Timeout reading answer for get fhtbuf", sonst tagsüber nie. Für die FHZ ist fhtsoftbuffer 1.


2022.01.30 00:00:01 2: Deleting ab_Wettersensor-2022-01-16.log
2022.01.30 00:00:01 2: Deleting bb_Heizung-2022-01-16.log
2022.01.30 00:00:01 2: Deleting bb_Raumklima-2022-01-16.log
2022.01.30 00:00:01 2: Deleting bg_Heizung-2022-01-16.log
2022.01.30 00:00:01 2: Deleting bz_Heizung-2022-01-16.log
2022.01.30 00:00:01 2: Deleting dy_Gastherme-2022-01-16.log
2022.01.30 00:00:01 2: Deleting ga_Heizung-2022-01-16.log
2022.01.30 00:00:01 2: Deleting sz_Heizung-2022-01-16.log
2022.01.30 00:00:01 2: Deleting wz_Heizung-2022-01-16.log
2022.01.30 00:00:01 2: Deleting fhem-2022-01-17.log
2022.01.30 00:01:00 3: Modus: Wochenende, Feiertag oder Urlaub zuhause
2022.01.30 00:02:00 3: Modus: Wohnzimmer, Bad ohne Büros heizen
2022.01.30 00:02:00 2: FHZ get   fhtbuf
2022.01.30 00:02:01 3: getFhtBuffer: 0 Timeout reading answer for get fhtbuf
2022.01.30 00:02:01 2: FHZ get   fhtbuf
2022.01.30 00:02:02 3: getFhtBuffer: 1 Timeout reading answer for get fhtbuf
2022.01.30 00:02:02 2: FHZ get   fhtbuf
2022.01.30 00:02:03 3: getFhtBuffer: 2 Timeout reading answer for get fhtbuf
2022.01.30 00:02:03 2: FHZ get   fhtbuf
2022.01.30 00:02:04 3: getFhtBuffer: 3 Timeout reading answer for get fhtbuf
2022.01.30 00:02:04 2: FHZ get   fhtbuf
2022.01.30 00:02:05 3: getFhtBuffer: 4 Timeout reading answer for get fhtbuf
2022.01.30 00:02:05 2: FHZ get   fhtbuf
2022.01.30 00:02:06 3: getFhtBuffer: 5 Timeout reading answer for get fhtbuf
2022.01.30 00:02:06 2: FHZ get   fhtbuf
2022.01.30 00:02:07 3: getFhtBuffer: 0 Timeout reading answer for get fhtbuf
2022.01.30 00:02:07 2: FHZ get   fhtbuf
2022.01.30 00:02:08 3: getFhtBuffer: 1 Timeout reading answer for get fhtbuf
2022.01.30 00:02:08 2: FHZ get   fhtbuf
2022.01.30 00:02:09 3: getFhtBuffer: 2 Timeout reading answer for get fhtbuf
2022.01.30 00:02:09 2: FHZ get   fhtbuf
2022.01.30 00:02:10 3: getFhtBuffer: 3 Timeout reading answer for get fhtbuf
2022.01.30 00:02:10 2: FHZ get   fhtbuf
2022.01.30 00:02:11 3: getFhtBuffer: 4 Timeout reading answer for get fhtbuf
2022.01.30 00:02:11 2: FHZ get   fhtbuf
2022.01.30 00:02:12 3: getFhtBuffer: 5 Timeout reading answer for get fhtbuf
2022.01.30 00:02:12 2: FHZ get   fhtbuf
2022.01.30 00:02:13 3: getFhtBuffer: 0 Timeout reading answer for get fhtbuf
2022.01.30 00:02:13 2: FHZ get   fhtbuf
2022.01.30 00:02:14 3: getFhtBuffer: 1 Timeout reading answer for get fhtbuf
2022.01.30 00:02:14 2: FHZ get   fhtbuf
2022.01.30 00:02:15 3: getFhtBuffer: 2 Timeout reading answer for get fhtbuf
2022.01.30 00:02:15 2: FHZ get   fhtbuf
2022.01.30 00:02:16 3: getFhtBuffer: 3 Timeout reading answer for get fhtbuf
2022.01.30 00:02:16 2: FHZ get   fhtbuf
2022.01.30 00:02:17 3: getFhtBuffer: 4 Timeout reading answer for get fhtbuf
2022.01.30 00:02:17 2: FHZ get   fhtbuf
2022.01.30 00:02:18 3: getFhtBuffer: 5 Timeout reading answer for get fhtbuf
2022.01.30 00:02:18 2: FHZ get   fhtbuf
2022.01.30 00:02:19 3: getFhtBuffer: 0 Timeout reading answer for get fhtbuf
2022.01.30 00:02:19 2: FHZ get   fhtbuf
2022.01.30 00:02:20 3: getFhtBuffer: 1 Timeout reading answer for get fhtbuf
2022.01.30 00:02:20 2: FHZ get   fhtbuf
2022.01.30 00:02:21 3: getFhtBuffer: 2 Timeout reading answer for get fhtbuf
2022.01.30 00:02:21 2: FHZ get   fhtbuf
2022.01.30 00:02:22 3: getFhtBuffer: 3 Timeout reading answer for get fhtbuf
2022.01.30 00:02:22 2: FHZ get   fhtbuf
2022.01.30 00:02:23 3: getFhtBuffer: 4 Timeout reading answer for get fhtbuf
2022.01.30 00:02:23 2: FHZ get   fhtbuf
2022.01.30 00:02:24 3: getFhtBuffer: 5 Timeout reading answer for get fhtbuf
2022.01.30 00:02:24 3: FHZ_0: Unknown code 8107c9d3010285014a, help me!
2022.01.30 00:02:24 3: FHZ_0: Unknown code 8107c9d3010285014a, help me!
2022.01.30 00:02:24 3: FHZ_0: Unknown code 8107c9d3010285014a, help me!
2022.01.30 00:02:24 3: FHZ_0: Unknown code 8107c9d3010285014a, help me!
2022.01.30 00:02:25 3: FHZ_0: Unknown code 8107c9d3010285014a, help me!
2022.01.30 00:02:25 3: FHZ_0: Unknown code 8107c9d3010285014a, help me!
2022.01.30 00:02:25 3: FHZ_0: Unknown code 8107c9d3010285014a, help me!
2022.01.30 00:02:25 3: FHZ_0: Unknown code 8107c9d3010285014a, help me!
2022.01.30 00:02:26 3: FHZ_0: Unknown code 8107c9d3010285014a, help me!
2022.01.30 00:02:28 3: FHZ_0: Unknown code 8107c9d3010285014a, help me!
2022.01.30 00:02:28 3: FHZ_0: Unknown code 8107c9d3010285014a, help me!
2022.01.30 00:02:28 3: FHZ_0: Unknown code 8107c9d3010285014a, help me!
2022.01.30 00:02:28 3: FHZ_0: Unknown code 8107c9d3010285014a, help me!
2022.01.30 00:02:29 3: FHZ_0: Unknown code 8107c9d3010285014a, help me!
2022.01.30 00:02:29 3: FHZ_0: Unknown code 8107c9d3010285014a, help me!
2022.01.30 00:02:29 3: FHZ_0: Unknown code 8107c9d3010285014a, help me!
2022.01.30 00:02:36 2: FHZ get   fhtbuf
2022.01.30 00:02:36 3: getFhtBuffer: 0   fhtbuf => 4a
2022.01.30 00:02:36 2: FHT set bz_Heizung mode auto
2022.01.30 00:02:36 2: FHT set bg_Heizung mode manual desired-temp 16.0
2022.01.30 00:02:36 2: FHT set bb_Heizung mode manual desired-temp 16.0
2022.01.30 00:02:36 2: FHT set wz_Heizung mode auto


Der zugehörige Code der ausgeführt wird ist


## Wochenende-Anzeige aktualisieren
([00:01] or [dy_urlaub]) ({
   if ( IsWe() ) {
      Log 3, "Modus: Wochenende, Feiertag oder Urlaub zuhause";
      fhem("set dy_is_we on");
   } else {
      Log 3, "Modus: Wochentag (kein Feiertag oder Urlaub zuhause)";
      fhem("set dy_is_we off");
   }
})

([00:02] or [dy_anwesend] or [dy_home_office] or [dy_urlaub]) ({
   if( '[dy_anwesend]' eq 'on' ) {

      ## anwesend ##

      if( ('[dy_home_office]' eq 'on') && !(IsWe()) ) {

         ## Büro mitheizen

         Log 3, "Modus: Wohnzimmer, Bad und Büros heizen";

         fhem("set bb_Heizung mode auto");
         fhem("set bg_Heizung mode auto");
         fhem("set bz_Heizung mode auto");
         fhem("set wz_Heizung mode auto");
      }
      else {

         ## Urlaub, Wochenende, Feiertag oder kein Home-Office

         Log 3, "Modus: Wohnzimmer, Bad ohne Büros heizen";

         fhem("set bb_Heizung mode manual desired-temp ".ReadingsVal('bb_Heizung', 'manu-temp', '16.0'));
         fhem("set bg_Heizung mode manual desired-temp ".ReadingsVal('bb_Heizung', 'manu-temp', '16.0'));
         fhem("set bz_Heizung mode auto");
         fhem("set wz_Heizung mode auto");
      }
   }
   else {

      ## abwesend ##

      Log 3, "Modus: Alle Heizungen in Modus manuell und Temperatur absenken";

      ## alle FHT auf manuell umstellen
      my @fhts=devspec2array("TYPE=FHT");
      foreach(@fhts) {
         my $cmd="set ".$_." mode manual desired-temp ".ReadingsVal("$_", 'manu-temp', '16.0');
         fhem $cmd;
      }
   }
   return 0;
})


Jemand eine Idee woran das liegen könnte?

Ich hatte auch schon daran gedacht, das die USB-Schnittstelle in einem ,,Sleep" ist oder der Raspi oder FHEM zu dem Zeitpunkt zu stark ausgelastet oder mit was anderem beschäftigt sind?


rudolfkoenig

Ich vermute ein Problem in den beiden Modulen (FHZ+FHT): die FHZ get Befehle werden auch ueber die normale Warteschlange geschrieben, die aber nur bei einem nicht blockierten FHEM abgearbeitet wird. Da die gets im FHT Modul aber FHEM blockieren, kriegt das FHZ die Befehle erst mit, nachdem die get-Schleife  wegen timeout vorbei ist.
Das Problem taucht dann auf, wenn vor diesem Befehl was an das FHZ gesendet wurde, bzw. die Warteschlange ist nicht leer.

Workaround fuer den Benutzer: zwischen FHT-Befehlen ein FHEM-Sleep von mind. 0.3s einbauen.

Ich habe einen modifizierten FHZ Modul hier angehaengt, was das Problem hoffentlich loest.
Da ich es nicht getestet habe (keine Ahnung, wo mein FHZ1000 ist), bin ich fuer Feedback dankbar.

Hinata


Hinata

Nachdem ich mit der oben angehängten Datei alles einen Tag getestet habe, sieht die LOG-Datei wie folgt aus.
Aus meiner Sicht funktioniert der Patch:


2022.02.01 00:00:01 2: Deleting ab_Wettersensor-2022-01-18.log
2022.02.01 00:00:01 2: Deleting bb_Heizung-2022-01-18.log
2022.02.01 00:00:01 2: Deleting bb_Raumklima-2022-01-18.log
2022.02.01 00:00:01 2: Deleting bg_Heizung-2022-01-18.log
2022.02.01 00:00:01 2: Deleting bz_Heizung-2022-01-18.log
2022.02.01 00:00:01 2: Deleting dy_Gastherme-2022-01-18.log
2022.02.01 00:00:01 2: Deleting ga_Heizung-2022-01-18.log
2022.02.01 00:00:01 2: Deleting sz_Heizung-2022-01-18.log
2022.02.01 00:00:01 2: Deleting wz_Heizung-2022-01-18.log
2022.02.01 00:00:01 2: Deleting fhem-2022-01-25.log
2022.02.01 00:01:00 3: Modus: Wochentag (kein Feiertag oder Urlaub zuhause)
2022.02.01 00:02:00 3: Modus: Wohnzimmer, Bad und Büros heizen
2022.02.01 00:02:00 2: FHZ get   fhtbuf
2022.02.01 00:02:00 3: getFhtBuffer: 0   fhtbuf => 4a
2022.02.01 00:02:00 2: FHT set bb_Heizung mode auto
2022.02.01 00:02:00 2: FHZ get   fhtbuf
2022.02.01 00:02:01 3: getFhtBuffer: 0 Timeout reading answer for get fhtbuf
2022.02.01 00:02:01 2: FHZ get   fhtbuf
2022.02.01 00:02:01 3: getFhtBuffer: 1   fhtbuf => 45
2022.02.01 00:02:01 2: FHT set bg_Heizung mode auto
2022.02.01 00:02:01 2: FHZ get   fhtbuf
2022.02.01 00:02:01 3: getFhtBuffer: 0   fhtbuf => 45
2022.02.01 00:02:01 2: FHT set bz_Heizung mode auto
2022.02.01 00:02:01 2: FHZ get   fhtbuf
2022.02.01 00:02:01 3: getFhtBuffer: 0   fhtbuf => 45
2022.02.01 00:02:01 2: FHT set wz_Heizung mode auto
2022.02.01 00:06:30 2: FHZ get   fhtbuf
2022.02.01 00:06:30 3: getFhtBuffer: 0 810b041f830983013d543e0040
2022.02.01 00:06:30 2: FHZ get   fhtbuf
2022.02.01 00:06:30 3: getFhtBuffer: 1   fhtbuf => 45
2022.02.01 00:06:30 2: FHT set bz_Heizung mode auto
2022.02.01 00:06:30 2: FHT set wz_Heizung mode auto

rudolfkoenig

Danke fuers Feedback, habe die Aenderung eingecheckt.