mirror of
https://github.com/fhem/fhem-mirror.git
synced 2025-04-21 01:46:08 +00:00
ccu IOList support
git-svn-id: https://svn.fhem.de/fhem/trunk@5718 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
parent
a5658ee95c
commit
b175f25e44
@ -216,6 +216,8 @@ sub HMLAN_Attr(@) {############################################################
|
|||||||
}
|
}
|
||||||
elsif($aName eq "hmId"){
|
elsif($aName eq "hmId"){
|
||||||
if ($cmd eq "set"){
|
if ($cmd eq "set"){
|
||||||
|
my $owner = InternalVal($name,"owner_CCU",undef);
|
||||||
|
return "device owned by $owner" if ($owner);
|
||||||
return "wrong syntax: hmId must be 6-digit-hex-code (3 byte)"
|
return "wrong syntax: hmId must be 6-digit-hex-code (3 byte)"
|
||||||
if ($aVal !~ m/^[A-F0-9]{6}$/i);
|
if ($aVal !~ m/^[A-F0-9]{6}$/i);
|
||||||
}
|
}
|
||||||
|
@ -133,7 +133,8 @@ sub CUL_HM_Initialize($) {
|
|||||||
$hash->{GetFn} = "CUL_HM_Get";
|
$hash->{GetFn} = "CUL_HM_Get";
|
||||||
$hash->{RenameFn} = "CUL_HM_Rename";
|
$hash->{RenameFn} = "CUL_HM_Rename";
|
||||||
$hash->{AttrFn} = "CUL_HM_Attr";
|
$hash->{AttrFn} = "CUL_HM_Attr";
|
||||||
$hash->{AttrList} = "IODev do_not_notify:1,0 ignore:1,0 dummy:1,0 "
|
$hash->{AttrList} = "do_not_notify:1,0 ignore:1,0 dummy:1,0 "
|
||||||
|
."IODev IOList " #IOList is for CCU only
|
||||||
."showtime:1,0 "
|
."showtime:1,0 "
|
||||||
."serialNr firmware .stc .devInfo "
|
."serialNr firmware .stc .devInfo "
|
||||||
."rawToReadable unit "#"KFM-Sensor" only
|
."rawToReadable unit "#"KFM-Sensor" only
|
||||||
@ -671,6 +672,13 @@ sub CUL_HM_Attr(@) {#################################
|
|||||||
return "use $attrName only for device" if (!$hash->{helper}{role}{dev});
|
return "use $attrName only for device" if (!$hash->{helper}{role}{dev});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
elsif($attrName eq "IOList"){
|
||||||
|
if ($cmd eq "set"){
|
||||||
|
return "use $attrName only for ccu device"
|
||||||
|
if (!$hash->{helper}{role}{dev}
|
||||||
|
|| AttrVal($name,"model","CCU-FHEM") !~ "CCU-FHEM");
|
||||||
|
}
|
||||||
|
}
|
||||||
elsif($attrName eq "autoReadReg"){
|
elsif($attrName eq "autoReadReg"){
|
||||||
if ($cmd eq "set"){
|
if ($cmd eq "set"){
|
||||||
CUL_HM_complConfigTest($name)
|
CUL_HM_complConfigTest($name)
|
||||||
@ -6168,13 +6176,29 @@ sub CUL_HM_UpdtCentral($){
|
|||||||
my $name = shift;
|
my $name = shift;
|
||||||
my $id = CUL_HM_name2Id($name);
|
my $id = CUL_HM_name2Id($name);
|
||||||
my @myIos;
|
my @myIos;
|
||||||
delete $defs{$_}{owner_CCU} foreach (grep !/^$/,
|
delete $defs{$_}{owner_CCU}
|
||||||
map{InternalVal($_,"owner_CCU","")eq$name?$_:""}
|
foreach (grep !/^$/,
|
||||||
keys %defs);
|
map{InternalVal($_,"owner_CCU","") eq $name ? $_ : ""}
|
||||||
|
keys %defs);
|
||||||
|
|
||||||
foreach (CUL_HM_noDup(grep !/^$/,map{AttrVal($_,"IODev","")}keys %defs)){
|
foreach (CUL_HM_noDup(grep !/^$/,map{AttrVal($_,"IODev","")}keys %defs)){
|
||||||
push @myIos,$_ if (CUL_HM_Id($defs{$_}) eq $defs{$name}{DEF});
|
push @myIos,$_ if (CUL_HM_Id($defs{$_}) eq $defs{$name}{DEF});
|
||||||
$defs{$_}{owner_CCU} = $name;
|
}
|
||||||
|
foreach my $ioN(split",",AttrVal($name,"IOList","")){
|
||||||
|
if ($defs{$ioN}){
|
||||||
|
if ( $defs{$ioN}{TYPE} eq "HMLAN"){;
|
||||||
|
}
|
||||||
|
elsif($defs{$ioN}{TYPE} eq "CUL"){
|
||||||
|
my $x = CommandAttr(undef, "$ioN rfmode HomeMatic")
|
||||||
|
if (AttrVal($ioN,"rfmode","") ne "HomeMatic");
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
next;
|
||||||
|
}
|
||||||
|
CommandAttr(undef, "$ioN hmId $defs{$name}{DEF}")
|
||||||
|
if (AttrVal($ioN,"hmId","") ne $defs{$name}{DEF});
|
||||||
|
$defs{$ioN}{owner_CCU} = $name;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
$defs{$name}{assignedIOs} = join(",",@myIos);
|
$defs{$name}{assignedIOs} = join(",",@myIos);
|
||||||
foreach my $ccuBId (CUL_HM_noDup(grep /$id/ ,map{split ",",AttrVal($_,"peerIDs","")}keys %defs)){
|
foreach my $ccuBId (CUL_HM_noDup(grep /$id/ ,map{split ",",AttrVal($_,"peerIDs","")}keys %defs)){
|
||||||
@ -6187,20 +6211,37 @@ sub CUL_HM_UpdtCentral($){
|
|||||||
CUL_HM_ID2PeerList ($name."_Btn$btn",CUL_HM_name2Id($pn),1);
|
CUL_HM_ID2PeerList ($name."_Btn$btn",CUL_HM_name2Id($pn),1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
my $io = AttrVal($name,"IODev","empty");
|
||||||
|
if (AttrVal($name,"IOList","") !~ m/$io/){
|
||||||
|
foreach(split",",AttrVal($name,"IOList","")){
|
||||||
|
if ($defs{$_}){
|
||||||
|
$attr{$name}{IODev} = $_;
|
||||||
|
last;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
CUL_HM_UpdtCentralState($name);
|
CUL_HM_UpdtCentralState($name);
|
||||||
}
|
}
|
||||||
sub CUL_HM_UpdtCentralState($){
|
sub CUL_HM_UpdtCentralState($){
|
||||||
my $name = shift;
|
my $name = shift;
|
||||||
return if (!$defs{$name});
|
return if (!$defs{$name});
|
||||||
my $state = "";
|
my $state = "";
|
||||||
foreach(split",",$defs{$name}{assignedIOs}){
|
my @IOl = split",",AttrVal($name,"IOList","");
|
||||||
my $cnd = ReadingsVal($_,"cond","");
|
foreach my $e (split",",$defs{$name}{assignedIOs}){
|
||||||
|
$state .= "$e:UAS," if (!grep /$e/,@IOl);
|
||||||
|
}
|
||||||
|
foreach my $ioN (@IOl){
|
||||||
|
my $cnd = ReadingsVal($ioN,"cond","");
|
||||||
if ($cnd){
|
if ($cnd){
|
||||||
$state .= $_.":$cnd" if ($cnd !~ m/(init|ok)/);
|
$state .= "$ioN:".($cnd !~ m/(init|ok)/?$cnd:"ok").",";
|
||||||
}
|
}
|
||||||
else{
|
else{
|
||||||
my $st = InternalVal($_,"STATE","");
|
my $st = InternalVal($ioN,"STATE","unknown");
|
||||||
$state .= $_.":$st" if ($st !~ m/([iI]nit|ok)/);
|
$state .= "$ioN:".($st !~ m/([iI]nit|ok)/?$st:"ok").",";
|
||||||
|
}
|
||||||
|
if (AttrVal($ioN,"hmId","") ne $defs{$name}{DEF}){
|
||||||
|
Log 1,"CUL_HM correct hmId for assigned IO $ioN";
|
||||||
|
$attr{$ioN}{hmId} = $defs{$name}{DEF};
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
$state = "IOs_ok" if (!$state);
|
$state = "IOs_ok" if (!$state);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user