PERL Warning bei contrib/98_DeviceMonitor.pm

Begonnen von pet22, 08 Oktober 2014, 20:55:45

Vorheriges Thema - Nächstes Thema

pet22

Hallo,

ab

fhem.pl 6707 2014-10-08 08:30:15Z rudolfkoenig

gibt es folgende PERL Warning für 98_DeviceMonitor im Log:

2014.10.08 20:19:14 1: PERL WARNING: Use of uninitialized value $_[2] in string eq at ./FHEM/98_DeviceMonitor.pm line 190.
2014.10.08 20:19:14 3: stacktrace:
2014.10.08 20:19:14 3:     main::__ANON__                      called by ./FHEM/98_DeviceMonitor.pm (190)
2014.10.08 20:19:14 3:     main::DeviceMonitor_GetResult       called by ./FHEM/98_DeviceMonitor.pm (62)
2014.10.08 20:19:14 3:     main::DeviceMonitor_Get             called by /opt/fhem/fhem.pl (2906)
2014.10.08 20:19:14 3:     main::CallFn                        called by /opt/fhem/fhem.pl (1497)
2014.10.08 20:19:14 3:     main::CommandGet                    called by /opt/fhem/fhem.pl (2086)
2014.10.08 20:19:14 3:     main::getAllGets                    called by ./FHEM/01_FHEMWEB.pm (1002)
2014.10.08 20:19:14 3:     main::FW_doDetail                   called by ./FHEM/01_FHEMWEB.pm (737)
2014.10.08 20:19:14 3:     main::FW_answerCall                 called by ./FHEM/01_FHEMWEB.pm (393)
2014.10.08 20:19:14 3:     main::FW_Read                       called by /opt/fhem/fhem.pl (2906)
2014.10.08 20:19:14 3:     main::CallFn                        called by /opt/fhem/fhem.pl (595)
2014.10.08 20:19:14 1: PERL WARNING: Use of uninitialized value $_[2] in string eq at ./FHEM/98_DeviceMonitor.pm line 191.
2014.10.08 20:19:14 3: stacktrace:
2014.10.08 20:19:14 3:     main::__ANON__                      called by ./FHEM/98_DeviceMonitor.pm (191)
2014.10.08 20:19:14 3:     main::DeviceMonitor_GetResult       called by ./FHEM/98_DeviceMonitor.pm (62)
2014.10.08 20:19:14 3:     main::DeviceMonitor_Get             called by /opt/fhem/fhem.pl (2906)
2014.10.08 20:19:14 3:     main::CallFn                        called by /opt/fhem/fhem.pl (1497)
2014.10.08 20:19:14 3:     main::CommandGet                    called by /opt/fhem/fhem.pl (2086)
2014.10.08 20:19:14 3:     main::getAllGets                    called by ./FHEM/01_FHEMWEB.pm (1002)
2014.10.08 20:19:14 3:     main::FW_doDetail                   called by ./FHEM/01_FHEMWEB.pm (737)
2014.10.08 20:19:14 3:     main::FW_answerCall                 called by ./FHEM/01_FHEMWEB.pm (393)
2014.10.08 20:19:14 3:     main::FW_Read                       called by /opt/fhem/fhem.pl (2906)
2014.10.08 20:19:14 3:     main::CallFn                        called by /opt/fhem/fhem.pl (595)
2014.10.08 20:19:14 1: PERL WARNING: Use of uninitialized value $_[2] in string eq at ./FHEM/98_DeviceMonitor.pm line 192.
2014.10.08 20:19:14 3: stacktrace:
2014.10.08 20:19:14 3:     main::__ANON__                      called by ./FHEM/98_DeviceMonitor.pm (192)
2014.10.08 20:19:14 3:     main::DeviceMonitor_GetResult       called by ./FHEM/98_DeviceMonitor.pm (62)
2014.10.08 20:19:14 3:     main::DeviceMonitor_Get             called by /opt/fhem/fhem.pl (2906)
2014.10.08 20:19:14 3:     main::CallFn                        called by /opt/fhem/fhem.pl (1497)
2014.10.08 20:19:14 3:     main::CommandGet                    called by /opt/fhem/fhem.pl (2086)
2014.10.08 20:19:14 3:     main::getAllGets                    called by ./FHEM/01_FHEMWEB.pm (1002)
2014.10.08 20:19:14 3:     main::FW_doDetail                   called by ./FHEM/01_FHEMWEB.pm (737)
2014.10.08 20:19:14 3:     main::FW_answerCall                 called by ./FHEM/01_FHEMWEB.pm (393)
2014.10.08 20:19:14 3:     main::FW_Read                       called by /opt/fhem/fhem.pl (2906)
2014.10.08 20:19:14 3:     main::CallFn                        called by /opt/fhem/fhem.pl (595)
2014.10.08 20:19:14 1: PERL WARNING: Use of uninitialized value $_[2] in concatenation (.) or string at ./FHEM/98_DeviceMonitor.pm line 193.
2014.10.08 20:19:14 3: stacktrace:
2014.10.08 20:19:14 3:     main::__ANON__                      called by ./FHEM/98_DeviceMonitor.pm (193)
2014.10.08 20:19:14 3:     main::DeviceMonitor_GetResult       called by ./FHEM/98_DeviceMonitor.pm (62)
2014.10.08 20:19:14 3:     main::DeviceMonitor_Get             called by /opt/fhem/fhem.pl (2906)
2014.10.08 20:19:14 3:     main::CallFn                        called by /opt/fhem/fhem.pl (1497)
2014.10.08 20:19:14 3:     main::CommandGet                    called by /opt/fhem/fhem.pl (2086)
2014.10.08 20:19:14 3:     main::getAllGets                    called by ./FHEM/01_FHEMWEB.pm (1002)
2014.10.08 20:19:14 3:     main::FW_doDetail                   called by ./FHEM/01_FHEMWEB.pm (737)
2014.10.08 20:19:14 3:     main::FW_answerCall                 called by ./FHEM/01_FHEMWEB.pm (393)
2014.10.08 20:19:14 3:     main::FW_Read                       called by /opt/fhem/fhem.pl (2906)
2014.10.08 20:19:14 3:     main::CallFn                        called by /opt/fhem/fhem.pl (595)


in Maintainer.txt ist 98_DeviceMonitor.pm leider nicht enthalten. Der Code stammt von "dennis1980" aka Dennis Gnoyke. Es gibt noch einen Patch von justme1968, den ich aber nicht verwende.

Die Warnung war vermutlich schon immer vorhanden, es wurde aber nichts ins Log-File geschrieben.

fhem.cfg für DeviceMonitor sieht wie folgt aus:
define FHT.monitor DeviceMonitor
attr FHT.monitor room FHT
#
define fht.wohnzimmer FHT xxxx
attr fht.wohnzimmer device_timeout 4

.....
3 weitere FHTs, gleiches Pattern
.....

define fhttk.schlafzimmer CUL_FHTTK aaaaaa
attr fhttk.schlafzimmer device_timeout 10


Gruss

Pet22
Debian 11/ Intel Atom MB/ CUL V3/ Raspberrymatic/ Homematic classic, Homematic IP, WTs & HTs

krikan

In Contrib landet vereinfacht alles, was nicht supportet wird. Die Ersteller überlassen es der Community zur Nutzung ohne eigene "Verpflichtung". Darum findest Du auch nichts in MAINTAINER.txt, da dort nur offiziell supportet Module landen.

Entweder es findet sich jemand, der die Pflege/Entwicklung des Moduls übernimmt (Du?) oder Du nimmst die PERL WARNING hin, wenn es läuft.

betateilchen

@krikan: erschreckend, welche völlig inhaltsfreien Antworten hier manchmal gegeben werden...

@Pet22 wie rufst Du denn wie Werte aus dem Devicemonitor ab?
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

krikan

Zitat@krikan: erschreckend, welche völlig inhaltsfreien Antworten hier manchmal gegeben werden...
@betateilchen (Moderator): Ach Udo, manchmal verstehe ich Deine Spitzen und Sarkasmus(?) nicht. Er hat es in MAINTAINER.txt gesucht und nichts gefunden. Daher habe ich versucht es zu erklären. Wenn es falsch ist, berichtige doch bitte.

Viele Grüße, Christian

betateilchen

Zitat von: krikan am 09 Oktober 2014, 10:53:53
@betateilchen (Moderator): Ach Udo, manchmal verstehe ich Deine Spitzen und Sarkasmus(?) nicht.

Und wenn es aber überhaupt kein Modulfehler sondern ein Anwenderfehler (wie ich hier vermute) ist?
Da schaut man doch erstmal in das Modul selbst und versucht zu verstehen, was da passiert.
Das wäre doch als Antwort viel hilfreicher, als irgendjemanden aufzufordern, die Modulwartung selbst zu übernehmen.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

pet22


@krikan: Threadtitel wurde absichtlich so gewählt, um Kommentare wie kein Support, DIY, etc. zu vermeiden.

@betateilchen:
Hab mal ein älteres fhem.pl verwendet. Wie vermutet sind Warnings auf der Konsole vorhanden, aber nicht im Log. Neu ist lediglich der stacktrace im aktuellen fhem.pl

DeviceMonitor funktioniert wie es soll, dh. ich lese lediglich "dead-count" aus und ab einer Schwelle von 3 wird eine Email versandt.

Warnings treten lediglich auf:


  • wenn der Link im FHEMweb angeklickt wird oder
  • bei Eingabe "trigger fht.monitor test" im FHEMWeb

Das ganze läuft bei mir als Kosmetik und ist kein ernsthaftes Problem.

Ein bisschen Dokumentation ist in https://groups.google.com/forum/?fromgroups=#!msg/fhem-users/A4dgFwZdtOs/5Wu5Qotm9NMJ. Seit diesem Zeitpunkt läuft DeviceMonitor bei mir klaglos.

Trotzdem vielen Dank für deine Antwort

Gruss

Pet22

Debian 11/ Intel Atom MB/ CUL V3/ Raspberrymatic/ Homematic classic, Homematic IP, WTs & HTs

justme1968

#6
@pet22:ich vermute es liegt daran das die GetFn das get ? nicht behandelt das fhemweb verwendet um die liste der get kommandos abzufragen.

bau mal ein return undef if( $a[1] eq '?');vor die zeile mit der split anweisung in der DeviceMonitor_Get sub ein.

ich kann dir gerade nicht mit den zeilennummern dienen weil ich 'meine' version verwende.

gruss
  andre

edit: $a[1] korrigiert.
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

betateilchen

Meiner Meinung nach sollte es $a[1] heißen und die vorgeschlagene Änderung gehört in die Zeile 71.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

justme1968

#8
ja. natürlich 1

aber zeile 71 stimmt vermutlich nicht. Pet22 verwendet eine ältere version.
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

betateilchen

Meine Angabe zur Zeile 71 bezieht sich auf die Modulversion, die sich aktuell in contrib/DeviceMonitor befindet.

Darin sieht es bei mir so aus:

(http://up.picr.de/19764622sc.png)

und da würde für mich das vorgeschlagene return in Zeile 71 durchaus Sinn machen.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

justme1968

ja. für die aktuelle version passt zeile 71. aber vermutlich nicht für die version die Pet22 verwendet. die zeilennummern aus seinem stacktrace passen nämlich nicht auf diese version.
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

pet22

Vielen Dank für das Teamwork!

Im ursprünglichen erstellten Modul von Dennis Gnoyke muß nach Zeile 59 eingefügt werden:

return undef if( $a[1] eq '?');

dann sind die Warnings verschwunden.

Ich glaube somit alle verfügbaren Versionen abgedeckt.

Nochmals vielen Dank

Pet22

Debian 11/ Intel Atom MB/ CUL V3/ Raspberrymatic/ Homematic classic, Homematic IP, WTs & HTs