From 8769ce2d3cdbf4023d6f7ea439d97c0f1d8a63c8 Mon Sep 17 00:00:00 2001 From: rudolfkoenig Date: Wed, 10 Dec 2014 20:31:12 +0000 Subject: [PATCH] 93_FHEM2FHEM: add reopen, fix modify on unreachable bug (Forum #30242) git-svn-id: https://svn.fhem.de/fhem/trunk@7183 2b470e98-0d58-463d-a4d8-8e2adae1ed80 --- fhem/FHEM/93_FHEM2FHEM.pm | 32 +++++++++++++++++++++++++++++--- 1 file changed, 29 insertions(+), 3 deletions(-) diff --git a/fhem/FHEM/93_FHEM2FHEM.pm b/fhem/FHEM/93_FHEM2FHEM.pm index 860fb4689..c5e138385 100755 --- a/fhem/FHEM/93_FHEM2FHEM.pm +++ b/fhem/FHEM/93_FHEM2FHEM.pm @@ -24,6 +24,7 @@ FHEM2FHEM_Initialize($) $hash->{ReadFn} = "FHEM2FHEM_Read"; $hash->{WriteFn} = "FHEM2FHEM_Write"; $hash->{ReadyFn} = "FHEM2FHEM_Ready"; + $hash->{SetFn} = "FHEM2FHEM_Set"; $hash->{noRawInform} = 1; # Normal devices @@ -196,6 +197,7 @@ FHEM2FHEM_CloseDev($) $hash->{TCPDev}->close() if($hash->{TCPDev}); $hash->{TCPDev2}->close() if($hash->{TCPDev2}); + delete($hash->{NEXT_OPEN}); delete($hash->{TCPDev}); delete($hash->{TCPDev2}); delete($selectlist{"$name.$dev"}); @@ -233,7 +235,8 @@ FHEM2FHEM_OpenDev($$) } if($conn) { - delete($hash->{NEXT_OPEN}) + delete($hash->{NEXT_OPEN}); + $conn->setsockopt(SOL_SOCKET, SO_KEEPALIVE, 1); } else { Log3($name, 3, "Can't connect to $dev: $!") if(!$reopen); @@ -296,6 +299,21 @@ FHEM2FHEM_SimpleRead($) return $buf; } +sub +FHEM2FHEM_Set($@) +{ + my ($hash, @a) = @_; + + return "set needs at least one parameter" if(@a < 2); + return "Unknown argument $a[1], choose one of reopen:noArg" + if($a[1] ne "reopen"); + + + FHEM2FHEM_CloseDev($hash); + FHEM2FHEM_OpenDev($hash, 0); + return undef; +} + 1; =pod @@ -370,7 +388,11 @@ FHEM2FHEM_SimpleRead($)
- Set
+ Set + Get
@@ -463,7 +485,11 @@ FHEM2FHEM_SimpleRead($)
- Set
+ Set + Get