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