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
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.
@krikan: erschreckend, welche völlig inhaltsfreien Antworten hier manchmal gegeben werden...
@Pet22 wie rufst Du denn wie Werte aus dem Devicemonitor ab?
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
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.
@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
@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.
Meiner Meinung nach sollte es $a[1] heißen und die vorgeschlagene Änderung gehört in die Zeile 71.
ja. natürlich 1
aber zeile 71 stimmt vermutlich nicht. Pet22 verwendet eine ältere version.
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.
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.
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