Fehlermeldung im Telnet Modul

Begonnen von merlin2010, 30 August 2014, 13:14:57

Vorheriges Thema - Nächstes Thema

merlin2010

Bei mir kommt es zu folgender fataler Fehlermeldung im Telnet Modul (fhem stürzt dann ab):

ZitatUse of uninitialized value in ref-to-glob cast at ./FHEM/98_telnet.pm line 288.
Use of uninitialized value in ref-to-glob cast at ./FHEM/98_telnet.pm line 288.
syswrite() on unopened filehandle at ./FHEM/98_telnet.pm line 288.
Can't call method "flush" on an undefined value at ./FHEM/98_telnet.pm line 292.

Habe versucht, das Telnet Modul zu löschen und via http://fhem.de/fhemupdate4/svn/FHEM/98_telnet.pm neu herunterzuladen, hat aber nichts gebracht.
Weiter habe ich mit einem update force alle Module aktualisiert. Hier noch meine Versionsliste

# $Id: fhem.pl 6425 2014-08-19 20:55:00Z rudolfkoenig $
# $Id: 00_CUL.pm 6371 2014-08-07 05:33:37Z rudolfkoenig $
# $Id: 14_CUL_MAX.pm 5282 2014-03-22 10:02:33Z mgehre $
# $Id: 01_FHEMWEB.pm 6447 2014-08-24 07:38:52Z rudolfkoenig $
# $Id: 95_FLOORPLAN.pm 6174 2014-06-29 05:51:28Z ulimaass $
# $Id: 10_FS20.pm 5326 2014-03-26 07:15:25Z rudolfkoenig $
# $Id: 92_FileLog.pm 5876 2014-05-16 19:54:51Z rudolfkoenig $
# $Id: 10_IT.pm 5649 2014-04-25 22:44:27Z justme1968 $
# $Id: 10_MAX.pm 5446 2014-04-05 12:17:00Z mgehre $
# $Id: 73_PRESENCE.pm 6341 2014-08-01 21:56:21Z markusbloch $
# $Id: 99_RpiUtils.pm $
# $Id: 99_SUNRISE_EL.pm 5851 2014-05-13 19:39:03Z rudolfkoenig $
# $Id: 98_SVG.pm 6446 2014-08-23 10:09:44Z rudolfkoenig $
# $Id: 42_SYSMON.pm 6390 2014-08-10 22:06:38Z hexenmeister $
# $Id: 99_Utils.pm 6446 2014-08-23 10:09:44Z rudolfkoenig $
# $Id: 59_Weather.pm 6432 2014-08-20 15:46:12Z borisneubert $
# $Id: 90_at.pm 5319 2014-03-25 10:11:47Z rudolfkoenig $
# $Id: 98_autocreate.pm 6436 2014-08-21 05:40:35Z rudolfkoenig $
# $Id: 98_dummy.pm 4934 2014-02-15 08:23:12Z rudolfkoenig $
# $Id: 91_eventTypes.pm 6428 2014-08-20 11:51:27Z rudolfkoenig $
# $Id: 38_netatmo.pm 6410 2014-08-16 19:27:41Z justme1968 $
# $Id: 91_notify.pm 6371 2014-08-07 05:33:37Z rudolfkoenig $
# $Id: 91_watchdog.pm 5622 2014-04-24 08:04:29Z rudolfkoenig $
# $Id: 98_weblink.pm 5608 2014-04-23 10:57:16Z rudolfkoenig $


Zudem habe ich versucht, telnet im fhem.cfg anders zu definieren (global weglassen, SSL einfügen, da ich eigentlich via FHEMWEB mit einem selbsterstellten Zertifikat zugreife).
Hat alles nichts gebracht, weshalb ich mich nun hier an das Forum wende. Jemand eine Idee?

NB: Zur Zeit läuft bei mir fhem nur noch, wenn ich 98_telnet.pm im entsprechenden Verzeichnis lösche.

rudolfkoenig

Irgendwer/irgendwas hat vermutlich den Filedesriptor ($hash->{CD}) fuer diese Telnet-Verbindung entfernt.

Was fuer HW/OS verwendest du?
Verwendest du Module, die BlockingCall einsetzen?
Verwendest du FHEM2FHEM?
Tritt das Problem auch mit fhem.cfg.demo auf?
Wie lange dauert es nach dem Neustart, bis es zum Problem kommt?

merlin2010

Was fuer HW/OS verwendest du?

Raspberry Pi B mit Raspian Linux

ZitatLinux raspberrypi 3.12.26+ #704 PREEMPT Wed Aug 20 22:35:11 BST 2014 armv6l

Verwendest du Module, die BlockingCall einsetzen?

Ja, verwende das Modul 73_PRESENCE.pm

Verwendest du FHEM2FHEM?

Nein.

Tritt das Problem auch mit fhem.cfg.demo auf?

Nein.

Wie lange dauert es nach dem Neustart, bis es zum Problem kommt?

Ca. 30 Sekunden.

rudolfkoenig

Koenntest du ein Start mit "attr global verbose 5" durchfuehren, und das Log hier anhaengen?


merlin2010

Hier das Log mit den letzten Einträgen, bevor fhem abschmiert:

2014.08.31 22:36:02 4: HttpUtils url=https://api.netatmo.net/api/getmeasure
2014.08.31 22:36:03 4: eventTypes: PRESENCE Router present -> present
2014.08.31 22:36:03 4: eventTypes: PRESENCE Router state: present -> state: present
2014.08.31 22:36:03 4: PRESENCE (Router) - rescheduling next check in 60 seconds


Habe nun glaub ich den Übeltäter gefunden:

Nachdem ich die folgenden Zeilen im fhem.cfg auskommentiert habe, läuft fhem wieder mit telnet:

# define Router PRESENCE lan-ping 192.168.1.1 60
# define DI_WLANOFF DOIF ([Router] eq "absent") (delete netatmo_station) DOELSEIF ([Router] eq "present")  (rereadcfg)


Meine Idee war ursprünglich, den Routerstatus mittels Presence abzufragen, weil ich über Nacht das WLAN absschalte und dann netatmo ins Leere lief, bzw. Mülleinträge ins Log schrieb.
Wenn der Router 'absent' ist, sollten die netatmo Devices gelöscht werden, aber offenbar kann das mit obiger Konfiguration nicht gelöst werden, bzw. fhem schmiert dadurch ab.

rudolfkoenig

Das wuerde auf ein Problem in der Presence Modul bzw. in den verwendente Bibliotheken hindeuten. Merkwuerdig nur, wieso das bei Anderen nicht auftaucht. Das PRESENCE Modul wird laut fhem Statistiken (http://fhem.de/stats/statistics.html) ueber 1000-mal eingesetzt.

Brockmann

Zitat von: merlin2010 am 31 August 2014, 23:14:19
# define Router PRESENCE lan-ping 192.168.1.1 60
# define DI_WLANOFF DOIF ([Router] eq "absent") (delete netatmo_station) DOELSEIF ([Router] eq "present")  (rereadcfg)

Hat nichts mit dem eigentlichen Problem zu tun, sorry, aber wäre es nicht einfacher, netatmo_station einfach mit dem disable-Attribut vorübergehend zu deaktivieren, anstatt es gleich ganz zu löschen? Ich denke halt nur, man muss so ja schon etwas aufpassen, dass man nicht im falschen Moment mal die Konfiguration speichert, sonst ist netatmo_station ganz weg...

Bei mir läuft Presence auf einem Raspberry Pi übrigens mit mehreren Instanzen problemlos. Da der Raspberry Pi bei Dir ja anscheinend per WLAN angeschlossen ist: Hast Du mal probiert, ob der Effekt beim Anschluss per Ethernet auch auftritt? Ich finde das WLAN beim Raspberry Pi ja immer etwas wackelig. Und wenn Du ihm das WLAN jetzt einfach so "unterm Hintern wegziehst", reagiert er darauf vielleicht etwas heftig. Zumindest wüsste man dann, ob der Fehler überhaupt in FHEM zu suchen ist...