diff --git a/fhem/FHEM/00_HMLAN.pm b/fhem/FHEM/00_HMLAN.pm index 3316c5827..beca5692c 100755 --- a/fhem/FHEM/00_HMLAN.pm +++ b/fhem/FHEM/00_HMLAN.pm @@ -961,7 +961,7 @@ sub HMLAN_condUpdate($$) {##################################################### elsif ($HMcnd == 255) {#reset counter after init $hashQ->{answerPend} = 0; @{$hashQ->{apIDs}} = (); #clear Q-status - $hash->{XmitOpen} = 1; #allow transmit + $hash->{XmitOpen} = 0; #deny transmit } else{ $hash->{XmitOpen} = 1 diff --git a/fhem/FHEM/10_CUL_HM.pm b/fhem/FHEM/10_CUL_HM.pm index d7f086d77..1c47742f2 100755 --- a/fhem/FHEM/10_CUL_HM.pm +++ b/fhem/FHEM/10_CUL_HM.pm @@ -5393,7 +5393,7 @@ sub CUL_HM_id2Name($) { #in: name or HMid out: name return $devId; #not defined, return ID only } } -sub CUL_HM_id2Hash($) {#in: id, out:hash +sub CUL_HM_id2Hash($) { #in: id, out:hash my ($id) = @_; return $modules{CUL_HM}{defptr}{$id} if ($modules{CUL_HM}{defptr}{$id}); $id = substr($id,0,6); @@ -6316,32 +6316,32 @@ sub CUL_HM_storeRssi(@){ sub CUL_HM_UpdtCentral($){ my $name = shift; my $id = CUL_HM_name2Id($name); - my @myIos; - delete $defs{$_}{owner_CCU} + delete $defs{$_}{owner_CCU} # remove assignments in IO dev to this CCU foreach (grep !/^$/, map{InternalVal($_,"owner_CCU","") eq $name ? $_ : ""} keys %defs); + my @myIos;# get all IOs uing 'my' ID foreach (CUL_HM_noDup(grep !/^$/,map{AttrVal($_,"IODev","")}keys %defs)){ push @myIos,$_ if (CUL_HM_h2IoId($defs{$_}) eq $defs{$name}{DEF}); } 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; + next if (!$defs{$ioN}); + if ( $defs{$ioN}{TYPE} eq "HMLAN"){; } + elsif($defs{$ioN}{TYPE} eq "CUL"){ + 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); + # --- search for peers to CCU and potentially device this channel foreach my $ccuBId (CUL_HM_noDup(grep /$id/ ,map{split ",",AttrVal($_,"peerIDs","")}keys %defs)){ my $btnS = substr($ccuBId,6,2); my $btn = hex($btnS) + 0; @@ -6796,7 +6796,12 @@ sub CUL_HM_tempListTmpl(@) { ################################################## $dlf{$prg}{$dayTxt} = 1; my $day = $dl{$dayTxt}; $tln =~s /tempList/${day}_tempList/ if ($tln !~ m/[0-6]_/); - + if (AttrVal($name,"model","") =~ m/HM-TC-IT-WM-W/){ + $tln =~ s/^R_/R_P1_/ if ($tln !~ m/^R_P/);# add P1 as default + } + else{ + $tln =~ s/^R_P1_/R_/ if ($tln =~ m/^R_P/);# remove P1 default + } $val =~ tr/ +/ /; $val =~ s/^ //; $val =~ s/ $//; diff --git a/fhem/FHEM/98_HMinfo.pm b/fhem/FHEM/98_HMinfo.pm index f75a12129..484a55af3 100644 --- a/fhem/FHEM/98_HMinfo.pm +++ b/fhem/FHEM/98_HMinfo.pm @@ -706,11 +706,10 @@ sub HMinfo_getEntities(@) { ################################################### my $eHash = $modules{CUL_HM}{defptr}{$id}; my $eName = $eHash->{NAME}; next if ( !$eName || $eName !~ m/$re/); - my $isChn = $eHash->{helper}{chn}?1:0; my $eIg = CUL_HM_Get($eHash,$eName,"param","ignore"); $eIg = "" if ($eIg eq "undefined"); - next if (!(($doDev && length($id) == 6) || - ($doChn && $isChn))); + next if (!(($doDev && $eHash->{helper}{role}{dev}) || + ($doChn && $eHash->{helper}{role}{chn}))); next if (!$doIgn && $eIg); next if ( $noVrt && $eHash->{helper}{role}{vrt}); next if ( $noPhy && !$eHash->{helper}{role}{vrt});