FHEM Forum

FHEM - Hardware => Server - Windows => Thema gestartet von: m8ichael am 16 Februar 2016, 18:30:23

Titel: Nach Update Fehler IO::Socket::INET: connect: timeout bei AT's und notify's
Beitrag von: m8ichael am 16 Februar 2016, 18:30:23
Hallo!

Zitat von: rudolfkoenig am 16 Februar 2016, 10:25:02
Ich habe dein Log analysiert, danach den kompletten Code-Verlauf, der bei einem set durchgelaufen wird 2-mal durchgelesen, und habe keine Idee: das Modul IO::Socket::INET wird nirgendwo aufgerufen. Ich vermute eine "unerwartete" Implementierung einer Funktion unter Windows mit Netzwerk, wuesste aber nicht, wo. Ziemlich sicher: das Problem hat nicht mit der letzten Aenderungen zu tun, sonst haette im Log direkt nach Cmd: eine Zeile mit "ZWave set ..." mit verbose 2 auftauchen muessen: das geaenderte ZWave-Code kommt danach.

Um das Problem einzugrenzen habe ich eine geaenderte fhem.pl und 10_ZWave.pm mit zusaetzlichen Log-Ausgaben auf verbose 1 angehaengt, bitte beide austauschen und laufen lassen.

Ich führe das Problem aus http://forum.fhem.de/index.php/topic,49057.45.html (http://forum.fhem.de/index.php/topic,49057.45.html) mal hier fort, da es sich ggf. um ein Windows-Spezifikum handelt. Schon mal vielen Dank für die neuen Dateien - ich werde diese nun gleich mal aktivieren und mal gucken, was die Logs so auswerfen...

Viele Grüße

Michael
Titel: Antw:Nach Update Fehler IO::Socket::INET: connect: timeout bei AT's und notify's
Beitrag von: m8ichael am 16 Februar 2016, 22:57:30
Hallo,

hier jetzt mal ein Log:


2016.02.16 22:45:17.001 5: Cmd: >set dm.og.sz.Hauptbeleuchtung 0<
2016.02.16 22:45:17.001 1: CmdSet1
2016.02.16 22:45:17.001 1: DoSet1 dm.og.sz.Hauptbeleuchtung
2016.02.16 22:45:17.001 1: DoSet2 dm.og.sz.Hauptbeleuchtung
2016.02.16 22:45:17.001 4: dummy set dm.og.sz.Hauptbeleuchtung 0
2016.02.16 22:45:17.002 5: Triggering dm.og.sz.Hauptbeleuchtung (1 changes)
2016.02.16 22:45:17.002 5: Triggering dm.og.sz.Hauptbeleuchtung.notify
2016.02.16 22:45:17.002 4: dm.og.sz.Hauptbeleuchtung.notify exec set og.sz.Hauptbeleuchtung dim $EVENT
2016.02.16 22:45:17.002 5: Cmd: >set og.sz.Hauptbeleuchtung dim $EVENT<
2016.02.16 22:45:17.003 1: CmdSet1
2016.02.16 22:45:17.003 1: DoSet1 og.sz.Hauptbeleuchtung
2016.02.16 22:45:17.003 1: DoSet2 og.sz.Hauptbeleuchtung
2016.02.16 22:45:17.003 1: ZWC1: og.sz.Hauptbeleuchtung set dim
2016.02.16 22:45:17.003 1: ZWC3: 01%02x
2016.02.16 22:45:17.003 1: DoSet3 og.sz.Hauptbeleuchtung return: >IO::Socket::INET: connect: timeout<
2016.02.16 22:45:17.003 3: dm.og.sz.Hauptbeleuchtung.notify return value: IO::Socket::INET: connect: timeout
2016.02.16 22:45:17.003 1: CmdSet1
2016.02.16 22:45:17.003 1: DoSet1 dm.og.sz.Hauptbeleuchtung
2016.02.16 22:45:17.004 5: Notify loop for dm.og.sz.Hauptbeleuchtung done
2016.02.16 22:45:17.004 1: DoSet3 dm.og.sz.Hauptbeleuchtung return: undefined
2016.02.16 22:45:17.004 4: name: /fhem?cmd=set%20dm.og.sz.Hauptbeleuchtung%200&XHR=1&fw_id=222 / RL:20 / text/plain; charset=UTF-8 / Content-Encoding: gzip /


Viele Grüße

Michael
Titel: Antw:Nach Update Fehler IO::Socket::INET: connect: timeout bei AT's und notify's
Beitrag von: rudolfkoenig am 17 Februar 2016, 08:15:12
Habs vermutlich gefixt und eingecheckt, ab morgen per update.

Hintergrund:
Entweder unter Windows oder in dem neuen Perl (5.22) wird $@ vor einem eval nicht zurueckgesetzt. Das ist mAn ein Perl-Bug, jedenfalls ist es nicht intuitiv, und dass es manuell zurueckgesetzt werden muss (was ich jetzt getan habe), steht auch nirgendwo. Auch der Inhalt der Variable ist komisch: es klingt nicht nach Syntax-Error. Laut http://perldoc.perl.org/5.22.0/perlvar.html#Error-Variables:
Zitat$@
The Perl syntax error message from the last eval() (http://perldoc.perl.org/5.22.0/functions/eval.html) operator.  If $@ is the null string, the last eval() (http://perldoc.perl.org/5.22.0/functions/eval.html) parsed and executed correctly (although the operations you invoked may have failed in the normal fashion).
Titel: Antw:Nach Update Fehler IO::Socket::INET: connect: timeout bei AT's und notify's
Beitrag von: rudolfkoenig am 17 Februar 2016, 08:32:49
Nachtrag:
auf meinem System (kein Windows), wird $@ bei einem eval automatisch zurueckgesetzt, wie man das hier sehen kann:
% perl -e 'my $str="X("; my $x = eval($str); print "$x / $@\n"; $str="7+1"; $x = eval($str); print "$x / $@\n";'
/ syntax error at (eval 1) line 2, at EOF

8 /
%

Das habe ich mit perl 5.16 und perl 5.20 getestet. Auch unter Windows mit perl 5.20 funktioniert es:
C:\>perl -e "my $str='X('; my $x = eval($str); print \"$x / $@\n\"; $str='7+1'; $x = eval($str); print \"$x / $@\n\";"
/ syntax error at (eval 1) line 1, at EOF

8 /

C:\>

Koenntest du diesen Befehl (die Windows Version, die eine Zeile nach C:>) bitte bei dir in der Kommandozeile auch ausfuehren?
Titel: Antw:Nach Update Fehler IO::Socket::INET: connect: timeout bei AT's und notify's
Beitrag von: m8ichael am 17 Februar 2016, 19:26:01
Hallo!

Zitat von: rudolfkoenig am 17 Februar 2016, 08:32:49
Koenntest du diesen Befehl (die Windows Version, die eine Zeile nach C:>) bitte bei dir in der Kommandozeile auch ausfuehren?

Bei mir (5.22.01) ergibt sich die folgende Ausgabe:


perl -e "my $str='X('; my $x = eval($str); print \"$x / $@\n\"; $str='7+1'; $x = eval($str); print \"$x / $@\n\";"
/ syntax error at (eval 1) line 1, at EOF

8 /



Hilft das weiter?

Viele Grüße

Michael
Titel: Antw:Nach Update Fehler IO::Socket::INET: connect: timeout bei AT's und notify's
Beitrag von: rudolfkoenig am 17 Februar 2016, 21:26:22
Leider nicht so, wie ich es erwartet habe.
Kannst du bitte das ins SVN eingecheckte und ab morgen per update verfuegbare 10_ZWave.pm ausprobieren und berichten?
Titel: Antw:Nach Update Fehler IO::Socket::INET: connect: timeout bei AT's und notify's
Beitrag von: m8ichael am 17 Februar 2016, 21:33:19
Zitat von: rudolfkoenig am 17 Februar 2016, 21:26:22
Leider nicht so, wie ich es erwartet habe.
Kannst du bitte das ins SVN eingecheckte und ab morgen per update verfuegbare 10_ZWave.pm ausprobieren und berichten?

Ok, dann hab ich das richtig hinsichtlich der Ausgabe interpretiert.  :(

Und klar, werde das ab morgen mal testen!

Vielen Dank und viele Grüße!

Michael
Titel: Antw:Nach Update Fehler IO::Socket::INET: connect: timeout bei AT's und notify's
Beitrag von: m8ichael am 20 Februar 2016, 18:55:37
Hallo Rudi!

So, ich glaube, dass ich nun nach ein paar Testtagen vermelden kann, dass wieder alles wie gewohnt funktioniert - seit dem letzten Update sind keine Timeouts mehr erschienen!

Vielen Dank für deine Mühe!

Viele Grüße

Michael