mirror of
https://github.com/fhem/fhem-mirror.git
synced 2025-04-19 12:46:03 +00:00
complete TCIT register, re-specify RC19 buttonregister
git-svn-id: https://svn.fhem.de/fhem/trunk@4710 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
parent
2ee21077b6
commit
c3fc0176ce
@ -2189,10 +2189,7 @@ sub CUL_HM_Get($@) {
|
||||
elsif($cmd eq "reg") { #####################################################
|
||||
my (undef,undef,$regReq,$list,$peerId) = @a;
|
||||
if ($regReq eq 'all'){
|
||||
my @regArr = keys %{$culHmRegGeneral};
|
||||
push @regArr, keys %{$culHmRegType->{$st}} if($culHmRegType->{$st});
|
||||
push @regArr, keys %{$culHmRegModel->{$md}} if($culHmRegModel->{$md});
|
||||
push @regArr, keys %{$culHmRegChan->{$md.$chn}} if($culHmRegChan->{$md.$chn});
|
||||
my @regArr = CUL_HM_getRegN($st,$md,$chn);
|
||||
|
||||
my @peers; # get all peers we have a reglist
|
||||
my @listWp; # list that require peers
|
||||
@ -2236,20 +2233,7 @@ sub CUL_HM_Get($@) {
|
||||
}
|
||||
}
|
||||
elsif($cmd eq "regList") { #################################################
|
||||
my @regArr = keys %{$culHmRegGeneral};
|
||||
push @regArr, keys %{$culHmRegType->{$st}} if($culHmRegType->{$st});
|
||||
push @regArr, keys %{$culHmRegModel->{$md}} if($culHmRegModel->{$md});
|
||||
|
||||
if ($isChannel){
|
||||
push @regArr, keys %{$culHmRegChan->{$md.$chn}} if($culHmRegChan->{$md.$chn});
|
||||
}
|
||||
else{# add all ugly channel register to device view
|
||||
for my $chnId (CUL_HM_getAssChnIds($name)){
|
||||
my $chnN = substr($chnId,6,2);
|
||||
push @regArr, keys %{$culHmRegChan->{$md.$chnN}}
|
||||
if($culHmRegChan->{$md.$chnN});
|
||||
}
|
||||
}
|
||||
my @regArr = CUL_HM_getRegN($st,$md,$chn);
|
||||
|
||||
my @rI;
|
||||
foreach my $regName (@regArr){
|
||||
@ -2669,16 +2653,9 @@ sub CUL_HM_Set($@) {
|
||||
|
||||
my (undef,undef,$regName,$data,$peerChnIn) = @a;
|
||||
$state = "";
|
||||
if (!$culHmRegType->{$st}{$regName} &&
|
||||
!$culHmRegGeneral->{$regName} &&
|
||||
!$culHmRegModel->{$md}{$regName} &&
|
||||
!$culHmRegChan->{$md.$chn}{$regName} ){
|
||||
my @regArr = keys %{$culHmRegGeneral};
|
||||
push @regArr, keys %{$culHmRegType->{$st}} if($culHmRegType->{$st});
|
||||
push @regArr, keys %{$culHmRegModel->{$md}} if($culHmRegModel->{$md});
|
||||
push @regArr, keys %{$culHmRegChan->{$md.$chn}} if($culHmRegChan->{$md.$chn});
|
||||
return "$regName failed: supported register are ".join(" ",sort @regArr);
|
||||
}
|
||||
my @regArr = CUL_HM_getRegN($st,$md,$chn);
|
||||
return "$regName failed: supported register are ".join(" ",sort @regArr)
|
||||
if (!grep /^$regName$/,@regArr );
|
||||
|
||||
my $reg = $culHmRegDefine->{$regName};
|
||||
return $st." - ".$regName # give some help
|
||||
@ -4624,10 +4601,7 @@ sub CUL_HM_updtRegDisp($$$) {
|
||||
my $md = $attr{$devName}{model} ?$attr{$devName}{model} :"";
|
||||
my $chn = $hash->{DEF};
|
||||
$chn = (length($chn) == 8)?substr($chn,6,2):"";
|
||||
my @regArr = keys %{$culHmRegGeneral};
|
||||
push @regArr, keys %{$culHmRegType->{$st}} if($culHmRegType->{$st});
|
||||
push @regArr, keys %{$culHmRegModel->{$md}} if($culHmRegModel->{$md});
|
||||
push @regArr, keys %{$culHmRegChan->{$md.$chn}} if($culHmRegChan->{$md.$chn});
|
||||
my @regArr = CUL_HM_getRegN($st,$md,$chn);
|
||||
my @changedRead;
|
||||
my $expL = CUL_HM_getAttrInt($name,"expert");
|
||||
my $expLvl = ($expL != 0)?1:0;
|
||||
@ -4654,6 +4628,9 @@ sub CUL_HM_updtRegDisp($$$) {
|
||||
elsif ($md =~ m/HM-CC-RT-DN/){#handle temperature readings
|
||||
CUL_HM_RTtempReadings($hash) if ($list == 7 && $chn eq "04");
|
||||
}
|
||||
elsif ($md =~ m/HM-TC-IT-WM-W-EU/){#handle temperature readings
|
||||
CUL_HM_TCITtempReadings($hash) if ($list >= 7 && $chn eq "02");
|
||||
}
|
||||
elsif ($md eq "HM-PB-4DIS-WM"){#add text
|
||||
CUL_HM_4DisText($hash) if ($list == 1) ;
|
||||
}
|
||||
@ -4852,6 +4829,14 @@ sub CUL_HM_time2min($) { # minutes -> time
|
||||
return $m;
|
||||
}
|
||||
|
||||
sub CUL_HM_getRegN($$$){
|
||||
my ($st,$md,$chn) = @_;
|
||||
my @regArr = keys %{$culHmRegGeneral};
|
||||
push @regArr, keys %{$culHmRegType->{$st}} if($culHmRegType->{$st});
|
||||
push @regArr, keys %{$culHmRegModel->{$md}} if($culHmRegModel->{$md});
|
||||
push @regArr, keys %{$culHmRegChan->{$md.$chn}} if($culHmRegChan->{$md.$chn});
|
||||
return @regArr;
|
||||
}
|
||||
sub CUL_HM_4DisText($) { # convert text for 4dis
|
||||
#text1: start at 54 (0x36) length 12 (0x0c)
|
||||
#text2: start at 70 (0x46) length 12 (0x0c)
|
||||
@ -5008,6 +4993,68 @@ sub CUL_HM_RTtempReadings($) {# parse RT temperature readings
|
||||
"winOpnDetFall:" .ReadingsVal($name,"R-winOpnDetFall" ,"unknown"),);
|
||||
return $setting;
|
||||
}
|
||||
sub CUL_HM_TCITtempReadings($) {# parse RT temperature readings
|
||||
my ($hash)=@_;
|
||||
my $name = $hash->{NAME};
|
||||
my $regPre = ((CUL_HM_getAttrInt($name,"expert") == 2)?"":".");
|
||||
my @changedRead;
|
||||
my $setting;
|
||||
my %idxN = (7=>"P1",8=>"P2",9=>"P3");
|
||||
foreach my $lst (7,8,9){
|
||||
my $tempRegs = ReadingsVal($name,$regPre."RegL_0$lst:","");
|
||||
my $stmpRegs = ($hash->{helper}{shadowReg}{"RegL_0$lst:"})? # need to compare actual data
|
||||
($hash->{helper}{shadowReg}{"RegL_0$lst:"})
|
||||
:$tempRegs;
|
||||
# return "reglist incomplete\n" if ($tempRegs !~ m/00:00/);
|
||||
|
||||
my @days = ("Sat", "Sun", "Mon", "Tue", "Wed", "Thu", "Fri");
|
||||
|
||||
$tempRegs =~ s/.* 14://; #remove register up to addr 20 from list
|
||||
$tempRegs =~ s/ 00:00/ /g; #remove regline termination
|
||||
$tempRegs =~ s/ ..://g; #remove addr Info
|
||||
$tempRegs =~ s/ //g; #blank
|
||||
|
||||
$stmpRegs =~ s/.* 14://;
|
||||
$stmpRegs =~ s/ 00:00/ /g;
|
||||
$stmpRegs =~ s/ ..://g;
|
||||
$stmpRegs =~ s/ //g;
|
||||
|
||||
push (@changedRead,"tempList$idxN{$lst}_State:".
|
||||
($hash->{helper}{shadowReg}{"RegL_0$lst:"} ?"set":"verified"));
|
||||
for (my $day = 0;$day<7;$day++){
|
||||
my $dayRead = "";
|
||||
my $pre ="";
|
||||
my @time;
|
||||
my @temp;
|
||||
my $str;
|
||||
if (substr($stmpRegs,$day *13*4,13*4) eq
|
||||
substr($tempRegs,$day *13*4,13*4) ){
|
||||
$str = substr($tempRegs,$day *13*4,13*4);
|
||||
}
|
||||
else{
|
||||
$str = substr($stmpRegs,$day *13*4,13*4);
|
||||
$pre = "set_";
|
||||
}
|
||||
foreach (unpack '(A4)*',$str){
|
||||
my $h = hex($_);
|
||||
push @temp,($h >> 9)/2;
|
||||
$h = ($h & 0x1ff) * 5;
|
||||
$h = sprintf("%02d:%02d",int($h / 60),($h%60));
|
||||
push @time,$h;
|
||||
}
|
||||
|
||||
for (my $idx = 0;$idx<13;$idx++){
|
||||
my $entry = sprintf(" %s %3.01f",$time[$idx],$temp[$idx]);
|
||||
$setting .= "Temp set: ".$days[$day].$entry." C\n";
|
||||
$dayRead .= $entry;
|
||||
last if ($time[$idx] eq "24:00");
|
||||
}
|
||||
push (@changedRead,"tempList$idxN{$lst}".$days[$day].":".$pre." ".$dayRead);
|
||||
}
|
||||
}
|
||||
CUL_HM_UpdtReadBulk($hash,1,@changedRead) if (@changedRead);
|
||||
return $setting;
|
||||
}
|
||||
sub CUL_HM_repReadings($) { # parse repeater
|
||||
my ($hash)=@_;
|
||||
my %pCnt;
|
||||
|
@ -748,9 +748,7 @@ $culHmRegType{pushButton} = $culHmRegType{remote};
|
||||
|
||||
%culHmRegModel = (
|
||||
"HM-RC-12" =>{ backAtKey =>1, backAtMotion =>1, backOnTime =>1},
|
||||
"HM-RC-19" =>{ backAtKey =>1, backAtMotion =>1, backOnTime =>1,backAtCharge =>1,language =>1
|
||||
,lcdSymb =>1, lcdLvlInterp =>1
|
||||
},
|
||||
"HM-RC-19" =>{ backAtKey =>1, backAtMotion =>1, backOnTime =>1,backAtCharge =>1,language =>1},
|
||||
"HM-RC-4-2" =>{ localResDis =>1},
|
||||
|
||||
"HM-LC-Bl1PBU-FM" =>{ transmitTryMax =>1,statusInfoMinDly=>1,statusInfoRandom=>1,localResDis =>1},
|
||||
@ -924,6 +922,7 @@ $culHmRegModel{"ROTO_ZEL-STG-RM-FSA"} = $culHmRegModel{"HM-CC-VD"};
|
||||
"HM-RC-1912" =>{ msgShowTime =>1, beepAtAlarm =>1, beepAtService =>1,beepAtInfo =>1
|
||||
,backlAtAlarm =>1, backlAtService =>1, backlAtInfo =>1
|
||||
},
|
||||
"HM-RC-1901" =>{ lcdSymb =>1, lcdLvlInterp =>1},
|
||||
"HM-OU-CFM-PL01" =>{ ActTypeLed =>1},
|
||||
"HM-OU-CFM-PL02" =>{ ActTypeMp3 =>1,Intense =>1},
|
||||
"HM-SEC-WIN01" =>{ setupDir =>1,pullForce =>1,pushForce =>1,tiltMax =>1
|
||||
@ -1013,6 +1012,12 @@ $culHmRegModel{"ROTO_ZEL-STG-RM-FSA"} = $culHmRegModel{"HM-CC-VD"};
|
||||
#clones - - - - - - - - - - - - - - -
|
||||
$culHmRegChan{"HM-RC-19-B12"} = $culHmRegChan{"HM-RC-1912"};
|
||||
$culHmRegChan{"HM-RC-19-SW12"} = $culHmRegChan{"HM-RC-1912"};
|
||||
foreach (2..16){
|
||||
my $c = sprintf("%02X",$_);
|
||||
$culHmRegChan{"HM-RC-19$c"} = $culHmRegChan{"HM-RC-1901"};
|
||||
$culHmRegChan{"HM-RC-19-B$c"} = $culHmRegChan{"HM-RC-1901"};
|
||||
$culHmRegChan{"HM-RC-19-SW$c"} = $culHmRegChan{"HM-RC-1901"};
|
||||
}
|
||||
|
||||
$culHmRegChan{"WDF-solar02"} = $culHmRegType{"dimmer"};
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user