From 97dc2bcec2df17b35877ca1d260cd6e80e17c908 Mon Sep 17 00:00:00 2001 From: hcs-svn <> Date: Mon, 26 Sep 2016 20:13:32 +0000 Subject: [PATCH] 36_LaCrosseGateway.pm: fixed crazy logging when no connect is possible git-svn-id: https://svn.fhem.de/fhem/trunk@12214 2b470e98-0d58-463d-a4d8-8e2adae1ed80 --- fhem/FHEM/36_LaCrosseGateway.pm | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/fhem/FHEM/36_LaCrosseGateway.pm b/fhem/FHEM/36_LaCrosseGateway.pm index 278e4e4bb..fd47ab496 100644 --- a/fhem/FHEM/36_LaCrosseGateway.pm +++ b/fhem/FHEM/36_LaCrosseGateway.pm @@ -216,11 +216,11 @@ sub LaCrosseGateway_DoInit($) { } #======================================================================================= - sub LaCrosseGateway_Ready($) { my ($hash) = @_; + my $name = $hash->{NAME}; - return LaCrosseGateway_Connect($hash) if($hash->{STATE} eq "disconnected"); + LaCrosseGateway_Connect($hash, 1); # This is relevant for windows/USB only my $po = $hash->{USBDev}; @@ -414,13 +414,14 @@ sub LaCrosseGateway_SimpleWrite(@) { } #======================================================================================= -sub LaCrosseGateway_Connect($) { - my ($hash) = @_; +sub LaCrosseGateway_Connect($;$) { + my ($hash, $mode) = @_; my $name = $hash->{NAME}; - + + $mode = 0 if!($mode); my $enabled = AttrVal($name, "disable", "0") != "1"; if($enabled) { - my $ret = DevIo_OpenDev($hash, 0, "LaCrosseGateway_DoInit"); + my $ret = DevIo_OpenDev($hash, $mode, "LaCrosseGateway_DoInit"); return $ret; } @@ -431,11 +432,12 @@ sub LaCrosseGateway_Connect($) { sub LaCrosseGateway_OnConnectTimer($) { my ($hash) = @_; my $name = $hash->{NAME}; + + RemoveInternalTimer($hash, "LaCrosseGateway_OnConnectTimer"); my $attrVal = AttrVal($name, "timeout", undef); if(defined($attrVal)) { my ($timeout, $interval) = split(',', $attrVal); - InternalTimer(gettimeofday() + $interval, "LaCrosseGateway_OnConnectTimer", $hash, 0); my $LaCrosseGatewayTime = InternalVal($name, "${name}_TIME", "2000-01-01 00:00:00"); my ($date, $time, $year, $month, $day, $hour, $min, $sec, $timestamp); ($date, $time) = split( ' ', $LaCrosseGatewayTime); @@ -444,8 +446,10 @@ sub LaCrosseGateway_OnConnectTimer($) { $month -= 01; $timestamp = timelocal($sec, $min, $hour, $day, $month, $year); + InternalTimer(gettimeofday() + $interval, "LaCrosseGateway_OnConnectTimer", $hash, 0); + if (gettimeofday() - $timestamp > $timeout) { - return LaCrosseGateway_Connect($hash); + return LaCrosseGateway_Connect($hash, 1); } } }