diff --git a/fhem/FHEM/00_ZWDongle.pm b/fhem/FHEM/00_ZWDongle.pm index 93df34daa..c255dae25 100755 --- a/fhem/FHEM/00_ZWDongle.pm +++ b/fhem/FHEM/00_ZWDongle.pm @@ -410,9 +410,10 @@ ZWave_HandleSendStack($) { my $hash = shift; shift @{$hash->{SendStack}}; + RemoveInternalTimer($hash); # remove timer to avoid re-trigger return if(!@{$hash->{SendStack}}); ZWDongle_Write($hash, "00", $hash->{SendStack}->[0], 1); - InternalTimer(gettimeofday()+0.1, "ZWave_HandleSendStack", $hash, 0); + InternalTimer(gettimeofday()+0.5, "ZWave_HandleSendStack", $hash, 0); } ##################################### @@ -509,7 +510,6 @@ ZWDongle_ReadAnswer($$$) if(!$hash || ($^O !~ /Win/ && !defined($hash->{FD}))); my $to = ($hash->{RA_Timeout} ? $hash->{RA_Timeout} : 3); - shift @{$hash->{SendStack}}; # Hope this is right. for(;;) { my $buf; diff --git a/fhem/FHEM/10_ZWave.pm b/fhem/FHEM/10_ZWave.pm index 78c26e048..c49be7141 100755 --- a/fhem/FHEM/10_ZWave.pm +++ b/fhem/FHEM/10_ZWave.pm @@ -619,7 +619,11 @@ ZWave_Parse($$@) return $ret; } elsif($cmd eq "ZW_SEND_DATA") { - Log3 $ioName, 2, "$ioName ERROR: SEND_DATA returned $id" if($id ne "00"); + if($id ne "00") { + Log3 $ioName, 2, "$ioName ERROR: SEND_DATA returned $id"; + } else { + ZWave_HandleSendStack($iodev); + } return ""; }