Bluetooth-to-MQTT-Gateway: überlange Laufzeit

Begonnen von Dr. Boris Neubert, 22 August 2024, 12:19:19

Vorheriges Thema - Nächstes Thema

Dr. Boris Neubert

Hallo,

habe mich mal mit apptime auf die Suche nach den Hängern in FHEM mit 100 % CPU-Auslastung gemacht (FHEM läuft einer virtualisierten Maschine mit 6 VCPUS einer 8-Kern Xeon CPU E3-1230):


active-timers: 53; max-active timers: 88; max-timer-load: 53  min-tmrHandlingTm: 0.0ms; max-tmrHandlingTm: 30653.8ms; totAvgDly: 2991.9ms

 name                                     function                               max    count      total  average   maxDly   avgDly TS Max call     param Max call
 nice-__ANON__                                                                 29993      234 2272361.11  9710.94    82.38     0.42 22.08. 12:03:24 (undef)
 MQTT2_oMQTTgw_BT                         MQTT2_DEVICE_Attr                    16533       80 1191088.96 14888.61     0.00     0.00 22.08. 12:03:11 set; MQTT2_oMQTTgw_BT; readingList; home/OMG1/BTtoMQTT/([0-9A-Z]+):.* { $TOPIC =~ m,BTtoMQTT/([0-9A-Z]+),; json2nameValue($EVENT,"$1"."_") }
  home/OMG1/BTtoMQTT/([0-9A-Z]+)/[^:]+:.* { $TOPIC =~ m,BTtoMQTT/([0-9A-Z]+)/([^:]+),; { "${1}_$2"=>$EVENT }}
  home/home_presence/OMG1:.* { return unless $EVENT =~ m,(..):(..):(..):(..):(..):(..),; json2nameValue($EVENT,"BT_".uc($1.$2.$3.$4.$5.$6)."_"); {"last"=>uc($1.$2.$3.$4.$5.$6)}}
home/OMG2/BTtoMQTT/413EEE604FB6:.* { json2nameValue($EVENT, '413EEE604FB6_', $JSONMAP) }
home/OMG2/BTtoMQTT/A4C138F8B38E:.* { json2nameValue($EVENT, 'A4C138F8B38E_', $JSONMAP) }
...

Im Schnitt ca. 15 Sekunden ist lange für MQTT2_oMQTTgw_BT. Das Gerät setzt die über ein OpenMQTTGateway empfangene Bluetooth-Signale um, damit ich damit die Bluetooth-Temperatur-Feuchte-Sensoren auslese.

Gucke ich ins Device, finde ich dort Zillionen Einträge im Attibut readingList:

define MQTT2_oMQTTgw_BT MQTT2_DEVICE oMQTTgw_BT
attr MQTT2_oMQTTgw_BT model OpenMQTTGateway_BT_scanner
attr MQTT2_oMQTTgw_BT periodicCmd deleteReadings:1440
attr MQTT2_oMQTTgw_BT readingList home/OMG1/BTtoMQTT/([0-9A-Z]+):.* { $TOPIC =~ m,BTtoMQTT/([0-9A-Z]+),;; json2nameValue($EVENT,"$1"."_") }\
  home/OMG1/BTtoMQTT/([0-9A-Z]+)/[^:]+:.* { $TOPIC =~ m,BTtoMQTT/([0-9A-Z]+)/([^:]+),;; { "${1}_$2"=>$EVENT }}\
  home/home_presence/OMG1:.* { return unless $EVENT =~ m,(..):(..):(..):(..):(..):(..),;; json2nameValue($EVENT,"BT_".uc($1.$2.$3.$4.$5.$6)."_");; {"last"=>uc($1.$2.$3.$4.$5.$6)}}\
home/OMG2/BTtoMQTT/413EEE604FB6:.* { json2nameValue($EVENT, '413EEE604FB6_', $JSONMAP) }\
home/OMG2/BTtoMQTT/A4C138F8B38E:.* { json2nameValue($EVENT, 'A4C138F8B38E_', $JSONMAP) }\
home/OMG2/BTtoMQTT/7DF14524B2B7:.* { json2nameValue($EVENT, '7DF14524B2B7_', $JSONMAP) }\
home/OMG2/BTtoMQTT/A4C138E3E155:.* { json2nameValue($EVENT, 'A4C138E3E155_', $JSONMAP) }\
home/OMG2/BTtoMQTT/4E4319E949F0:.* { json2nameValue($EVENT, '4E4319E949F0_', $JSONMAP) }\
home/OMG2/BTtoMQTT/5C4A1603BBA7:.* { json2nameValue($EVENT, '5C4A1603BBA7_', $JSONMAP) }\
home/OMG2/BTtoMQTT/77568F97B597:.* { json2nameValue($EVENT, '77568F97B597_', $JSONMAP) }\
home/OMG2/BTtoMQTT/644F892029B5:.* { json2nameValue($EVENT, '644F892029B5_', $JSONMAP) }\
home/OMG2/BTtoMQTT/5356A163430F:.* { json2nameValue($EVENT, '5356A163430F_', $JSONMAP) }\
...

Die eigentliche Readings-Liste mit den Sichtungen der letzten 24 Stunden ist deutlich kürzer.

Was tun?

Viele Grüße
Boris
Globaler Moderator, Developer, aktives Mitglied des FHEM e.V. (Marketing, Verwaltung)
Bitte keine unaufgeforderten privaten Nachrichten!

rudolfkoenig

Eigentlich(TM) muesste man bei den BT-Endgeraeten die temporaere BT-IDs deaktivieren.

Workaround: im readingList in den ersten drei Zeilen OMG1 nach OMG[12] aendern, und die Zeilen mit den "konkreten" Werten entfernen.
Optional: das autocreate Attribut auf 0 setzen.

Dr. Boris Neubert

Danke. Das funktioniert.

apptime läuft und zeigt keine Anomalien mehr. Die Zeilen der Form

home/OMG2/BTtoMQTT/413EEE604FB6:.* { json2nameValue($EVENT, '413EEE604FB6_', $JSONMAP) }

erscheinen auch nicht mehr. Es waren übrigens fast 70.000  :o
Globaler Moderator, Developer, aktives Mitglied des FHEM e.V. (Marketing, Verwaltung)
Bitte keine unaufgeforderten privaten Nachrichten!