From e4cf2bd9c30c44c8cf5b381304a2688f6875d07a Mon Sep 17 00:00:00 2001 From: martinp876 <> Date: Tue, 24 Sep 2013 12:24:57 +0000 Subject: [PATCH] post trigger_events if postEvent is being used git-svn-id: https://svn.fhem.de/fhem/trunk@3954 2b470e98-0d58-463d-a4d8-8e2adae1ed80 --- fhem/FHEM/10_CUL_HM.pm | 50 +++++++++++++++++++++++------------------- fhem/FHEM/HMConfig.pm | 2 +- 2 files changed, 28 insertions(+), 24 deletions(-) diff --git a/fhem/FHEM/10_CUL_HM.pm b/fhem/FHEM/10_CUL_HM.pm index 853b9b85e..2ccf08d50 100755 --- a/fhem/FHEM/10_CUL_HM.pm +++ b/fhem/FHEM/10_CUL_HM.pm @@ -1815,7 +1815,7 @@ sub CUL_HM_parseCommon(@){##################################################### my $l = substr($p,4,2); if ($lvlStr{md}{$md} && $lvlStr{md}{$md}{$l}){$level = $lvlStr{md}{$md}{$l}} elsif ($lvlStr{st}{$st} && $lvlStr{st}{$st}{$l}){$level = $lvlStr{st}{$st}{$l}} - else {$level = hex($l)}; + else {$level = hex($l)}; } my @peers = split(",",AttrVal($cName,"peerIDs","")); @@ -1923,11 +1923,8 @@ sub CUL_HM_Get($@) { return $attr{$name}{$a[2]} if ($attr{$name}{$a[2]}); return $hash->{READINGS}{$a[2]}{VAL} if ($hash->{READINGS}{$a[2]}); return $attr{$devName}{$a[2]} if ($attr{$devName}{$a[2]}); - return $devHash->{READINGS}{$a[2]}{VAL} if ($devHash->{READINGS}{$a[2]}); return $hash->{$a[2]} if ($hash->{$a[2]}); - return $devHash->{$a[2]} if ($devHash->{$a[2]}); return $hash->{helper}{$a[2]} if ($hash->{helper}{$a[2]} && ref($hash->{helper}{$a[2]}) ne "HASH"); - return $devHash->{helper}{$a[2]} if ($devHash->{helper}{$a[2]}); return "undefined"; } elsif($cmd eq "reg") { ##################################################### @@ -2978,25 +2975,32 @@ sub CUL_HM_Set($@) { my $pressCnt = (!$hash->{helper}{count}?1:$hash->{helper}{count}+1)%256; $hash->{helper}{count}=$pressCnt;# remember for next round - my @peerList; - if ($st eq 'virtual'){#serve all peers of virtual button - foreach my $peer (sort(split(',',AttrVal($name,"peerIDs","")))) { - push (@peerList,substr($peer,0,6)); - } - @peerList = CUL_HM_noDup(@peerList); - push @peerList,'00000000' if (!@peerList);#send to broadcast if no peer - foreach my $peer (sort @peerList){ - my $pHash = CUL_HM_id2Hash($peer); - my $peerFlag = $peer eq '00000000'?'A4':CUL_HM_getFlag($pHash); - $peerFlag =~ s/0/4/;# either 'A4' or 'B4' - CUL_HM_SndCmd($hash, "++B412$dst".substr($peer,0,6_)) - if (CUL_HM_getRxType($pHash) & 0x80); - CUL_HM_SndCmd($hash, sprintf("++%s41%s%s%02X%02X%02X" - ,$peerFlag,$dst,$peer - ,$chn - ,$pressCnt - ,$cond)); - } + my @peerLChn = split(',',AttrVal($name,"peerIDs","")); + my @peerDev; + push (@peerDev,substr($_,0,6)) foreach (@peerLChn); + @peerDev = CUL_HM_noDup(@peerDev);#only once per device! + + push @peerDev,'000000' if (!@peerDev);#send to broadcast if no peer + foreach my $peer (@peerDev){ + my $pHash = CUL_HM_id2Hash($peer); + my $peerFlag = $peer eq '00000000'?'A4':CUL_HM_getFlag($pHash); + $peerFlag =~ s/0/4/;# either 'A4' or 'B4' + CUL_HM_SndCmd($hash, "++B412$dst".substr($peer,0,6_)) + if (CUL_HM_getRxType($pHash) & 0x80); + CUL_HM_SndCmd($hash, sprintf("++%s41%s%s%02X%02X%02X" + ,$peerFlag,$dst,$peer + ,$chn + ,$pressCnt + ,$cond)); + } + + foreach my $peer (@peerLChn){#inform each channel + my $pName = CUL_HM_id2Name($peer); + $pName = CUL_HM_id2Name(substr($peer,0,6)) if (!$defs{$pName}); + next if (!$defs{$pName}); + CUL_HM_UpdtReadBulk($defs{$pName},1 + ,"trig_$name:$cond" + ,"trigLast:$name:$cond"); } } elsif($cmd eq "peerChan") { ############################################# reg diff --git a/fhem/FHEM/HMConfig.pm b/fhem/FHEM/HMConfig.pm index ada02b6eb..6a3d0a7b7 100644 --- a/fhem/FHEM/HMConfig.pm +++ b/fhem/FHEM/HMConfig.pm @@ -190,7 +190,7 @@ my %culHmModel=( "0092" => {name=>"Schueco_263-144" ,st=>'switch' ,cyc=>'' ,rxt=>'c' ,lst=>'4' ,chn=>"",}, # HM Switch Interface 3 switches "0093" => {name=>"Schueco_263-158" ,st=>'THSensor' ,cyc=>'00:10' ,rxt=>'c:w:f' ,lst=>'p' ,chn=>"",}, # "0094" => {name=>"IS-WDS-TH-OD-S-R3" ,st=>'THSensor' ,cyc=>'00:10' ,rxt=>'c:w' ,lst=>'p' ,chn=>"",}, # - "0095" => {name=>"HM-CC-RT-DN" ,st=>'thermostat' ,cyc=>'' ,rxt=>'c:w:f' ,lst=>'p:1p.2p.5p.6p,3:3p.6p,7:4' + "0095" => {name=>"HM-CC-RT-DN" ,st=>'thermostat' ,cyc=>'00:10' ,rxt=>'c:w:f' ,lst=>'p:1p.2p.5p.6p,3:3p.6p,7:4' ,chn=>"Weather:1:1,Climate:2:2,WindowRec:3:3,ClimRT_tr:4:4,ClimaTeam:5:5,remote:6:6"}, # "0096" => {name=>"WDF-solar" ,st=>'blindActuatorSol' ,cyc=>'' ,rxt=>'b' ,lst=>'1,3' ,chn=>"win:1:1,blind_2:3",}, # "009B" => {name=>"Schueco_263-xxx" ,st=>'tipTronic' ,cyc=>'28:00' ,rxt=>'c:w' ,lst=>'1:1.2,3:1p.3p',chn=>"act:1:1,sen:2:2,sec:3:3",}, #