diff --git a/fhem/FHEM/OWX_DS2480.pm b/fhem/FHEM/OWX_DS2480.pm index 2428ff3eb..a7caf88ca 100644 --- a/fhem/FHEM/OWX_DS2480.pm +++ b/fhem/FHEM/OWX_DS2480.pm @@ -219,10 +219,6 @@ sub response_ready() { main::Log3($serial->{name},5, "OWX_DS2480 read: After loop no. $serial->{num_reads} received: ".unpack("H*",$serial->{string_in})); return 1; } - if (($serial->{num_reads} > 1) and (tv_interval($serial->{starttime}) > $serial->{timeout})) { - main::Log3($serial->{name},5, "OWX_DS2480 read: After loop no. $serial->{num_reads} received: ".unpack("H*",$serial->{string_in}). " -> TIMEOUT"); - die "OWX_DS2480 read timeout, bytes read: $serial->{retcount}, expected: $serial->{retlen}" ; - } return 0; } @@ -235,7 +231,6 @@ sub start_query() { $serial->{num_reads} = 0; $serial->{retlen} = 0; $serial->{retcount} = 0; - $serial->{starttime} = [gettimeofday]; } ######################################################################################## diff --git a/fhem/FHEM/OWX_SER.pm b/fhem/FHEM/OWX_SER.pm index 7b9981690..025584de8 100644 --- a/fhem/FHEM/OWX_SER.pm +++ b/fhem/FHEM/OWX_SER.pm @@ -51,7 +51,6 @@ sub new() { alarmdevs => [], devs => [], fams => [], - timeout => 1.0, #default timeout 1 sec. }; return bless $self,$class; } @@ -236,10 +235,11 @@ sub initialize() { #-- write 1-Wire bus (Fig. 2 of Maxim AN192) $ds2480->start_query(); $ds2480->query("\x17\x45\x5B\x0F\x91",5); - eval { #ignore timeout + my $until = gettimeofday + main::AttrVal($hash->{NAME},"timeout",1); + eval { do { - $ds2480->read(); - } while (!$ds2480->response_ready()); + $ds2480->poll(); + } until ($ds2480->response_ready() or gettimeofday >= $until); }; $res = $ds2480->{string_in}; #-- process 4/5-byte string for detection