2
0
mirror of https://github.com/fhem/fhem-mirror.git synced 2025-03-13 05:06:35 +00:00

woraround for 4dis bug with read-register, implement powreMeter

git-svn-id: https://svn.fhem.de/fhem/trunk@4288 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
martinp876 2013-11-25 09:40:18 +00:00
parent 7e4d641271
commit cae893bd58
2 changed files with 163 additions and 96 deletions

View File

@ -1148,6 +1148,37 @@ sub CUL_HM_Parse($$) {##############################
push @event,"state:$btnName $state$target";
}
}
elsif($st eq "powerMeter") {##########################
if (($mTp eq "02" && $p =~ m/^01/) || # handle Ack_Status
($mTp eq "10" && $p =~ m/^06/)) { # or Info_Status message here
my ($subType,$chn,$val,$err) = ($1,hex($2),hex($3)/2,hex($4))
if($p =~ m/^(..)(..)(..)(..)/);
$chn = sprintf("%02X",$chn&0x3f);
my $chId = $src.$chn;
$shash = $modules{CUL_HM}{defptr}{$chId}
if($modules{CUL_HM}{defptr}{$chId});
my $vs = ($val==100 ? "on":($val==0 ? "off":"$val %")); # user string...
push @event,"level:$val %";
push @event,"pct:$val"; # duplicate to level - necessary for "slider"
push @event,"deviceMsg:$vs$target" if($chn ne "00");
my $eventName = "switch";
my $action; #determine action
push @event, "timedOn:".(($err&0x40)?"running":"off");
}
elsif ($mTp eq "5E" ||$mTp eq "5F" ) { # POWER_EVENT_CYCLIC
$shash = $modules{CUL_HM}{defptr}{$src."02"}
if($modules{CUL_HM}{defptr}{$src."02"});
my ($eCnt,$P,$I,$U,$F) = unpack 'A6A6A4A4A2',$p;
push @event, "energy:" .(hex($eCnt)&0x7fffff)/10;# 0.0 ..838860.7 Wh
push @event, "power:" . hex($P )/100; # 0.0 ..167772.15 W
push @event, "current:" . hex($I )/1; # 0.0 ..65535.0 mA
push @event, "voltage:" . hex($U )/10; # 0.0 ..6553.5 mV
push @event, "frequency:". hex($F )/100+50; # 48.72..51.27 Hz
push @event, "boot:" .((hex($eCnt)&0x800000)?"on":"off");
}
}
elsif($st eq "repeater"){ ###################################################
if (($mTp eq "02" && $p =~ m/^01/) || # handle Ack_Status
($mTp eq "10" && $p =~ m/^06/)) { #or Info_Status message here
@ -1757,7 +1788,10 @@ sub CUL_HM_parseCommon(@){#####################################################
elsif($subType eq "02" ||$subType eq "03"){ #ParamResp==================
my $msgValid = 0;
if ($pendType eq "RegisterRead"){
if($shash->{helper}{prt}{rspWait}{mNo} == hex($mNo)){#next message
if($shash->{helper}{prt}{rspWait}{mNoSeq}){#ignore msgNumber
$msgValid = 1;
}
elsif($shash->{helper}{prt}{rspWait}{mNo} == hex($mNo)){#next message
$shash->{helper}{prt}{rspWait}{mNo}++;
$shash->{helper}{prt}{rspWait}{mNo} &= 0xff;
$msgValid = 1;
@ -3524,10 +3558,12 @@ sub CUL_HM_responseSetup($$) {#store all we need to handle the response
my ($peer, $list) = ($1,$2) if ($p =~ m/..04(........)(..)/);
$peer = ($peer ne "00000000")?CUL_HM_peerChName($peer,$dst,""):"";
#--- set messaging items
my $mNoSeq =(AttrVal($hash->{NAME},"model","") eq "HM-PB-4DIS-WM")?"1":"0";
CUL_HM_respWaitSu ($hash,"Pending:=RegisterRead"
,"cmd:=$cmd" ,"forChn:=$chn"
,"forList:=$list","forPeer:=$peer"
,"mNo:=".hex($mNo)
,"mNoSeq:=$mNoSeq"
,"reSent:=1");
#--- remove channel entries that will be replaced
my $chnhash = $modules{CUL_HM}{defptr}{"$dst$chn"};

View File

@ -207,8 +207,8 @@ my %culHmModel=(
"00A8" => {name=>"HM-WDS30-OT2-SM" ,st=>'THSensor' ,cyc=>'00:10' ,rxt=>'c:w:f' ,lst=>'p' ,chn=>"T1:1:1,T2:2:2,T1_T2:3:3,T2_T1:4:4,Event: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",},
"00AC" => {name=>"HM-ES-PMSw1-Pl" ,st=>'powerMeter' ,cyc=>'00:10' ,rxt=>'' ,lst=>'1,1:2.3.4.5.6,3:1'
,chn=>"Sw:1:4,Pwr:2:2,CondP:3:3,CondI:4:4,CondU:5:5,CondF:6:6",},
"00AC" => {name=>"HM-ES-PMSw1-Pl" ,st=>'powerMeter' ,cyc=>'00:10' ,rxt=>'' ,lst=>'1:2.3.4.5.6,3:1p,4:3p.4p.5p.6p'
,chn=>"Sw:1:1,Pwr:2:2,SenPwr:3:3,SenI:4:4,SenU:5:5,SenF:6:6"},
"00AD" => {name=>"HM-TC-IT-WM-W-EU" ,st=>'thermostat' ,cyc=>'00:10' ,rxt=>'c:w' ,lst=>'p:1p.2p.6p.7p,3:3p.6p,1,7:2,8:2,9:2'
,chn=>"Weather:1:1,Climate:2:2,WindowRec:3:3,remote:6:6,SwitchTr:7:7",},
"00AF" => {name=>"HM-OU-CM-PCB" ,st=>'outputUnit' ,cyc=>'' ,rxt=>'' ,lst=>'3' ,chn=>"",},
@ -477,21 +477,28 @@ my %culHmRegDefine = (
meaLength =>{a=>108.0,s=>2 ,l=>1,min=>110,max=>310 ,c=>'' ,f=>'' ,u=>'cm' ,d=>1,t=>""},
useCustom =>{a=>110.0,s=>1 ,l=>1,min=>110,max=>310 ,c=>'lit' ,f=>'' ,u=>'' ,d=>1,t=>"use custom" ,lit=>{off=>0,on=>1}},
averaging =>{a=>122.0,s=>1 ,l=>1,min=>1 ,max=>16 ,c=>'' ,f=>'' ,u=>'s' ,d=>1,t=>"averaging period"},
txMinDly =>{a=>123.0,s=>0.7,l=>1,min=>0 ,max=>16 ,c=>'' ,f=>'' ,u=>'s' ,d=>1,t=>"min transmit delay"},
txThrPwr =>{a=>124.0,s=>3 ,l=>1,min=>0.01 ,max=>3680 ,c=>'' ,f=>100 ,u=>'W' ,d=>1,t=>"threshold power"},
txThrCur =>{a=>127.0,s=>2 ,l=>1,min=>1 ,max=>16000 ,c=>'' ,f=>'' ,u=>'mA' ,d=>1,t=>"threshold current"},
txThrVlt =>{a=>129.0,s=>2 ,l=>1,min=>0.1 ,max=>230 ,c=>'' ,f=>10 ,u=>'V' ,d=>1,t=>"threshold voltage"},
txThrFrq =>{a=>131.0,s=>1 ,l=>1,min=>0.01 ,max=>2.55 ,c=>'' ,f=>100 ,u=>'Hz' ,d=>1,t=>"threshold frequency"},
averaging =>{a=>122.0,s=>1 ,l=>1,min=>1 ,max=>16 ,c=>'' ,f=>'' ,u=>'s' ,d=>1,t=>"averaging period"},
txMinDly =>{a=>123.0,s=>0.7,l=>1,min=>0 ,max=>16 ,c=>'' ,f=>'' ,u=>'s' ,d=>1,t=>"min transmit delay"},
txThrPwr =>{a=>124.0,s=>3 ,l=>1,min=>0.01 ,max=>3680 ,c=>'' ,f=>100 ,u=>'W' ,d=>1,t=>"threshold power"},
txThrCur =>{a=>127.0,s=>2 ,l=>1,min=>1 ,max=>16000 ,c=>'' ,f=>'' ,u=>'mA' ,d=>1,t=>"threshold current"},
txThrVlt =>{a=>129.0,s=>2 ,l=>1,min=>0.1 ,max=>230 ,c=>'' ,f=>10 ,u=>'V' ,d=>1,t=>"threshold voltage"},
txThrFrq =>{a=>131.0,s=>1 ,l=>1,min=>0.01 ,max=>2.55 ,c=>'' ,f=>100 ,u=>'Hz' ,d=>1,t=>"threshold frequency"},
cndTxFalling =>{a=>132.0,s=>0.1,l=>1,min=>0 ,max=>1 ,c=>'lit' ,f=>'' ,u=>'' ,d=>1,t=>"trigger if falling" ,lit=>{off=>0,on=>1}},
cndTxRising =>{a=>132.1,s=>0.1,l=>1,min=>0 ,max=>1 ,c=>'lit' ,f=>'' ,u=>'' ,d=>1,t=>"trigger if rising" ,lit=>{off=>0,on=>1}},
cndTxCycBelow =>{a=>132.2,s=>0.1,l=>1,min=>0 ,max=>1 ,c=>'lit' ,f=>'' ,u=>'' ,d=>1,t=>"trigger if cond is below threshold",lit=>{off=>0,on=>1}},
cndTxCycAbove =>{a=>132.3,s=>0.1,l=>1,min=>0 ,max=>1 ,c=>'lit' ,f=>'' ,u=>'' ,d=>1,t=>"trigger if cond is above threshold",lit=>{off=>0,on=>1}},
cndTxCycAbove =>{a=>133 ,s=>1 ,l=>1,min=>0 ,max=>255 ,c=>'' ,f=>'' ,u=>'' ,d=>1,t=>"trigger if decission is above"},
cndTxCycBelow =>{a=>134 ,s=>1 ,l=>1,min=>0 ,max=>255 ,c=>'' ,f=>'' ,u=>'' ,d=>1,t=>"trigger if decission is below"},
txThrLoPwr =>{a=>135.0,s=>4 ,l=>1,min=>0 ,max=>3680 ,c=>'' ,f=>'100' ,u=>'W' ,d=>1,t=>"threshold low power"},
txThrHiPwr =>{a=>139.0,s=>4 ,l=>1,min=>0 ,max=>3680 ,c=>'' ,f=>'100' ,u=>'W' ,d=>1,t=>"threshold high power"},
txThrLoCur =>{a=>135.0,s=>4 ,l=>1,min=>0 ,max=>16000 ,c=>'' ,f=>'100' ,u=>'mA' ,d=>1,t=>"threshold low current"},
txThrHiCur =>{a=>139.0,s=>4 ,l=>1,min=>0 ,max=>16000 ,c=>'' ,f=>'100' ,u=>'mA' ,d=>1,t=>"threshold high current"},
txThrLoVlt =>{a=>135.0,s=>4 ,l=>1,min=>115 ,max=>255 ,c=>'' ,f=>'100' ,u=>'V' ,d=>1,t=>"threshold low voltage"},
txThrHiVlt =>{a=>139.0,s=>4 ,l=>1,min=>115 ,max=>255 ,c=>'' ,f=>'100' ,u=>'V' ,d=>1,t=>"threshold high voltage"},
txThrLoFrq =>{a=>135.0,s=>4 ,l=>1,min=>48.72,max=>51.27 ,c=>'' ,f=>'100' ,u=>'Hz' ,d=>1,t=>"threshold low frequency"},
txThrHiFrq =>{a=>139.0,s=>4 ,l=>1,min=>48.72,max=>51.27 ,c=>'' ,f=>'100' ,u=>'Hz' ,d=>1,t=>"threshold high frequency"},
txThrLoPwr =>{a=>135.0,s=>4 ,l=>1,min=>0 ,max=>3680 ,c=>'' ,f=>'100' ,u=>'W' ,d=>1,t=>"threshold low power"},
txThrHiPwr =>{a=>139.0,s=>4 ,l=>1,min=>0 ,max=>3680 ,c=>'' ,f=>'100' ,u=>'W' ,d=>1,t=>"threshold high power"},
txThrLoCur =>{a=>135.0,s=>4 ,l=>1,min=>0 ,max=>16000 ,c=>'' ,f=>'100' ,u=>'mA' ,d=>1,t=>"threshold low current"},
txThrHiCur =>{a=>139.0,s=>4 ,l=>1,min=>0 ,max=>16000 ,c=>'' ,f=>'100' ,u=>'mA' ,d=>1,t=>"threshold high current"},
txThrLoVlt =>{a=>135.0,s=>4 ,l=>1,min=>115 ,max=>255 ,c=>'' ,f=>'100' ,u=>'V' ,d=>1,t=>"threshold low voltage"},
txThrHiVlt =>{a=>139.0,s=>4 ,l=>1,min=>115 ,max=>255 ,c=>'' ,f=>'100' ,u=>'V' ,d=>1,t=>"threshold high voltage"},
txThrLoFrq =>{a=>135.0,s=>4 ,l=>1,min=>48.72,max=>51.27 ,c=>'' ,f=>'100' ,u=>'Hz' ,d=>1,t=>"threshold low frequency"},
txThrHiFrq =>{a=>139.0,s=>4 ,l=>1,min=>48.72,max=>51.27 ,c=>'' ,f=>'100' ,u=>'Hz' ,d=>1,t=>"threshold high frequency"},
evtFltrPeriod =>{a=> 1.0,s=>0.4,l=>1,min=>0.5,max=>7.5 ,c=>'' ,f=>2 ,u=>'s' ,d=>1,t=>"event filter period"},
evtFltrNum =>{a=> 1.4,s=>0.4,l=>1,min=>1 ,max=>15 ,c=>'' ,f=>'' ,u=>'' ,d=>1,t=>"sensitivity - read each n-th puls"},
@ -704,7 +711,7 @@ my %culHmRegType = (
},
sensRain =>{ transmDevTryMax =>1,localResDis =>1},
tipTronic =>{ cyclicInfoMsg =>1,cyclicInfoMsgDis=>1,localResDis =>1,RS485IdleTime =>1},
powerMeter =>{ intKeyVisib =>1},
powerMeter =>{ intKeyVisib =>1,localResDis =>1},
);
#clones - - - - - - - - - - - - - - -
@ -817,7 +824,6 @@ my %culHmRegModel = (
"HM-TC-IT-WM-W-EU" =>{ burstRx =>1,cyclicInfoMsgDis=>1,localResDis =>1,cyclicInfoMsg =>1
,btnLock =>1,globalBtnLock =>1,modusBtnLock =>1,lowBatLimitRT =>1
},
"HM-ES-PMSw1-Pl" =>{ localResDis =>1},
);
#clones - - - - - - - - - - - - - - -
@ -939,37 +945,36 @@ my %culHmRegChan = (# if channelspecific then enter them here
,noMinMax4Manu =>1,daylightSaveTime=>1,sendWeatherData =>1
,modePrioParty =>1,modePrioManu =>1,weekPrgSel =>1
},
"HM-ES-PMSw1-Pl01" =>{ OnTime =>1,OffTime =>1,OnDly =>1,OffDly =>1
,SwJtOn =>1,SwJtOff =>1,SwJtDlyOn =>1,SwJtDlyOff =>1
,CtValLo =>1,CtValHi =>1
,CtOn =>1,CtDlyOn =>1,CtOff =>1,CtDlyOff =>1
,ActionType =>1,OnTimeMode =>1,OffTimeMode =>1
,lgMultiExec =>1
},
"HM-ES-PMSw1-Pl02" =>{ averaging =>1
,txMinDly =>1,txThrPwr =>1,txThrCur =>1,txThrVlt =>1,txThrFrq =>1
},
"HM-ES-PMSw1-Pl04" =>{ txThrLoPwr =>1,txThrHiPwr =>1
,CtDlyOn =>1,CtDlyOff =>1,CtOn =>1,CtOff =>1
,CtValLo =>1,CtValHi =>1
,OnDly =>1,OnTime =>1,OffDly =>1,OffTime =>1
,SwJtOn =>1,SwJtOff =>1,SwJtDlyOn =>1,SwJtDlyOff =>1
,ActionType =>1
},
"HM-ES-PMSw1-Pl04" =>{ txThrLoCur =>1,txThrHiCur =>1
,CtDlyOn =>1,CtDlyOff =>1,CtOn =>1,CtOff =>1
,CtValLo =>1,CtValHi =>1
,OnDly =>1,OnTime =>1,OffDly =>1,OffTime =>1
,SwJtOn =>1,SwJtOff =>1,SwJtDlyOn =>1,SwJtDlyOff =>1
,ActionType =>1
},
"HM-ES-PMSw1-Pl05" =>{ txThrLoVlt =>1,txThrHiVlt =>1
,CtDlyOn =>1,CtDlyOff =>1,CtOn =>1,CtOff =>1
,CtValLo =>1,CtValHi =>1
,OnDly =>1,OnTime =>1,OffDly =>1,OffTime =>1
,SwJtOn =>1,SwJtOff =>1,SwJtDlyOn =>1,SwJtDlyOff =>1
,ActionType =>1
},
"HM-ES-PMSw1-Pl06" =>{ txThrLoFrq =>1,txThrHiFrq =>1
,CtDlyOn =>1,CtDlyOff =>1,CtOn =>1,CtOff =>1
,CtValLo =>1,CtValHi =>1
,OnDly =>1,OnTime =>1,OffDly =>1,OffTime =>1
,SwJtOn =>1,SwJtOff =>1,SwJtDlyOn =>1,SwJtDlyOff =>1
,ActionType =>1
},
},
"HM-ES-PMSw1-Pl03" =>{ txThrLoPwr =>1,txThrHiPwr =>1,peerNeedsBurst =>1,expectAES =>1
,ledOnTime =>1,transmitTryMax =>1,
,cndTxFalling =>1,cndTxRising =>1,
,cndTxCycBelow =>1,cndTxCycAbove =>1,cndTxDecAbove =>1,cndTxDecBelow =>1,
},
"HM-ES-PMSw1-Pl04" =>{ txThrLoCur =>1,txThrHiCur =>1,peerNeedsBurst =>1,expectAES =>1
,ledOnTime =>1,transmitTryMax =>1,
,cndTxFalling =>1,cndTxRising =>1,
,cndTxCycBelow =>1,cndTxCycAbove =>1,cndTxDecAbove =>1,cndTxDecBelow =>1,
},
"HM-ES-PMSw1-Pl05" =>{ txThrLoVlt =>1,txThrHiVlt =>1,peerNeedsBurst =>1,expectAES =>1
,ledOnTime =>1,transmitTryMax =>1,
,cndTxFalling =>1,cndTxRising =>1,
,cndTxCycBelow =>1,cndTxCycAbove =>1,cndTxDecAbove =>1,cndTxDecBelow =>1,
},
"HM-ES-PMSw1-Pl06" =>{ txThrLoFrq =>1,txThrHiFrq =>1,peerNeedsBurst =>1,expectAES =>1
,ledOnTime =>1,transmitTryMax =>1,
,cndTxFalling =>1,cndTxRising =>1,
,cndTxCycBelow =>1,cndTxCycAbove =>1,cndTxDecAbove =>1,cndTxDecBelow =>1,
},
);
#clones - - - - - - - - - - - - - - -
@ -1144,54 +1149,63 @@ $culHmModelSets{"HM-OU-CM-PCB"} = $culHmModelSets{"HM-OU-CFM-PL"};
#%{$culHmModelSets{"HM-RC-19-SW"}} = %{$culHmModelSets{"HM-RC-19"}}; copy
my %culHmChanSets = (
"HM-CC-TC00" =>{ "desired-temp" =>"[on|off|6.0..30.0]"
,statusRequest =>""
,sysTime =>""
,getSerial => ""},
"HM-CC-TC02" =>{ peerChan =>" 0 <actChn> ... single [set|unset] [actor|remote|both]"
,"desired-temp" =>"[on|off|6.0..30.0]"
,tempListSat =>"[prep|exec] HH:MM temp ..."
,tempListSun =>"[prep|exec] HH:MM temp ..."
,tempListMon =>"[prep|exec] HH:MM temp ..."
,tempListTue =>"[prep|exec] HH:MM temp ..."
,tempListThu =>"[prep|exec] HH:MM temp ..."
,tempListWed =>"[prep|exec] HH:MM temp ..."
,tempListFri =>"[prep|exec] HH:MM temp ..."
,partyMode =>"[prep|exec] HH:MM durationDays ..."
,displayMode =>"[temp-only|temp-hum]"
,displayTemp =>"[actual|setpoint]"
,displayTempUnit=>"[celsius|fahrenheit]"
,controlMode =>"[auto|manual|central|party]"
,statusRequest =>""
,sysTime =>""},
"HM-SEC-WIN01" =>{ stop =>"",
level =>"<level> <relockDly> <speed>..."},
"HM-OU-CFM-PL01" =>{ led =>"<color>[,<color>...] [<repeat>]"},
"HM-OU-CFM-PL02" =>{ playTone =>"<MP3No>[,<MP3No>...] [<repeat>]"},
"WDF-solar01" =>{ peerChan =>" 0 <actChn> ... single [set|unset] [actor|remote|both]"},
"HM-Sen-RD-O01" =>{ peerChan =>" 0 <actChn> ... single [set|unset] [actor|remote|both]"},
"HM-Sen-RD-O02" =>{ "on-for-timer" =>"<sec>"
,"on-till" =>"<time>"
,on =>""
,off =>""
,toggle =>""},
"HM-CC-RT-DN00" =>{ sysTime =>""},
"HM-CC-RT-DN02" =>{ sysTime =>""},
"HM-CC-RT-DN04" =>{ controlMode =>"[auto|boost|day|night]"
,controlManu =>"[on|off|5.0..30.0]"
,controlParty =>"<temp> <startDate> <startTime> <enddate> <endTime>"
,tempListSat =>"[prep|exec] HH:MM temp ..."
,tempListSun =>"[prep|exec] HH:MM temp ..."
,tempListMon =>"[prep|exec] HH:MM temp ..."
,tempListTue =>"[prep|exec] HH:MM temp ..."
,tempListThu =>"[prep|exec] HH:MM temp ..."
,tempListWed =>"[prep|exec] HH:MM temp ..."
,tempListFri =>"[prep|exec] HH:MM temp ..."
,"desired-temp" =>"[on|off|5.0..30.0]"
,sysTime =>""
},
"HM-CC-RT-DN05" =>{ peerChan =>" 0 <actChn> ... [single] [set|unset] [actor|remote|both]"},
"HM-CC-TC00" =>{ "desired-temp" =>"[on|off|6.0..30.0]"
,statusRequest =>""
,sysTime =>""
,getSerial => ""},
"HM-CC-TC02" =>{ peerChan =>" 0 <actChn> ... single [set|unset] [actor|remote|both]"
,"desired-temp" =>"[on|off|6.0..30.0]"
,tempListSat =>"[prep|exec] HH:MM temp ..."
,tempListSun =>"[prep|exec] HH:MM temp ..."
,tempListMon =>"[prep|exec] HH:MM temp ..."
,tempListTue =>"[prep|exec] HH:MM temp ..."
,tempListThu =>"[prep|exec] HH:MM temp ..."
,tempListWed =>"[prep|exec] HH:MM temp ..."
,tempListFri =>"[prep|exec] HH:MM temp ..."
,partyMode =>"[prep|exec] HH:MM durationDays ..."
,displayMode =>"[temp-only|temp-hum]"
,displayTemp =>"[actual|setpoint]"
,displayTempUnit=>"[celsius|fahrenheit]"
,controlMode =>"[auto|manual|central|party]"
,statusRequest =>""
,sysTime =>""},
"HM-SEC-WIN01" =>{ stop =>"",
level =>"<level> <relockDly> <speed>..."},
"HM-OU-CFM-PL01" =>{ led =>"<color>[,<color>...] [<repeat>]"},
"HM-OU-CFM-PL02" =>{ playTone =>"<MP3No>[,<MP3No>...] [<repeat>]"},
"WDF-solar01" =>{ peerChan =>" 0 <actChn> ... single [set|unset] [actor|remote|both]"},
"HM-Sen-RD-O01" =>{ peerChan =>" 0 <actChn> ... single [set|unset] [actor|remote|both]"},
"HM-Sen-RD-O02" =>{ "on-for-timer" =>"<sec>"
,"on-till" =>"<time>"
,on =>""
,off =>""
,toggle =>""},
"HM-CC-RT-DN00" =>{ sysTime =>""},
"HM-CC-RT-DN02" =>{ sysTime =>""},
"HM-CC-RT-DN04" =>{ controlMode =>"[auto|boost|day|night]"
,controlManu =>"[on|off|5.0..30.0]"
,controlParty =>"<temp> <startDate> <startTime> <enddate> <endTime>"
,tempListSat =>"[prep|exec] HH:MM temp ..."
,tempListSun =>"[prep|exec] HH:MM temp ..."
,tempListMon =>"[prep|exec] HH:MM temp ..."
,tempListTue =>"[prep|exec] HH:MM temp ..."
,tempListThu =>"[prep|exec] HH:MM temp ..."
,tempListWed =>"[prep|exec] HH:MM temp ..."
,tempListFri =>"[prep|exec] HH:MM temp ..."
,"desired-temp" =>"[on|off|5.0..30.0]"
,sysTime =>""
},
"HM-CC-RT-DN05" =>{ peerChan =>" 0 <actChn> ... [single] [set|unset] [actor|remote|both]"},
"HM-ES-PMSw1-Pl01" =>{ "on-for-timer" =>"<sec>"
,"on-till" =>"<time>"
,on =>""
,off =>""
,toggle =>""
,press =>"[long|short] [on|off] ..."
,inhibit =>"[on|off]"
,statusRequest =>""},
"HM-ES-PMSw1-Pl03" =>{ peerChan =>" 0 <actChn> ... [single] [set|unset] [actor|remote|both]"},
);
# clones- - - - - - - - - - - - - - - - -
#$culHmChanSets{"HM-OU-CF-PL02"} = $culHmChanSets{"HM-OU-CF-PL01"};
@ -1200,6 +1214,9 @@ $culHmChanSets{"HM-CC-RT-DN-BoM00"}= $culHmSubTypeSets{"HM-CC-RT-DN00"};
$culHmChanSets{"HM-CC-RT-DN-BoM02"}= $culHmSubTypeSets{"HM-CC-RT-DN02"};
$culHmChanSets{"HM-CC-RT-DN-BoM04"}= $culHmSubTypeSets{"HM-CC-RT-DN04"};
$culHmChanSets{"HM-CC-RT-DN-BoM05"}= $culHmSubTypeSets{"HM-CC-RT-DN05"};
$culHmChanSets{"HM-ES-PMSw1-Pl04"} = $culHmSubTypeSets{"HM-ES-PMSw1-Pl03"};
$culHmChanSets{"HM-ES-PMSw1-Pl05"} = $culHmSubTypeSets{"HM-ES-PMSw1-Pl03"};
$culHmChanSets{"HM-ES-PMSw1-Pl06"} = $culHmSubTypeSets{"HM-ES-PMSw1-Pl03"};
# RC send BCAST to specific address. Is the meaning understood?
my @culHmCmdFlags = ("WAKEUP", "WAKEMEUP", "CFG", "Bit3",
@ -1380,6 +1397,20 @@ my %culHmBits = (
CMD => "00,2",
desTemp => '02,2,$val=((hex($val)>>2) /2)',
mode => '02,2,$val=(hex($val) & 0x3)',} },
"5E" => { txt => "powerEvntCyc" , params => {
energy => '00,3,$val=((hex($val)) /10)',
power => '00,3,$val=((hex($val)) /100)',
current => '00,3,$val=((hex($val)) /1)',
voltage => '00,3,$val=((hex($val)) /10)',
frequency=> '00,3,$val=((hex($val)) /100+50)',
} },
"5F" => { txt => "powerEvnt" , params => {
energy => '00,3,$val=((hex($val)) /10)',
power => '00,3,$val=((hex($val)) /100)',
current => '00,3,$val=((hex($val)) /1)',
voltage => '00,3,$val=((hex($val)) /10)',
frequency=> '00,3,$val=((hex($val)) /100+50)',
} },
"70" => { txt => "WeatherEvent", params => {
TEMP => '00,4,$val=((hex($val)&0x3FFF)/10)*((hex($val)&0x4000)?-1:1)',
HUM => '04,2,$val=(hex($val))', } },