From b5aafc93f37f1fb3b559c84414ec3ad194a16d76 Mon Sep 17 00:00:00 2001 From: martinp876 <> Date: Sun, 22 Sep 2013 21:33:14 +0000 Subject: [PATCH] get desired-temp 4 tc in central mode, prepare conditional burst git-svn-id: https://svn.fhem.de/fhem/trunk@3945 2b470e98-0d58-463d-a4d8-8e2adae1ed80 --- fhem/FHEM/10_CUL_HM.pm | 19 ++++++++++++------- fhem/FHEM/98_HMinfo.pm | 10 +++++++--- fhem/FHEM/HMConfig.pm | 22 +++++++++++----------- 3 files changed, 30 insertions(+), 21 deletions(-) diff --git a/fhem/FHEM/10_CUL_HM.pm b/fhem/FHEM/10_CUL_HM.pm index d9d2e44e3..ff23c29fc 100755 --- a/fhem/FHEM/10_CUL_HM.pm +++ b/fhem/FHEM/10_CUL_HM.pm @@ -634,8 +634,13 @@ sub CUL_HM_Parse($$) {############################## ( $1, hex($2)); $vp = int($vp/2.56+0.5); # valve position in % my $chnHash = $modules{CUL_HM}{defptr}{$src.$chn}; - push @entities,CUL_HM_UpdtReadSingle($chnHash,"state","$vp %",1) - if($chnHash); + if($chnHash){ + push @entities,CUL_HM_UpdtReadSingle($chnHash,"state","$vp %",1); + if ($chnHash->{helper}{needUpdate}){ + CUL_HM_stateUpdat(":".$chnHash->{NAME}); + delete $chnHash->{helper}{needUpdate}; + } + } push @event, "actuator:$vp %"; # Set the valve state too, without an extra trigger @@ -661,6 +666,7 @@ sub CUL_HM_Parse($$) {############################## # readingsSingleUpdate($chnHash,"desired-temp-cent",$dTemp,1) if($mode =~ m /central/ && $mTp eq '02'); # removed - shall not be changed automatically - change is only temporary # CUL_HM_Set($chnHash,$chnName,"desired-temp",$dTemp) if($mode =~ m /central/ && $mTp eq '10'); + $chnHash->{helper}{needUpdate} = 1 if($mode =~ m /central/ && $mTp eq '10'); } push @event, "desired-temp:" .$dTemp; push @event, "battery:".($err&0x80?"low":"ok"); @@ -2034,7 +2040,7 @@ sub CUL_HM_Get($@) { Log GetLogLevel($name,4), "CUL_HM get $name " . join(" ", @a[1..$#a]); - CUL_HM_ProcessCmdStack($devHash) if ($rxType & 0x83);#burst/all/pre + CUL_HM_ProcessCmdStack($devHash) if ($rxType & 0x03);#burst/all return ""; } @@ -2048,7 +2054,6 @@ sub CUL_HM_Set($@) { my $devName = $hash->{device}?$hash->{device}:$name; my $st = AttrVal($devName, "subType", ""); my $md = AttrVal($devName, "model" , ""); - my $rxType = CUL_HM_getRxType($hash); my $flag = CUL_HM_getFlag($hash); #set burst flag my $cmd = $a[1]; my $dst = $hash->{DEF}; @@ -3040,9 +3045,9 @@ sub CUL_HM_Set($@) { readingsSingleUpdate($hash,"state",$state,1) if($state); - $rxType = CUL_HM_getRxType($devHash); + my $rxType = CUL_HM_getRxType($devHash); Log GetLogLevel($name,2), "CUL_HM set $name $act"; - CUL_HM_ProcessCmdStack($devHash) if($rxType & 0x83);#all/burst/pre + CUL_HM_ProcessCmdStack($devHash) if($rxType & 0x03);#all/burst return ("",1);# no not generate trigger outof command } @@ -3655,7 +3660,7 @@ sub CUL_HM_getRxType($) { #in:hash(chn or dev) out:binary coded Rx type $rxtEntity |= ($rxtOfModel =~ m/c/)?0x04:0;#config $rxtEntity |= ($rxtOfModel =~ m/w/)?0x08:0;#wakeup $rxtEntity |= ($rxtOfModel =~ m/l/)?0x10:0;#lazyConfig - $rxtEntity |= ($rxtOfModel =~ m/p/)?0x80:0;#pre-burst-wakeup (works for rt - others?) + $rxtEntity |= ($rxtOfModel =~ m/f/)?0x80:0;#burstOptional } $rxtEntity = 1 if (!$rxtEntity);#always $hash->{helper}{rxType} = $rxtEntity; diff --git a/fhem/FHEM/98_HMinfo.pm b/fhem/FHEM/98_HMinfo.pm index 14042aca5..c33b1b2d2 100644 --- a/fhem/FHEM/98_HMinfo.pm +++ b/fhem/FHEM/98_HMinfo.pm @@ -289,6 +289,9 @@ sub HMinfo_SetFn($@) {######################################################### $ret .= "\n autoRegRead pending:". join(",",@{$modules{CUL_HM}{helper}{autoRdCfgLst}}) if ($modules{CUL_HM}{helper}{autoRdCfgLst}); + $ret .= "\n status request pending:". + join(",",@{$modules{CUL_HM}{helper}{reqStatus}}) + if ($modules{CUL_HM}{helper}{reqStatus}); @IOlist = HMinfo_noDup(@IOlist); foreach(@IOlist){ $_ .= ":".$defs{$_}{STATE}. @@ -420,7 +423,8 @@ sub HMinfo_SetFn($@) {######################################################### $mode =~ s/w/wakeup/; $mode =~ s/b/burst/; $mode =~ s/l/lazyConf/; - $mode =~ s/:/,/; + $mode =~ s/\bf\b/burstCond/; + $mode =~ s/:/,/g; $mode = "normal" if (!$mode); my $list = $th{$_}{lst}; $list =~ s/.://g; @@ -430,7 +434,7 @@ sub HMinfo_SetFn($@) {######################################################### my ($n,$s,$e) = split(":",$_); $chan .= $s.(($s eq $e)?"":("-".$e))." ".$n.", "; } - push @model,sprintf("%-16s %-24s %4s %-15s %-5s %-5s %s" + push @model,sprintf("%-16s %-24s %4s %-24s %-5s %-5s %s" ,$th{$_}{st} ,$th{$_}{name} ,$_ @@ -441,7 +445,7 @@ sub HMinfo_SetFn($@) {######################################################### ); } $ret = $cmd.($filter?" filtered":"").":$filter\n " - .sprintf("%-16s %-24s %4s %-15s %-5s %-5s %s\n " + .sprintf("%-16s %-24s %4s %-24s %-5s %-5s %s\n " ,"subType" ,"name" ,"ID" diff --git a/fhem/FHEM/HMConfig.pm b/fhem/FHEM/HMConfig.pm index 9b52041dd..ccbc8dd43 100644 --- a/fhem/FHEM/HMConfig.pm +++ b/fhem/FHEM/HMConfig.pm @@ -64,8 +64,8 @@ my %culHmModel=( "0009" => {name=>"HM-LC-SW2-FM" ,st=>'switch' ,cyc=>'' ,rxt=>'' ,lst=>'1,3' ,chn=>"Sw:1:2",}, "000A" => {name=>"HM-LC-SW2-SM" ,st=>'switch' ,cyc=>'' ,rxt=>'' ,lst=>'1,3' ,chn=>"Sw:1:2",}, "000B" => {name=>"HM-WS550" ,st=>'THSensor' ,cyc=>'' ,rxt=>'' ,lst=>'p' ,chn=>"",}, - "000D" => {name=>"ASH550" ,st=>'THSensor' ,cyc=>'00:10' ,rxt=>'c:w' ,lst=>'p' ,chn=>"",}, - "000E" => {name=>"ASH550I" ,st=>'THSensor' ,cyc=>'00:10' ,rxt=>'c:w' ,lst=>'p' ,chn=>"",}, + "000D" => {name=>"ASH550" ,st=>'THSensor' ,cyc=>'00:10' ,rxt=>'c:w:f' ,lst=>'p' ,chn=>"",}, + "000E" => {name=>"ASH550I" ,st=>'THSensor' ,cyc=>'00:10' ,rxt=>'c:w:f' ,lst=>'p' ,chn=>"",}, "000F" => {name=>"S550IA" ,st=>'THSensor' ,cyc=>'00:10' ,rxt=>'c:w' ,lst=>'p' ,chn=>"",}, "0011" => {name=>"HM-LC-SW1-PL" ,st=>'switch' ,cyc=>'' ,rxt=>'' ,lst=>'3' ,chn=>"",}, "0012" => {name=>"HM-LC-DIM1L-CV" ,st=>'dimmer' ,cyc=>'' ,rxt=>'' ,lst=>'1,3' ,chn=>"",}, @@ -107,10 +107,10 @@ my %culHmModel=( "0039" => {name=>"HM-CC-TC" ,st=>'thermostat' ,cyc=>'00:10' ,rxt=>'c:w' ,lst=>'p:2p,5:2.3p,6:2',chn=>"Weather:1:1,Climate:2:2,WindowRec:3:3",}, "003A" => {name=>"HM-CC-VD" ,st=>'thermostat' ,cyc=>'28:00' ,rxt=>'c:w' ,lst=>'p,5' ,chn=>"",}, "003B" => {name=>"HM-RC-4-B" ,st=>'remote' ,cyc=>'' ,rxt=>'c' ,lst=>'1,4' ,chn=>"Btn:1:4",}, - "003C" => {name=>"HM-WDS20-TH-O" ,st=>'THSensor' ,cyc=>'00:10' ,rxt=>'c:w' ,lst=>'p' ,chn=>"",}, - "003D" => {name=>"HM-WDS10-TH-O" ,st=>'THSensor' ,cyc=>'00:10' ,rxt=>'c:w' ,lst=>'p' ,chn=>"",}, + "003C" => {name=>"HM-WDS20-TH-O" ,st=>'THSensor' ,cyc=>'00:10' ,rxt=>'c:w:f' ,lst=>'p' ,chn=>"",}, + "003D" => {name=>"HM-WDS10-TH-O" ,st=>'THSensor' ,cyc=>'00:10' ,rxt=>'c:w:f' ,lst=>'p' ,chn=>"",}, "003E" => {name=>"HM-WDS30-T-O" ,st=>'THSensor' ,cyc=>'00:10' ,rxt=>'c:w' ,lst=>'p' ,chn=>"",}, - "003F" => {name=>"HM-WDS40-TH-I" ,st=>'THSensor' ,cyc=>'00:10' ,rxt=>'c:w' ,lst=>'p' ,chn=>"",}, + "003F" => {name=>"HM-WDS40-TH-I" ,st=>'THSensor' ,cyc=>'00:10' ,rxt=>'c:w:f' ,lst=>'p' ,chn=>"",}, "0040" => {name=>"HM-WDS100-C6-O" ,st=>'THSensor' ,cyc=>'00:10' ,rxt=>'c:w' ,lst=>'p,1' ,chn=>"",}, "0041" => {name=>"HM-WDC7000" ,st=>'THSensor' ,cyc=>'' ,rxt=>'' ,lst=>'1,4' ,chn=>"",}, "0042" => {name=>"HM-SEC-SD" ,st=>'smokeDetector' ,cyc=>'99:00' ,rxt=>'b' ,lst=>'p' ,chn=>"",}, @@ -119,7 +119,7 @@ my %culHmModel=( "0045" => {name=>"HM-SEC-WDS" ,st=>'threeStateSensor' ,cyc=>'28:00' ,rxt=>'c:w' ,lst=>'1,4' ,chn=>"",}, "0046" => {name=>"HM-SWI-3-FM" ,st=>'swi' ,cyc=>'' ,rxt=>'c' ,lst=>'4' ,chn=>"Sw:1:3",}, "0047" => {name=>"KFM-Sensor" ,st=>'KFM100' ,cyc=>'' ,rxt=>'' ,lst=>'1,3' ,chn=>"",}, - "0048" => {name=>"IS-WDS-TH-OD-S-R3" ,st=>'THSensor' ,cyc=>'00:10' ,rxt=>'c:w' ,lst=>'p' ,chn=>"",}, + "0048" => {name=>"IS-WDS-TH-OD-S-R3" ,st=>'THSensor' ,cyc=>'00:10' ,rxt=>'c:w:f' ,lst=>'p' ,chn=>"",}, "0049" => {name=>"KFM-Display" ,st=>'KFM100' ,cyc=>'' ,rxt=>'' ,lst=>'1,3' ,chn=>"",}, "004A" => {name=>"HM-SEC-MDIR" ,st=>'motionDetector' ,cyc=>'00:10' ,rxt=>'c:w:l' ,lst=>'1,4' ,chn=>"",}, "004B" => {name=>"HM-Sec-Cen" ,st=>'AlarmControl' ,cyc=>'' ,rxt=>'' ,lst=>'1,3' ,chn=>"",}, @@ -188,9 +188,9 @@ my %culHmModel=( "008F" => {name=>"Schueco_263-145" ,st=>'pushButton' ,cyc=>'' ,rxt=>'c' ,lst=>'1,4' ,chn=>"",}, # HM Push Button Interface "0090" => {name=>"Schueco_263-162" ,st=>'motionDetector' ,cyc=>'00:30' ,rxt=>'c:w:l' ,lst=>'1,3' ,chn=>"",}, # HM radio-controlled motion detector "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' ,lst=>'p' ,chn=>"",}, # + "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' ,lst=>'p:1p.2p.5p.6p,3:3p.6p,7:4' + "0095" => {name=>"HM-CC-RT-DN" ,st=>'thermostat' ,cyc=>'' ,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",}, # @@ -203,7 +203,7 @@ my %culHmModel=( "00A5" => {name=>"HM-RC-Sec4-2" ,st=>'remote' ,cyc=>'' ,rxt=>'c:l' ,lst=>'1,4' ,chn=>"Btn:1:2,BTN_T:3:1,BTN_A:4:1",},#only 1 and 2 canbe peered??? "00A6" => {name=>"HM-RC-Key4-2" ,st=>'remote' ,cyc=>'' ,rxt=>'c:l' ,lst=>'1,4' ,chn=>"Btn:1:2,BTN_T:3:1,BTN_A:4:1",},#only 1 and 2 canbe peered??? "00A7" => {name=>"HM-Sen-RD-O" ,st=>'sensRain' ,cyc=>'' ,rxt=>'' ,lst=>'1:1,4:1p' ,chn=>"Rain:1:1,Heating:2:2",},#stc:70 THSensor - "00A8" => {name=>"HM-WDS30-OT2-SM" ,st=>'THSensor' ,cyc=>'00:10' ,rxt=>'c:w' ,lst=>'p' ,chn=>"Th:1:4,Weather:5:5",}, + "00A8" => {name=>"HM-WDS30-OT2-SM" ,st=>'THSensor' ,cyc=>'00:10' ,rxt=>'c:w:f' ,lst=>'p' ,chn=>"Th:1:4,Weather:5:5",}, "00A9" => {name=>"HM-PB-6-WM55" ,st=>'remote' ,cyc=>'' ,rxt=>'c' ,lst=>'1,4' ,chn=>"Btn:1:6",}, "00AB" => {name=>"HM-LC-SW4-BA-PCB" ,st=>'switch' ,cyc=>'' ,rxt=>'b' ,lst=>'1,3' ,chn=>"Sw:1:4",}, "00AF" => {name=>"HM-OU-CM-PCB" ,st=>'outputUnit' ,cyc=>'' ,rxt=>'' ,lst=>'3' ,chn=>"",}, @@ -335,11 +335,11 @@ my %culHmRegDefShLg = (# register that are available for short AND long button p my %culHmRegDefine = ( #--- list 0, device and protocol level----------------- - burstRx =>{a=> 1.0,s=>1.0,l=>0,min=>0 ,max=>255 ,c=>'lit' ,f=>'' ,u=>'' ,d=>0,t=>'device reacts on Burst' ,lit=>{off=>0,on=>200}},# not sure what 'on' is. Also change Tx mode TODO!! + burstRx =>{a=> 1.0,s=>1.0,l=>0,min=>0 ,max=>255 ,c=>'lit' ,f=>'' ,u=>'' ,d=>0,t=>'device reacts on Burst' ,lit=>{off=>0,on=>1}}, intKeyVisib =>{a=> 2.7,s=>0.1,l=>0,min=>0 ,max=>1 ,c=>'lit' ,f=>'' ,u=>'' ,d=>0,t=>'visibility of internal channel',lit=>{invisib=>0,visib=>1}}, pairCentral =>{a=> 10.0,s=>3.0,l=>0,min=>0 ,max=>16777215,c=>'hex' ,f=>'' ,u=>'' ,d=>1,t=>'pairing to central'}, #remote mainly - backlOnTime =>{a=> 5.0,s=>0.6,l=>0,min=>0 ,max=>5 ,c=>'lit' ,f=>'' ,u=>'' ,d=>0,t=>"Backlight ontime[s]" ,lit=>{0=>0,5=>1,10=>2,15=>3,20=>4,25=>5}}, + backlOnTime =>{a=> 5.0,s=>0.6,l=>0,min=>0 ,max=>5 ,c=>'lit' ,f=>'' ,u=>'' ,d=>0,t=>"Backlight ontime[s]" ,lit=>{0=>0,5=>1,10=>2,15=>3,20=>4,25=>5}}, backlOnMode =>{a=> 5.6,s=>0.2,l=>0,min=>0 ,max=>2 ,c=>'lit' ,f=>'' ,u=>'' ,d=>0,t=>"Backlight mode" ,lit=>{off=>0,auto=>2}}, ledMode =>{a=> 5.6,s=>0.2,l=>0,min=>0 ,max=>1 ,c=>'lit' ,f=>'' ,u=>'' ,d=>0,t=>"LED mode" ,lit=>{off=>0,on=>1}}, language =>{a=> 7.0,s=>1.0,l=>0,min=>0 ,max=>1 ,c=>'lit' ,f=>'' ,u=>'' ,d=>1,t=>"Language" ,lit=>{English=>0,German=>1}},