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