Autor Thema: Nach Update Fehler IO::Socket::INET: connect: timeout bei AT's und notify's  (Gelesen 836 mal)

Offline m8ichael

  • Full Member
  • ***
  • Beiträge: 147
Hallo!

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 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

Offline m8ichael

  • Full Member
  • ***
  • Beiträge: 147
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

Offline rudolfkoenig

  • Administrator
  • Hero Member
  • *****
  • Beiträge: 16005
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() operator.  If $@ is the null string, the last eval() parsed and executed correctly (although the operations you invoked may have failed in the normal fashion).

Offline rudolfkoenig

  • Administrator
  • Hero Member
  • *****
  • Beiträge: 16005
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?

Offline m8ichael

  • Full Member
  • ***
  • Beiträge: 147
Hallo!

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

Offline rudolfkoenig

  • Administrator
  • Hero Member
  • *****
  • Beiträge: 16005
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?

Offline m8ichael

  • Full Member
  • ***
  • Beiträge: 147
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

Offline m8ichael

  • Full Member
  • ***
  • Beiträge: 147
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

 

decade-submarginal