Perl Fehlermeldung Mqtt Modul

Begonnen von fhemacht, 30 April 2020, 21:03:06

Vorheriges Thema - Nächstes Thema

fhemacht

Hallo Zusammen,
ich habe seit einem FHEM Update auf die aktuelle Version folgende Warnung im Log:

2020.04.30 20:56:31 1: PERL WARNING: Use of uninitialized value in string eq at ./FHEM/00_MQTT.pm line 505.
2020.04.30 20:56:31 1: stacktrace:
2020.04.30 20:56:31 1:     main::__ANON__                      called by ./FHEM/00_MQTT.pm (505)
2020.04.30 20:56:31 1:     MQTT::Timer                         called by ./FHEM/00_MQTT.pm (487)
2020.04.30 20:56:31 1:     MQTT::Init                          called by FHEM/DevIo.pm (253)
2020.04.30 20:56:31 1:     main::__ANON__                      called by FHEM/DevIo.pm (490)
2020.04.30 20:56:31 1:     main::DevIo_OpenDev                 called by ./FHEM/00_MQTT.pm (447)
2020.04.30 20:56:31 1:     MQTT::Start                         called by ./FHEM/00_MQTT.pm (395)
2020.04.30 20:56:31 1:     MQTT::Notify                        called by fhem.pl (3777)
2020.04.30 20:56:31 1:     main::CallFn                        called by fhem.pl (3697)
2020.04.30 20:56:31 1:     main::DoTrigger                     called by fhem.pl (1503)
2020.04.30 20:56:31 1:     main::CommandRereadCfg              called by fhem.pl (1243)
2020.04.30 20:56:31 1:     main::AnalyzeCommand                called by fhem.pl (1096)
2020.04.30 20:56:31 1:     main::AnalyzeCommandChain           called by ./FHEM/01_FHEMWEB.pm (2711)
2020.04.30 20:56:31 1:     main::FW_fC                         called by ./FHEM/01_FHEMWEB.pm (2496)
2020.04.30 20:56:31 1:     main::FW_style                      called by ./FHEM/01_FHEMWEB.pm (1157)
2020.04.30 20:56:31 1:     main::FW_answerCall                 called by ./FHEM/01_FHEMWEB.pm (590)
2020.04.30 20:56:31 1:     main::FW_Read                       called by fhem.pl (3777)
2020.04.30 20:56:31 1:     main::CallFn                        called by fhem.pl (753)


Ein verbose 5 liefert folgendes in dem Bereich

2020.04.30 20:51:41 3: Opening mqtt_server2 device 192.168.1.1:1883
2020.04.30 20:51:41 5: MQTT mqtt_server2 message sent: Connect/at-most-once MQIsdp/3/NetMQTTpm11060
2020.04.30 20:51:41 5: SW: 101c00064d51497364700302003c000e4e65744d515454706d3131303630
2020.04.30 20:51:41 5: Starting notify loop for mqtt_server2, 1 event(s), first is connection: connecting
2020.04.30 20:51:41 5: createNotifyHash
2020.04.30 20:51:41 5: End notify loop for mqtt_server2
2020.04.30 20:51:41 1: PERL WARNING: Use of uninitialized value in string eq at ./FHEM/00_MQTT.pm line 505.
2020.04.30 20:51:41 1: stacktrace:
2020.04.30 20:51:41 1:     main::__ANON__                      called by ./FHEM/00_MQTT.pm (505)
2020.04.30 20:51:41 1:     MQTT::Timer                         called by ./FHEM/00_MQTT.pm (487)
2020.04.30 20:51:41 1:     MQTT::Init                          called by FHEM/DevIo.pm (253)
2020.04.30 20:51:41 1:     main::__ANON__                      called by FHEM/DevIo.pm (490)
2020.04.30 20:51:41 1:     main::DevIo_OpenDev                 called by ./FHEM/00_MQTT.pm (447)
2020.04.30 20:51:41 1:     MQTT::Start                         called by ./FHEM/00_MQTT.pm (395)
2020.04.30 20:51:41 1:     MQTT::Notify                        called by fhem.pl (3777)
2020.04.30 20:51:41 1:     main::CallFn                        called by fhem.pl (3697)
2020.04.30 20:51:41 1:     main::DoTrigger                     called by fhem.pl (658)
2020.04.30 20:51:41 5: MQTT mqtt_server2 message sent: PingReq/at-most-once
2020.04.30 20:51:41 5: SW: c000
2020.04.30 20:51:41 3: mqtt_server2 device opened
2020.04.30 20:51:41 5: Starting notify loop for mqtt_server2, 1 event(s), first is CONNECTED
2020.04.30 20:51:41 5: End notify loop for mqtt_server2
2020.04.30 20:51:41 5: End notify loop for global
2020.04.30 20:51:41 0: Featurelevel: 6
2020.04.30 20:51:41 0: Server started with 416 defined entities (fhem.pl:21762/2020-04-23 perl:5.028001 os:linux user:fhem pid:11060)


Kann mir jemand sagen ob das an mir liegt ? Mein log war eigentlich immer clean.

Beta-User

...da sich bisher sonst keiner gemeldet hat:
Das ist nur ein Warning. Nicht schön, aber auch nicht dramatisch. Eventuell kannst du mal testen, ob alles mit folgender Änderung der Zeile ohne Warning funktioniert (eq 1 weg):
if ( $hash->{".reconnectmark"} ) {
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors

wolfg

Ich habe den gleichen Fehler. Das scheint am Code zu liegen.

Die Funktion "Timer" wird aufgerufen, bevor die Variable "$hash->{".reconnectmark"}" gesetzt ist. Erst nach dem Aufruf der Subroutine "Timer" wird das gemacht.
Weil trotzdem diese Var verwendet wird, ohne einen Check auf Existence zu machen, kommt der Fehler.

Besser wäre in 00_MQTT.pm, ln 505:

if( $hash->{".reconnectmark"} && $hash->{".reconnectmark"} eq 1) {

Damit liese sich der Eintrag verhindern. Frage ist nur, wie kriege ich den Fix in Repository? Da dürfen wieder nur bestimmte Leute schreiben.

rudolfkoenig

Eigentlich sollte der Maintainer des Moduls (siehe MAINTAINER.txt) diesen Forumsabschnitt verfolgen.
Vermutlich braucht er einen Schubs.

hexenmeister

#4
Sorry, wenig Zeit.
Schaue mir heute/morgen an.

EDIT: und danke für den Schubs :)

hexenmeister