From 7ee13d6bf5d3568a8a0baa404df0b72a8aa85549 Mon Sep 17 00:00:00 2001 From: martinp876 <> Date: Wed, 17 Jul 2013 13:27:12 +0000 Subject: [PATCH] trigger source event, WDS30-OT git-svn-id: https://svn.fhem.de/fhem/trunk@3441 2b470e98-0d58-463d-a4d8-8e2adae1ed80 --- fhem/FHEM/10_CUL_HM.pm | 34 ++++++++++++++++++++++++++++++++-- fhem/FHEM/HMConfig.pm | 23 ++++++++++++++--------- 2 files changed, 46 insertions(+), 11 deletions(-) diff --git a/fhem/FHEM/10_CUL_HM.pm b/fhem/FHEM/10_CUL_HM.pm index 0344a2545..94928afbe 100755 --- a/fhem/FHEM/10_CUL_HM.pm +++ b/fhem/FHEM/10_CUL_HM.pm @@ -162,6 +162,7 @@ sub CUL_HM_reqStatus($){ sub CUL_HM_autoReadConfig($){ # will trigger a getConfig and statusrequest for each device assigned. # + return if (!$modules{CUL_HM}{helper}{autoRdCfgLst}); while(@{$modules{CUL_HM}{helper}{autoRdCfgLst}}){ my $name = shift(@{$modules{CUL_HM}{helper}{autoRdCfgLst}}); my $hash = $defs{$name}; @@ -443,6 +444,8 @@ sub CUL_HM_Parse($$) {############################## my $shash = $modules{CUL_HM}{defptr}{$src}; my $dhash = $modules{CUL_HM}{defptr}{$dst}; + + $respRemoved = 0; #set to 'no response in this message' at start if(!$shash) { # Unknown source # Generate an UNKNOWN event for pairing requests, ignore everything else @@ -504,7 +507,7 @@ sub CUL_HM_Parse($$) {############################## #----------start valid messages parsing --------- my $parse = CUL_HM_parseCommon($mNo,$mFlg,$mTp,$src,$dst,$p); push @event, "powerOn" if($parse eq "powerOn"); - + if ($parse eq "ACK"){# remember - ACKinfo will be passed on push @event, ""; } @@ -818,6 +821,16 @@ sub CUL_HM_Parse($$) {############################## } 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)$/) {########################## 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); + 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################## #send wakeup and process command stack @@ -4812,6 +4838,10 @@ sub CUL_HM_putHash($) {# provide data for HMinfo ValveErrorPosition $vep %
ValveOffset $of %
time-request
+ trig_<src> <value> #channel was triggered by <src> channel. + This event relies on complete reading of channels configuration, otherwise Data can be + incomplete or incorrect.
+ trigLast <channel> #last receiced trigger
  • HM-CC-VD
    $vp %
    diff --git a/fhem/FHEM/HMConfig.pm b/fhem/FHEM/HMConfig.pm index 4b7b1c832..208400ae5 100644 --- a/fhem/FHEM/HMConfig.pm +++ b/fhem/FHEM/HMConfig.pm @@ -188,6 +188,7 @@ my %culHmModel=( "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=>"",}, "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",}, #263 167 HM Smoke Detector Schueco #"HM-RC-Key4-2" @@ -989,15 +990,15 @@ my %culHmBits = ( MODE => '04,2,$val=hex($val)', } }, "12" => { txt => "HAVE_DATA"}, - "3E" => { txt => "SWITCH", params => { + "3E" => { txt => "SWITCH" , params => { DST => "00,6", UNKNOWN => "06,2", CHANNEL => "08,2", COUNTER => "10,2", } }, - "3F" => { txt => "TimeStamp", params => { + "3F" => { txt => "TimeStamp" , params => { UNKNOWN => "00,4", TIME => "04,2", } }, - "40" => { txt => "REMOTE", params => { + "40" => { txt => "REMOTE" , params => { BUTTON => '00,2,$val=(hex($val)&0x3F)', LONG => '00,2,$val=(hex($val)&0x40)?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', VALUE => '02,2,$val=(hex($val))', NEXT => '04,2,$val=(hex($val))',} }, - "53" => { txt => "WaterSensor", params => { - CMD => "00,2", - SEQ => '02,2,$val=(hex($val))-64', - V1 => '08,2,$val=(hex($val))', - V2 => '10,2,$val=(hex($val))', - V3 => '12,2,$val=(hex($val))'} }, + "53" => { txt => "SensorData" , params => { + CMD => "00,2", + Fld1=> "02,2", + Val1=> '04,4,$val=(hex($val))', + Fld2=> "08,2", + 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 => { CMD => "00,2", ValvePos => '02,2,$val=(hex($val))', } },