2
0
mirror of https://github.com/fhem/fhem-mirror.git synced 2025-03-10 03:06:37 +00:00

trigger source event, WDS30-OT

git-svn-id: https://svn.fhem.de/fhem/trunk@3441 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
martinp876 2013-07-17 13:27:12 +00:00
parent 58eec9a078
commit 7ee13d6bf5
2 changed files with 46 additions and 11 deletions

View File

@ -162,6 +162,7 @@ sub CUL_HM_reqStatus($){
sub CUL_HM_autoReadConfig($){ sub CUL_HM_autoReadConfig($){
# will trigger a getConfig and statusrequest for each device assigned. # will trigger a getConfig and statusrequest for each device assigned.
# #
return if (!$modules{CUL_HM}{helper}{autoRdCfgLst});
while(@{$modules{CUL_HM}{helper}{autoRdCfgLst}}){ while(@{$modules{CUL_HM}{helper}{autoRdCfgLst}}){
my $name = shift(@{$modules{CUL_HM}{helper}{autoRdCfgLst}}); my $name = shift(@{$modules{CUL_HM}{helper}{autoRdCfgLst}});
my $hash = $defs{$name}; my $hash = $defs{$name};
@ -443,6 +444,8 @@ sub CUL_HM_Parse($$) {##############################
my $shash = $modules{CUL_HM}{defptr}{$src}; my $shash = $modules{CUL_HM}{defptr}{$src};
my $dhash = $modules{CUL_HM}{defptr}{$dst}; my $dhash = $modules{CUL_HM}{defptr}{$dst};
$respRemoved = 0; #set to 'no response in this message' at start $respRemoved = 0; #set to 'no response in this message' at start
if(!$shash) { # Unknown source if(!$shash) { # Unknown source
# Generate an UNKNOWN event for pairing requests, ignore everything else # Generate an UNKNOWN event for pairing requests, ignore everything else
@ -504,7 +507,7 @@ sub CUL_HM_Parse($$) {##############################
#----------start valid messages parsing --------- #----------start valid messages parsing ---------
my $parse = CUL_HM_parseCommon($mNo,$mFlg,$mTp,$src,$dst,$p); my $parse = CUL_HM_parseCommon($mNo,$mFlg,$mTp,$src,$dst,$p);
push @event, "powerOn" if($parse eq "powerOn"); push @event, "powerOn" if($parse eq "powerOn");
if ($parse eq "ACK"){# remember - ACKinfo will be passed on if ($parse eq "ACK"){# remember - ACKinfo will be passed on
push @event, ""; push @event, "";
} }
@ -818,6 +821,16 @@ sub CUL_HM_Parse($$) {##############################
} }
push @event, $statemsg; push @event, $statemsg;
} }
elsif ($mTp eq "53"){
my ($mChn,@dat) = unpack 'A2(A6)*',$p;
my %dField = (41=>"temp_T1",42=>"temp_T2",43=>"temp_T1-T2",44=>"temp_T2-T1");
foreach (@dat){
my ($a,$d) = unpack 'A2A4',$_;
$d = hex($d);
$d -= 0x10000 if($d & 0x4000);
push @event, sprintf("Val_$dField{$a}:%0.1f",$d/10);
}
}
} }
elsif($st =~ m /^(switch|dimmer|blindActuator)$/) {########################## elsif($st =~ m /^(switch|dimmer|blindActuator)$/) {##########################
if (($mTp eq "02" && $p =~ m/^01/) || # handle Ack_Status if (($mTp eq "02" && $p =~ m/^01/) || # handle Ack_Status
@ -1556,8 +1569,21 @@ sub CUL_HM_parseCommon(@){#####################################################
} }
} }
} }
elsif($mTp eq "40"){ #someone is triggere################# # elsif($mTp eq "40"){ #someone is triggered################
# CUL_HM_qStateUpdatIfEnab($dst)if (hex($mFlg) & 0x20 && $dhash);
# }
elsif($mTp =~ m /^4[01]/){ #someone is triggered##########
CUL_HM_qStateUpdatIfEnab($dst)if (hex($mFlg) & 0x20 && $dhash); CUL_HM_qStateUpdatIfEnab($dst)if (hex($mFlg) & 0x20 && $dhash);
my $cName = CUL_HM_id2Name($src.sprintf("%02X",hex(substr($p,0,2))& 0x3f));
my $level = "-";
$level = hex(substr($p,4,2))." %" if (length($p)>5);
my @peers = split(",",AttrVal($cName,"peerIDs",""));
foreach my $peer (@peers){
my $pName = CUL_HM_id2Name($peer);
next if (!$defs{$pName});
CUL_HM_UpdtReadBulk($defs{$pName},1,"trig_$cName:$level",
"trigLast:$cName");
}
} }
elsif($mTp eq "70"){ #Time to trigger TC################## elsif($mTp eq "70"){ #Time to trigger TC##################
#send wakeup and process command stack #send wakeup and process command stack
@ -4812,6 +4838,10 @@ sub CUL_HM_putHash($) {# provide data for HMinfo
ValveErrorPosition $vep %<br> ValveErrorPosition $vep %<br>
ValveOffset $of %<br> ValveOffset $of %<br>
time-request<br> time-request<br>
trig_&lt;src&gt; &lt;value&gt; #channel was triggered by &lt;src&gt; channel.
This event relies on complete reading of channels configuration, otherwise Data can be
incomplete or incorrect.<br>
trigLast &lt;channel&gt; #last receiced trigger<br>
</li> </li>
<li><B>HM-CC-VD</B><br> <li><B>HM-CC-VD</B><br>
$vp %<br> $vp %<br>

View File

@ -188,6 +188,7 @@ my %culHmModel=(
"00A3" => {name=>"HM-LC-Dim1L-Pl-2" ,st=>'dimmer' ,cyc=>'' ,rxt=>'' ,lst=>'1,3' ,chn=>"",}, "00A3" => {name=>"HM-LC-Dim1L-Pl-2" ,st=>'dimmer' ,cyc=>'' ,rxt=>'' ,lst=>'1,3' ,chn=>"",},
"00A4" => {name=>"HM-LC-Dim1T-Pl-2" ,st=>'dimmer' ,cyc=>'' ,rxt=>'' ,lst=>'1,3' ,chn=>"",}, "00A4" => {name=>"HM-LC-Dim1T-Pl-2" ,st=>'dimmer' ,cyc=>'' ,rxt=>'' ,lst=>'1,3' ,chn=>"",},
"00A7" => {name=>"HM-Sen-RD-O" ,st=>'' ,cyc=>'' ,rxt=>'' ,lst=>'1:1,4:1' ,chn=>"Rain:1:1,Sw:2:2",}, "00A7" => {name=>"HM-Sen-RD-O" ,st=>'' ,cyc=>'' ,rxt=>'' ,lst=>'1:1,4:1' ,chn=>"Rain:1:1,Sw:2:2",},
"00A8" => {name=>"HM-WDS30-OT2-SM" ,st=>'THSensor' ,cyc=>'00:05' ,rxt=>'c:w' ,lst=>'1:1,4:1' ,chn=>"",},
"00A9" => {name=>"HM-PB-6-WM55" ,st=>'remote' ,cyc=>'' ,rxt=>'c' ,lst=>'1,4' ,chn=>"Btn:1:6",}, "00A9" => {name=>"HM-PB-6-WM55" ,st=>'remote' ,cyc=>'' ,rxt=>'c' ,lst=>'1,4' ,chn=>"Btn:1:6",},
#263 167 HM Smoke Detector Schueco #263 167 HM Smoke Detector Schueco
#"HM-RC-Key4-2" #"HM-RC-Key4-2"
@ -989,15 +990,15 @@ my %culHmBits = (
MODE => '04,2,$val=hex($val)', MODE => '04,2,$val=hex($val)',
} }, } },
"12" => { txt => "HAVE_DATA"}, "12" => { txt => "HAVE_DATA"},
"3E" => { txt => "SWITCH", params => { "3E" => { txt => "SWITCH" , params => {
DST => "00,6", DST => "00,6",
UNKNOWN => "06,2", UNKNOWN => "06,2",
CHANNEL => "08,2", CHANNEL => "08,2",
COUNTER => "10,2", } }, COUNTER => "10,2", } },
"3F" => { txt => "TimeStamp", params => { "3F" => { txt => "TimeStamp" , params => {
UNKNOWN => "00,4", UNKNOWN => "00,4",
TIME => "04,2", } }, TIME => "04,2", } },
"40" => { txt => "REMOTE", params => { "40" => { txt => "REMOTE" , params => {
BUTTON => '00,2,$val=(hex($val)&0x3F)', BUTTON => '00,2,$val=(hex($val)&0x3F)',
LONG => '00,2,$val=(hex($val)&0x40)?1:0', LONG => '00,2,$val=(hex($val)&0x40)?1:0',
LOWBAT => '00,2,$val=(hex($val)&0x80)?1:0', LOWBAT => '00,2,$val=(hex($val)&0x80)?1:0',
@ -1008,12 +1009,16 @@ my %culHmBits = (
LOWBAT => '00,2,$val=(hex($val)&0x80)?1:0', LOWBAT => '00,2,$val=(hex($val)&0x80)?1:0',
VALUE => '02,2,$val=(hex($val))', VALUE => '02,2,$val=(hex($val))',
NEXT => '04,2,$val=(hex($val))',} }, NEXT => '04,2,$val=(hex($val))',} },
"53" => { txt => "WaterSensor", params => { "53" => { txt => "SensorData" , params => {
CMD => "00,2", CMD => "00,2",
SEQ => '02,2,$val=(hex($val))-64', Fld1=> "02,2",
V1 => '08,2,$val=(hex($val))', Val1=> '04,4,$val=(hex($val))',
V2 => '10,2,$val=(hex($val))', Fld2=> "08,2",
V3 => '12,2,$val=(hex($val))'} }, Val2=> '10,4,$val=(hex($val))',
Fld3=> "14,2",
Val3=> '16,4,$val=(hex($val))',
Fld4=> "20,2",
Val4=> '24,4,$val=(hex($val))'} },
"58" => { txt => "ClimateEvent", params => { "58" => { txt => "ClimateEvent", params => {
CMD => "00,2", CMD => "00,2",
ValvePos => '02,2,$val=(hex($val))', } }, ValvePos => '02,2,$val=(hex($val))', } },