From eea49ac89e068ef1edf5dc20df9ef1c0a782f8d3 Mon Sep 17 00:00:00 2001 From: martinp876 <> Date: Mon, 28 Oct 2013 19:22:49 +0000 Subject: [PATCH] COC state init support git-svn-id: https://svn.fhem.de/fhem/trunk@4126 2b470e98-0d58-463d-a4d8-8e2adae1ed80 --- fhem/FHEM/10_CUL_HM.pm | 29 ++++++++++++++++++----------- 1 file changed, 18 insertions(+), 11 deletions(-) diff --git a/fhem/FHEM/10_CUL_HM.pm b/fhem/FHEM/10_CUL_HM.pm index 80b709ce2..6ce75c4bf 100755 --- a/fhem/FHEM/10_CUL_HM.pm +++ b/fhem/FHEM/10_CUL_HM.pm @@ -1036,7 +1036,7 @@ sub CUL_HM_Parse($$) {############################## $eventName = "motor" if($st eq "blindActuator"); $eventName = "dim" if($st eq "dimmer"); my $action; #determine action - push @event, "timedOn:".($err&0x40)?"running":"off"; + push @event, "timedOn:".(($err&0x40)?"running":"off"); if ($st ne "switch"){ push @event, "$eventName:up:$vs" if(($err&0x30) == 0x10); @@ -3329,6 +3329,7 @@ sub CUL_HM_pushConfig($$$$$$$$@) {#generate messages to config data to register $change .= $_." " if ($nrRd !~ m /$_/);# filter only changes } next if (!$change);#no changes + $change =~ s/00:00//; $change =~ s/(\ |:)//g; my $peerN; $changed = 1;# yes, we did @@ -3336,15 +3337,21 @@ sub CUL_HM_pushConfig($$$$$$$$@) {#generate messages to config data to register if ($peerN){($peerAddr,$peerChn) = unpack('A6A2', CUL_HM_name2Id($peerN,$hash));} else {($peerAddr,$peerChn) = ('000000','00');} CUL_HM_updtRegDisp($hash,$list,$peerAddr.$peerChn); - CUL_HM_PushCmdStack($hash, "++".$flag.'01'.$src.$dst.$chn.'05'. - $peerAddr.$peerChn.$list); - $tl = length($change); - for(my $l = 0; $l < $tl; $l+=28) { - my $ml = $tl-$l < 28 ? $tl-$l : 28; - CUL_HM_PushCmdStack($hash, "++A001".$src.$dst.$chn."08". - substr($change,$l,$ml)); - } - CUL_HM_PushCmdStack($hash,"++A001".$src.$dst.$chn."06"); + ############partition +# my @chSplit = unpack('(A28)*',$change); + my @chSplit = unpack('(A1120)*',$change);# makes max 40 lines, 280 byte + foreach my $chSpl(@chSplit){ + CUL_HM_PushCmdStack($hash, "++".$flag.'01'.$src.$dst.$chn.'05'. + $peerAddr.$peerChn.$list); + $tl = length($chSpl); + for(my $l = 0; $l < $tl; $l+=28) { + my $ml = $tl-$l < 28 ? $tl-$l : 28; + CUL_HM_PushCmdStack($hash, "++A001".$src.$dst.$chn."08". + substr($chSpl,$l,$ml)); + } + CUL_HM_PushCmdStack($hash,"++A001".$src.$dst.$chn."06"); + } + ######### } CUL_HM_qAutoRead($hash->{NAME},3) if ($changed); } @@ -3656,7 +3663,7 @@ sub CUL_HM_respPendTout($) { delete $pHash->{mmcS}; } - if ($hash->{IODev}->{STATE} ne "opened"){#IO errors + if ($hash->{IODev}->{STATE} !~ m/^(opened|Initialized)$/){#IO errors CUL_HM_eventP($hash,"IOerr"); readingsSingleUpdate($hash,"state","IOerr",1); }