2
0
mirror of https://github.com/fhem/fhem-mirror.git synced 2025-03-10 09:16:53 +00:00

THZ: fix for heiner (Forum #1080204)

git-svn-id: https://svn.fhem.de/fhem/trunk@22655 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
immi 2020-08-23 21:12:20 +00:00
parent e5f61de4ab
commit 5797f8b082

View File

@ -2,7 +2,7 @@
# 00_THZ # 00_THZ
# $Id$ # $Id$
# by immi 08/2020 # by immi 08/2020
my $thzversion = "0.187"; my $thzversion = "0.188";
# this code is based on the hard work of Robert; I just tried to port it # this code is based on the hard work of Robert; I just tried to port it
# http://robert.penz.name/heat-pump-lwz/ # http://robert.penz.name/heat-pump-lwz/
######################################################################################## ########################################################################################
@ -1476,6 +1476,7 @@ sub THZ_Get_Comunication($$) {
if ($msg ne "10") {$err .= " THZ_Get_Com: error found at step0 $msg"; $err .=" NAK!!" if ($msg eq "15"); select(undef, undef, undef, 0.1); return($err, $msg) ;} if ($msg ne "10") {$err .= " THZ_Get_Com: error found at step0 $msg"; $err .=" NAK!!" if ($msg eq "15"); select(undef, undef, undef, 0.1); return($err, $msg) ;}
else { else {
THZ_Write($hash, $cmdHex); # step1 --> send request SOH start of heading -- Null -- ?? -- DLE data link escape -- EOT End of Text THZ_Write($hash, $cmdHex); # step1 --> send request SOH start of heading -- Null -- ?? -- DLE data link escape -- EOT End of Text
select(undef, undef, undef, 0.1); #needed by heiner? msg1080204
($err, $msg) = THZ_ReadAnswer($hash); ($err, $msg) = THZ_ReadAnswer($hash);
} }
if (defined($err)) {$err .= " THZ_Get_Com: error found at step1 "; select(undef, undef, undef, 0.1); return($err, $msg) ;} if (defined($err)) {$err .= " THZ_Get_Com: error found at step1 "; select(undef, undef, undef, 0.1); return($err, $msg) ;}
@ -1503,12 +1504,12 @@ sub THZ_ReadAnswer($) {
my ($hash) = @_; my ($hash) = @_;
my $name = $hash->{NAME}; my $name = $hash->{NAME};
Log3 $hash->{NAME}, 5, "$name start Function THZ_ReadAnswer"; Log3 $hash->{NAME}, 5, "$name start Function THZ_ReadAnswer";
select(undef, undef, undef, 0.001); select(undef, undef, undef, 0.002);
my $buf = DevIo_SimpleRead($hash); my $buf = DevIo_SimpleRead($hash);
if(!defined($buf)) { if(!defined($buf)) {
select(undef, undef, undef, 0.025) if( $^O =~ /Win/ ); ###delay of 25 ms for windows-OS, because SimpleReadWithTimeout does not wait select(undef, undef, undef, 0.025) if( $^O =~ /Win/ ); ###delay of 25 ms for windows-OS, because SimpleReadWithTimeout does not wait
my $rtimeout = (AttrVal($name, "simpleReadTimeout", "0.5")) / 2; #added for Andre he would like to have 8/2 second. my $rtimeout = (AttrVal($name, "simpleReadTimeout", "0.5"));
$rtimeout = 0.5 if (AttrVal($name, "nonblocking", "0") eq 0); # set to 0.5s if nonblocking disabled $rtimeout = minNum($rtimeout,0.7) if (AttrVal($name, "nonblocking", "0") eq 0); # set to max 0.7s if nonblocking disabled
$buf = DevIo_SimpleReadWithTimeout($hash, $rtimeout); $buf = DevIo_SimpleReadWithTimeout($hash, $rtimeout);
} }
return ("THZ_ReadAnswer: InterfaceNotRespondig. Maybe too slow", "") if(!defined($buf)) ; return ("THZ_ReadAnswer: InterfaceNotRespondig. Maybe too slow", "") if(!defined($buf)) ;