mirror of
https://github.com/fhem/fhem-mirror.git
synced 2025-02-01 01:09:47 +00:00
peer-selective winOpenTemp for RT
git-svn-id: https://svn.fhem.de/fhem/trunk@4255 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
parent
c214e97672
commit
06c5656764
@ -1727,14 +1727,17 @@ sub CUL_HM_parseCommon(@){#####################################################
|
|||||||
if ($reqPeer){
|
if ($reqPeer){
|
||||||
my $flag = CUL_HM_getFlag($shash);
|
my $flag = CUL_HM_getFlag($shash);
|
||||||
my $id = CUL_HM_IOid($shash);
|
my $id = CUL_HM_IOid($shash);
|
||||||
my $listNo = "0".$chnhash->{helper}{getCfgListNo};
|
|
||||||
my @peerID = split(",",($attr{$chnName}{peerIDs}?
|
my @peerID = split(",",($attr{$chnName}{peerIDs}?
|
||||||
$attr{$chnName}{peerIDs}:""));
|
$attr{$chnName}{peerIDs}:""));
|
||||||
foreach my $peer (grep (!/00000000/,@peerID)){
|
foreach my $l (split ",",$chnhash->{helper}{getCfgListNo}){
|
||||||
$peer .="01" if (length($peer) == 6); # add the default
|
next if (!$l);
|
||||||
if ($peer &&($peer eq $reqPeer || $reqPeer eq "all")){
|
my $listNo = "0".$l;
|
||||||
CUL_HM_PushCmdStack($shash,sprintf("++%s01%s%s%s04%s%s",
|
foreach my $peer (grep (!/00000000/,@peerID)){
|
||||||
$flag,$id,$src,$chn,$peer,$listNo));# List3 or 4
|
$peer .="01" if (length($peer) == 6); # add the default
|
||||||
|
if ($peer &&($peer eq $reqPeer || $reqPeer eq "all")){
|
||||||
|
CUL_HM_PushCmdStack($shash,sprintf("++%s01%s%s%s04%s%s",
|
||||||
|
$flag,$id,$src,$chn,$peer,$listNo));# List3 or 4
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -2516,10 +2519,11 @@ sub CUL_HM_Set($@) {
|
|||||||
8-int($reg->{s}+0.99)*2,);
|
8-int($reg->{s}+0.99)*2,);
|
||||||
|
|
||||||
my ($lChn,$peerId,$peerChn) = ($chn,"000000","00");
|
my ($lChn,$peerId,$peerChn) = ($chn,"000000","00");
|
||||||
if (($list == 3) ||($list == 4)){ # peer is necessary for list 3/4
|
if (($list == 3) ||($list == 4) # peer is necessary for list 3/4
|
||||||
|
||($list == 7 && $peerChnIn)){# and possible for List 7
|
||||||
return "Peer not specified" if ($peerChnIn eq "");
|
return "Peer not specified" if ($peerChnIn eq "");
|
||||||
$peerId = CUL_HM_peerChId($peerChnIn,$dst,$id);
|
$peerId = CUL_HM_peerChId($peerChnIn,$dst,$id);
|
||||||
$peerChn = ((length($peerId) == 8)?substr($peerId,6,2):"01");
|
$peerChn = ((length($peerId) == 8)?substr($peerId,6,2):"01");
|
||||||
$peerId = substr($peerId,0,6);
|
$peerId = substr($peerId,0,6);
|
||||||
return "Peer not valid" if (!$peerId);
|
return "Peer not valid" if (!$peerId);
|
||||||
}
|
}
|
||||||
@ -2535,7 +2539,7 @@ sub CUL_HM_Set($@) {
|
|||||||
my $rName = CUL_HM_id2Name($dst.$lChn);
|
my $rName = CUL_HM_id2Name($dst.$lChn);
|
||||||
$rName =~ s/_chn:.*//;
|
$rName =~ s/_chn:.*//;
|
||||||
my $curVal = CUL_HM_getRegFromStore($rName,$addr,$list,$peerId.$peerChn);
|
my $curVal = CUL_HM_getRegFromStore($rName,$addr,$list,$peerId.$peerChn);
|
||||||
return "cannot calculate value. Please issue set $name getConfig first - $curVal"
|
return "cannot calculate value. Please issue set $name getConfig first - $curVal"
|
||||||
if ($curVal !~ m/^(set_|)(\d+)$/);
|
if ($curVal !~ m/^(set_|)(\d+)$/);
|
||||||
$curVal = $2; # we expect one byte in int, strap 'set_' possibly
|
$curVal = $2; # we expect one byte in int, strap 'set_' possibly
|
||||||
$data = ($curVal & (~($mask<<$bit)))|($data<<$bit);
|
$data = ($curVal & (~($mask<<$bit)))|($data<<$bit);
|
||||||
@ -2547,7 +2551,7 @@ sub CUL_HM_Set($@) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
$lChn = "00" if($list == 7);#face to send
|
$lChn = "00" if($list == 7 && $peerChnIn eq "");#face to send
|
||||||
|
|
||||||
my $cHash = CUL_HM_id2Hash($dst.($lChn eq '00'?"":$lChn));
|
my $cHash = CUL_HM_id2Hash($dst.($lChn eq '00'?"":$lChn));
|
||||||
$cHash = $hash if (!$cHash);
|
$cHash = $hash if (!$cHash);
|
||||||
@ -3309,7 +3313,8 @@ sub CUL_HM_getConfig($){
|
|||||||
if($lstAr){
|
if($lstAr){
|
||||||
my @list = split(",",$lstAr); #get valid lists e.g."1, 5:2.3p ,6:2"
|
my @list = split(",",$lstAr); #get valid lists e.g."1, 5:2.3p ,6:2"
|
||||||
my $pReq = 0; # Peer request not issued, do only once for channel
|
my $pReq = 0; # Peer request not issued, do only once for channel
|
||||||
foreach my$listEntry (@list){# each list that is define for this channel
|
$cHash->{helper}{getCfgListNo}= "";
|
||||||
|
foreach my $listEntry (@list){# each list that is define for this channel
|
||||||
my ($peerReq,$chnValid)= (0,0);
|
my ($peerReq,$chnValid)= (0,0);
|
||||||
my ($listNo,$chnLst1) = split(":",$listEntry);
|
my ($listNo,$chnLst1) = split(":",$listEntry);
|
||||||
if (!$chnLst1){
|
if (!$chnLst1){
|
||||||
@ -3319,10 +3324,10 @@ sub CUL_HM_getConfig($){
|
|||||||
else{
|
else{
|
||||||
my @chnLst = split('\.',$chnLst1);
|
my @chnLst = split('\.',$chnLst1);
|
||||||
foreach my $lchn (@chnLst){
|
foreach my $lchn (@chnLst){
|
||||||
$peerReq = 1 if ($lchn =~ m/p/);
|
no warnings;#know that lchan may be followed by 'p' causing a warning
|
||||||
no warnings;#know that lchan may be followed by 'p' causing a warning
|
$chnValid = 1 if (int($lchn) == hex($chn));
|
||||||
$chnValid = 1 if (int($lchn) == hex($chn));
|
use warnings;
|
||||||
use warnings;
|
$peerReq = 1 if ($chnValid && $lchn =~ m/p/);
|
||||||
last if ($chnValid);
|
last if ($chnValid);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -3330,7 +3335,7 @@ sub CUL_HM_getConfig($){
|
|||||||
if ($peerReq){# need to get the peers first
|
if ($peerReq){# need to get the peers first
|
||||||
if($listNo ne 'p'){# not if 'only peers'!
|
if($listNo ne 'p'){# not if 'only peers'!
|
||||||
$cHash->{helper}{getCfgList} = "all";
|
$cHash->{helper}{getCfgList} = "all";
|
||||||
$cHash->{helper}{getCfgListNo} = $listNo;
|
$cHash->{helper}{getCfgListNo} .= ",".$listNo;
|
||||||
}
|
}
|
||||||
if (!$pReq){#get peers first, but only once per channel
|
if (!$pReq){#get peers first, but only once per channel
|
||||||
CUL_HM_PushCmdStack($cHash,sprintf("++%s01%s%s%s03"
|
CUL_HM_PushCmdStack($cHash,sprintf("++%s01%s%s%s03"
|
||||||
@ -3525,11 +3530,12 @@ sub CUL_HM_responseSetup($$) {#store all we need to handle the response
|
|||||||
my $chnhash = $modules{CUL_HM}{defptr}{"$dst$chn"};
|
my $chnhash = $modules{CUL_HM}{defptr}{"$dst$chn"};
|
||||||
$chnhash = $hash if(!$chnhash);
|
$chnhash = $hash if(!$chnhash);
|
||||||
|
|
||||||
$peer ="" if($list !~ m/^0[34]$/);
|
$peer ="" if($list !~ m/^0[347]$/);
|
||||||
#empty val since reading will be cumulative
|
#empty val since reading will be cumulative
|
||||||
my $rlName = ((CUL_HM_getAttrInt($chnhash->{NAME},"expert") == 2)?
|
my $rlName = ((CUL_HM_getAttrInt($chnhash->{NAME},"expert") == 2)?
|
||||||
"":".")."RegL_".$list.":".$peer;
|
"":".")."RegL_".$list.":".$peer;
|
||||||
$chnhash->{READINGS}{$rlName}{VAL}="";
|
$chnhash->{READINGS}{$rlName}{VAL}="";
|
||||||
|
my $chnHash = $modules{CUL_HM}{defptr}{$dst.$chn};
|
||||||
delete ($chnhash->{READINGS}{$rlName}{TIME});
|
delete ($chnhash->{READINGS}{$rlName}{TIME});
|
||||||
}
|
}
|
||||||
elsif($subType eq "09"){ #SerialRead-------
|
elsif($subType eq "09"){ #SerialRead-------
|
||||||
@ -4232,7 +4238,7 @@ sub CUL_HM_updtRegDisp($$$) {
|
|||||||
substr($hash->{DEF},6,2) eq "02");
|
substr($hash->{DEF},6,2) eq "02");
|
||||||
}
|
}
|
||||||
elsif ($md =~ m/HM-CC-RT-DN/){#handle temperature readings
|
elsif ($md =~ m/HM-CC-RT-DN/){#handle temperature readings
|
||||||
CUL_HM_RTtempReadings($hash) if ($list == 7);
|
CUL_HM_RTtempReadings($hash) if ($list == 7 && $chn eq "04");
|
||||||
}
|
}
|
||||||
elsif ($md eq "HM-PB-4DIS-WM"){#add text
|
elsif ($md eq "HM-PB-4DIS-WM"){#add text
|
||||||
CUL_HM_4DisText($hash) if ($list == 1) ;
|
CUL_HM_4DisText($hash) if ($list == 1) ;
|
||||||
@ -4581,11 +4587,11 @@ sub CUL_HM_RTtempReadings($) {# parse RT temperature readings
|
|||||||
# transport some readings to relevant channels (window receivce here)
|
# transport some readings to relevant channels (window receivce here)
|
||||||
my $wHash = $modules{CUL_HM}{defptr}{substr($hash->{DEF},0,6)."03"};
|
my $wHash = $modules{CUL_HM}{defptr}{substr($hash->{DEF},0,6)."03"};
|
||||||
CUL_HM_UpdtReadBulk($wHash,1,
|
CUL_HM_UpdtReadBulk($wHash,1,
|
||||||
"winOpnTemp:" .ReadingsVal($name,"R-winOpnTemp" ,"unknown"),
|
"winOpnTemp-int:".ReadingsVal($name,"R-winOpnTemp" ,"unknown"),
|
||||||
"winOpnPeriod:" .ReadingsVal($name,"R-winOpnPeriod" ,"unknown"),
|
"winOpnPeriod:" .ReadingsVal($name,"R-winOpnPeriod" ,"unknown"),
|
||||||
"winOpnBoost:" .ReadingsVal($name,"R-winOpnBoost" ,"unknown"),
|
"winOpnBoost:" .ReadingsVal($name,"R-winOpnBoost" ,"unknown"),
|
||||||
"winOpnMode:" .ReadingsVal($name,"R-winOpnMode" ,"unknown"),
|
"winOpnMode:" .ReadingsVal($name,"R-winOpnMode" ,"unknown"),
|
||||||
"winOpnDetFall:".ReadingsVal($name,"R-winOpnDetFall" ,"unknown"),);
|
"winOpnDetFall:" .ReadingsVal($name,"R-winOpnDetFall" ,"unknown"),);
|
||||||
return $setting;
|
return $setting;
|
||||||
}
|
}
|
||||||
sub CUL_HM_repReadings($) { # parse repeater
|
sub CUL_HM_repReadings($) { # parse repeater
|
||||||
|
@ -191,7 +191,7 @@ my %culHmModel=(
|
|||||||
"0092" => {name=>"Schueco_263-144" ,st=>'switch' ,cyc=>'' ,rxt=>'c' ,lst=>'1,3' ,chn=>"",}, # HM Switch Interface 3 switches
|
"0092" => {name=>"Schueco_263-144" ,st=>'switch' ,cyc=>'' ,rxt=>'c' ,lst=>'1,3' ,chn=>"",}, # HM Switch Interface 3 switches
|
||||||
"0093" => {name=>"Schueco_263-158" ,st=>'THSensor' ,cyc=>'00:10' ,rxt=>'c:w:f' ,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=>"",}, #
|
"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=>'00:10' ,rxt=>'c:w:f' ,lst=>'p:1p.2p.5p.6p,3:3p.6p,1,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,1,7:3p.4'
|
||||||
,chn=>"Weather:1:1,Climate:2:2,WindowRec:3:3,ClimRT_tr:4:4,ClimaTeam:5:5,remote:6:6"}, #
|
,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",}, #
|
"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",}, #
|
"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",}, #
|
||||||
@ -223,7 +223,7 @@ my %culHmModel=(
|
|||||||
"00B9" => {name=>"HM-LC-Dim1T-CV-2" ,st=>'dimmer' ,cyc=>'' ,rxt=>'' ,lst=>'1,3' ,chn=>"Sw:1:1,Sw1_V:2:3",},
|
"00B9" => {name=>"HM-LC-Dim1T-CV-2" ,st=>'dimmer' ,cyc=>'' ,rxt=>'' ,lst=>'1,3' ,chn=>"Sw:1:1,Sw1_V:2:3",},
|
||||||
"00BA" => {name=>"HM-LC-Dim1T-FM-2" ,st=>'dimmer' ,cyc=>'' ,rxt=>'' ,lst=>'1,3' ,chn=>"Sw:1:1,Sw1_V:2:3",},
|
"00BA" => {name=>"HM-LC-Dim1T-FM-2" ,st=>'dimmer' ,cyc=>'' ,rxt=>'' ,lst=>'1,3' ,chn=>"Sw:1:1,Sw1_V:2:3",},
|
||||||
"00BB" => {name=>"HM-LC-Dim2T-SM-2" ,st=>'dimmer' ,cyc=>'' ,rxt=>'' ,lst=>'1,3' ,chn=>"Sw:1:2,Sw1_V:3:4,Sw2_V:5:6",},#
|
"00BB" => {name=>"HM-LC-Dim2T-SM-2" ,st=>'dimmer' ,cyc=>'' ,rxt=>'' ,lst=>'1,3' ,chn=>"Sw:1:2,Sw1_V:3:4,Sw2_V:5:6",},#
|
||||||
"00BD" => {name=>"HM-CC-RT-DN-BoM" ,st=>'thermostat' ,cyc=>'00:10' ,rxt=>'c:w:f' ,lst=>'p:1p.2p.5p.6p,3:3p.6p,1,7:4'
|
"00BD" => {name=>"HM-CC-RT-DN-BoM" ,st=>'thermostat' ,cyc=>'00:10' ,rxt=>'c:w:f' ,lst=>'p:1p.2p.5p.6p,3:3p.6p,1,7:3p.4'
|
||||||
,chn=>"Weather:1:1,Climate:2:2,WindowRec:3:3,ClimRT_tr:4:4,ClimaTeam:5:5,remote:6:6"}, #
|
,chn=>"Weather:1:1,Climate:2:2,WindowRec:3:3,ClimRT_tr:4:4,ClimaTeam:5:5,remote:6:6"}, #
|
||||||
"8001" => {name=>"PS-switch" ,st=>'switch' ,cyc=>'' ,rxt=>'' ,lst=>'1,3' ,chn=>"Sw:1:4",},
|
"8001" => {name=>"PS-switch" ,st=>'switch' ,cyc=>'' ,rxt=>'' ,lst=>'1,3' ,chn=>"Sw:1:4",},
|
||||||
"8002" => {name=>"PS-Th-Sens" ,st=>'THSensor' ,cyc=>'' ,rxt=>'' ,lst=>'1,4' ,chn=>"Sen:1:4",},
|
"8002" => {name=>"PS-Th-Sens" ,st=>'THSensor' ,cyc=>'' ,rxt=>'' ,lst=>'1,4' ,chn=>"Sen:1:4",},
|
||||||
@ -915,7 +915,8 @@ my %culHmRegChan = (# if channelspecific then enter them here
|
|||||||
"HM-Sen-RD-O01" =>{ eventFilterTimeB=>1,transmitTryMax =>1,peerNeedsBurst =>1,expectAES =>1
|
"HM-Sen-RD-O01" =>{ eventFilterTimeB=>1,transmitTryMax =>1,peerNeedsBurst =>1,expectAES =>1
|
||||||
,condTxThrhHi =>1,condTxThrhHi =>1,highHoldTime =>1,evntRelFltTime =>1
|
,condTxThrhHi =>1,condTxThrhHi =>1,highHoldTime =>1,evntRelFltTime =>1
|
||||||
},
|
},
|
||||||
"HM-CC-RT-DN03" =>{ shCtValLo =>1},
|
"HM-CC-RT-DN03" =>{ shCtValLo =>1
|
||||||
|
,winOpnTemp =>1},
|
||||||
"HM-CC-RT-DN04" =>{ btnNoBckLight =>1
|
"HM-CC-RT-DN04" =>{ btnNoBckLight =>1
|
||||||
,dayTemp =>1,nightTemp =>1,tempMin =>1,tempMax =>1
|
,dayTemp =>1,nightTemp =>1,tempMin =>1,tempMax =>1
|
||||||
,tempOffset =>1
|
,tempOffset =>1
|
||||||
|
Loading…
Reference in New Issue
Block a user