[gelöst] Blocking.pm Logfile Einträge

Begonnen von Pyromane, 23 September 2017, 23:15:44

Vorheriges Thema - Nächstes Thema

Pyromane

Guten Abend,

ich setze Xiaomi FlowerSens Sensoren ein, welche sich teils an der Grenze der Reichweite. Das führt dazu das diese vom Modul nicht immer angefragt werden können und da das Modul Blocking.pm einsetzt habe ich häufig folgende Einträge im Log
2017.09.23 20:16:25 1: Timeout for XiaomiFlowerSens_BlockingRun reached, terminated process 19796
Besteht eine Möglichkeit diese Art von Logeintrag zu unterdrücken(bevorzugt nur für "XiaomiFlowerSens_BlockingRun")  ohne gleich verbose 0 global setzen zu müssen?

Mit dem Programmierer des Moduls war ich bereits in Kontakt: [74_XiaomiFlowerSens.pm] Xiaomi Flower Monitor

Bitte um Unterstützung. Danke!

rudolfkoenig

Habe Blocking.pm erweitert:
- BlockingCall liefert einen Zeiger auf einem internen Hash zurueck.
- wenn man in diesem Hash loglevel setzt, dann wird das in der Timeout-Meldung verwendet.
Beispiel:
  my $h = BlockingCall($BlockingFn, $parameter, $DoneFn, $timeOut, $AbortFn, $myParam);
  $h->{loglevel} = 4;

Pyromane

Mahlzeit,

herzlichen Dank für den schnellen Fix!

Grüße
Pyro

CoolTux

Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

Jamo

Guten Abend,

Wie auch Pyromane, setze ich Xiaomi FlowerSens Sensoren ein, mit Hilfe des Moduls 74_XiaomiBTLESens.pm. Auch dieses Modul benutzt Blocking.pm. Ich habe auch häufig folgende Einträge im Log, die ich aber unterdrücken möchte.
Zitat2022.05.27 21:50:24 1: Timeout for FHEM::XiaomiBTLESens::ExecGatttool_Run reached, terminated process 4024
BlockingCallLoglevel im Modul 74_XiaomiBTLESens.pm ist gesetzt, dort wird auch der hash auf den loglevel gesetzt wie Rudi geschrieben hat, ab Zeile 353. Trotzdem kommt die Meldung. Was mache ich falsch?

Auszug aus dem 74_XiaomiBTLESens.pm

    elsif ( $attrName eq 'blockingCallLoglevel' ) {
        if ( $cmd eq 'set' ) {
            $hash->{loglevel} = $attrVal;
            Log3( $name, 3,
                "XiaomiBTLESens ($name) - set blockingCallLoglevel to $attrVal"
            );
        }


List des Devices:
Internals:
   BTMAC      C4:7C:8D:63:86:10
   DEF        C4:7C:8D:63:86:10
   FUUID      5c42ee45-f33f-97bf-5bf9-7d4fdd9dd426392d
   FVERSION   74_XiaomiBTLESens.pm:v3.0.0-s22474/2020-07-26
   INTERVAL   10807
   NAME       Blume07
   NOTIFYDEV  global,Blume07
   NR         2365
   NTFY_ORDER 50-Blume07
   STATE      <font color="red">M[25]: 00  &nbsp B(75) &nbsp &nbsp T: 22.1°C &nbsp Lx: 215 &nbsp Ft: 97 &nbsp <style="text-align:right">05-24 11:24</style> &nbsp Nr: 07</font>
   TYPE       XiaomiBTLESens
   VERSION    v3.0.0
   loglevel   2
   OLDREADINGS:
   READINGS:
     2021-05-10 15:44:56   BatterieWechsel 01.05.2021 (8 Monate last 20.09.2020 20.12.2019 20.05.2019 20.09.2018)
     2022-05-24 02:12:40   OldMoist        0
     2022-05-23 17:02:42   batteryPercent  75
     2022-05-23 17:02:42   batteryState    ok
     2022-05-24 11:24:41   fertility       97
     2022-05-23 17:02:42   firmware        3.1.9
     2022-05-27 21:50:24   lastGattError   The BlockingCall Process terminated unexpectedly. Timedout
     2022-05-24 11:24:41   lux             215
     2022-05-24 11:24:41   moisture        0
     2022-05-27 21:50:24   state           error
     2022-05-24 11:24:41   temperature     22.1
     2022-05-27 21:24:38   toggle          0
   helper:
     CallBattery 0
     CallSensDataCounter 0
     updateTimeCallBattery 1653318162.06549
     updateTimestampCallBattery 2022-05-23 17:02:42
   hmccu:
Attributes:
   alias      Zamie/Glücksfeder
   blockingCallLoglevel 2
   devStateStyle style="text-align:left"
   event-on-change-reading moisture
   event-on-update-reading lastGattError
   group      BLUMEN
   hciDevice  hci1
   interval   10807
   maxMoisture 50
   minMoisture 25
   minTemp    15
   model      flowerSens
   room       Favourites,AllRooms->Wohnung
   sortby     02
   sshHost    root@flurry
   stateFormat {MyFlowerCheck($name)}
   timeout    2
   verbose    3
   webCmd     upd
Bullseye auf iNUC, Homematic + HMIP(UART/HMUSB), Debmatic, HUEBridge, Zigbee/ConbeeII, FB, Alexa (fhem-lazy), Livetracking, LaCrosse JeeLink, LoRaWan / TTN / Chirpstack

rudolfkoenig

ZitatBlockingCallLoglevel im Modul 74_XiaomiBTLESens.pm ist gesetzt, dort wird auch der hash auf den loglevel gesetzt wie Rudi geschrieben hat, ab Zeile 353.
Beim "wird auch gesetzt" bin ich dabei, beim "wie Rudi geschrieben hat" eher nicht.

74_XiaomiBTLESens.pm setzt in der Zeile 340 "nur" $hash->{loglevel}, wobei $hash die eigene Definition ist ($defs{...}).
Um die erwaehnte Ausgabe zu unterdruecken muss loglevel in dem Hash gesetzt werden, was BlockingCall zurueckliefert, und was dieses Modul unter $hash->{helper}{RUNNING_PID} speichert.
Wobei die Benennung irrefuehrend ist, weil es kein PID sondern ein Hash mit allerlei Daten ist (siehe den blockinginfo Befehl).

Jamo

Hallo Rudi,
danke, ich habe es jetzt wie folgt umgebaut, bis jetzt funktioniert es, ich hoffe das ist richtig so. Der code ist vereinfacht.
VORHER:sub CreateParamGatttool {
...
    if ( $mod eq 'read' ) {
        $hash->{helper}{RUNNING_PID} = BlockingCall( .....................);
...
    }

NACHER:
sub CreateParamGatttool {
...
    if ( $mod eq 'read' ) {
         my $tempVar = BlockingCall(.....................);
            $tempVar->{loglevel} = AttrVal($name,'blockingCallLoglevel',2);
            $hash->{helper}{RUNNING_PID} = $tempVar;
...
    }
Bullseye auf iNUC, Homematic + HMIP(UART/HMUSB), Debmatic, HUEBridge, Zigbee/ConbeeII, FB, Alexa (fhem-lazy), Livetracking, LaCrosse JeeLink, LoRaWan / TTN / Chirpstack