diff --git a/fhem/FHEM/10_CUL_HM.pm b/fhem/FHEM/10_CUL_HM.pm index 1d23e3364..0bbcf0998 100755 --- a/fhem/FHEM/10_CUL_HM.pm +++ b/fhem/FHEM/10_CUL_HM.pm @@ -230,8 +230,8 @@ sub CUL_HM_updateConfig($){ delete $attr{$name}{$_} foreach ( "autoReadReg","actCycle","actStatus","burstAccess","serialNr" ,"IODev","IOList","IOgrp","hmProtocolEvents","rssiLog"); - $hash->{helper}{role}{vrt} = 1; - $hash->{helper}{role}{dev} = 1; + #$hash->{helper}{role}{vrt} = 1; + #$hash->{helper}{role}{dev} = 1; next; } CUL_HM_ID2PeerList($name,"",1); # update peerList out of peerIDs @@ -3014,7 +3014,7 @@ sub CUL_HM_Get($@) {#+++++++++++++++++ get command+++++++++++++++++++++++++++++ my ($dst,$chn) = unpack 'A6A2',$hash->{DEF}.($roleC?'01':'00'); my $h = undef; - $h = $culHmGlobalGets->{$cmd} if(!$roleV); + $h = $culHmGlobalGets->{$cmd} if(!$roleV &&($roleD || $roleC)); $h = $culHmVrtGets->{$cmd} if(!defined($h) && $roleV); $h = $culHmSubTypeGets->{$st}{$cmd} if(!defined($h) && $culHmSubTypeGets->{$st}); $h = $culHmModelGets->{$md}{$cmd} if(!defined($h) && $culHmModelGets->{$md}); @@ -3023,10 +3023,10 @@ sub CUL_HM_Get($@) {#+++++++++++++++++ get command+++++++++++++++++++++++++++++ if(!defined($h)) { my @arr = (); - if(!$roleV) {foreach(keys %{$culHmGlobalGets} ){push @arr,"$_:".$culHmGlobalGets->{$_} }}; - if($roleV) {foreach(keys %{$culHmVrtGets} ){push @arr,"$_:".$culHmVrtGets->{$_} }}; - if($culHmSubTypeGets->{$st}){foreach(keys %{$culHmSubTypeGets->{$st}}){push @arr,"$_:".${$culHmSubTypeGets->{$st}}{$_} }}; - if($culHmModelGets->{$md}) {foreach(keys %{$culHmModelGets->{$md}} ){push @arr,"$_:".${$culHmModelGets->{$md}}{$_} }}; + if(!$roleV &&($roleD || $roleC)){foreach(keys %{$culHmGlobalGets} ){push @arr,"$_:".$culHmGlobalGets->{$_} }}; + if($roleV) {foreach(keys %{$culHmVrtGets} ){push @arr,"$_:".$culHmVrtGets->{$_} }}; + if($culHmSubTypeGets->{$st}) {foreach(keys %{$culHmSubTypeGets->{$st}}){push @arr,"$_:".${$culHmSubTypeGets->{$st}}{$_} }}; + if($culHmModelGets->{$md}) {foreach(keys %{$culHmModelGets->{$md}} ){push @arr,"$_:".${$culHmModelGets->{$md}}{$_} }}; foreach(@arr){ my ($cmd,$val) = split(":",$_,2); @@ -3281,7 +3281,7 @@ sub CUL_HM_Set($@) {#+++++++++++++++++ set command+++++++++++++++++++++++++++++ my $fkt = $hash->{helper}{fkt}?$hash->{helper}{fkt}:""; my $h = undef; - $h = $culHmGlobalSets->{$cmd} if( !$roleV); + $h = $culHmGlobalSets->{$cmd} if( !$roleV &&($roleD || $roleC)); $h = $culHmGlobalSetsVrtDev->{$cmd} if(!defined($h) &&( $roleV || !$st) && $roleD); $h = $culHmGlobalSetsDevice->{$cmd} if(!defined($h) && !$roleV && $roleD); $h = $culHmSubTypeDevSets->{$st}{$cmd}if(!defined($h) && !$roleV && $roleD); @@ -3299,13 +3299,13 @@ sub CUL_HM_Set($@) {#+++++++++++++++++ set command+++++++++++++++++++++++++++++ if(!defined($h) && defined($culHmSubTypeSets->{$st}{pct}) && $cmd =~ m/^\d+/) { splice @a, 1, 0,"pct";#insert the actual command } - elsif(!defined($h)) { + elsif(!defined($h)) { ### unknown - return the commandlist my @arr1 = (); - if( $st ne "virtual") {foreach(keys %{$culHmGlobalSets} ){push @arr1,"$_:".$culHmGlobalSets->{$_} }}; - if(($st eq "virtual"||!$st) && $roleD){foreach(keys %{$culHmGlobalSetsVrtDev} ){push @arr1,"$_:".$culHmGlobalSetsVrtDev->{$_} }}; - if( $st ne "virtual" && $roleD){foreach(keys %{$culHmGlobalSetsDevice} ){push @arr1,"$_:".$culHmGlobalSetsDevice->{$_} }}; - if( $st ne "virtual" && $roleD){foreach(keys %{$culHmSubTypeDevSets->{$st}}){push @arr1,"$_:".${$culHmSubTypeDevSets->{$st}}{$_}}}; - if( $st ne "virtual" && $roleC){foreach(keys %{$culHmGlobalSetsChn} ){push @arr1,"$_:".$culHmGlobalSetsChn->{$_} }}; + if( !$roleV &&($roleD || $roleC) ){foreach(keys %{$culHmGlobalSets} ){push @arr1,"$_:".$culHmGlobalSets->{$_} }}; + if(( $roleV||!$st) && $roleD){foreach(keys %{$culHmGlobalSetsVrtDev} ){push @arr1,"$_:".$culHmGlobalSetsVrtDev->{$_} }}; + if( !$roleV && $roleD){foreach(keys %{$culHmGlobalSetsDevice} ){push @arr1,"$_:".$culHmGlobalSetsDevice->{$_} }}; + if( !$roleV && $roleD){foreach(keys %{$culHmSubTypeDevSets->{$st}}){push @arr1,"$_:".${$culHmSubTypeDevSets->{$st}}{$_}}}; + if( !$roleV && $roleC){foreach(keys %{$culHmGlobalSetsChn} ){push @arr1,"$_:".$culHmGlobalSetsChn->{$_} }}; if( $culHmSubTypeSets->{$st} && $roleC){foreach(keys %{$culHmSubTypeSets->{$st}} ){push @arr1,"$_:".${$culHmSubTypeSets->{$st}}{$_} }}; if( $culHmModelSets->{$md}) {foreach(keys %{$culHmModelSets->{$md}} ){push @arr1,"$_:".${$culHmModelSets->{$md}}{$_} }}; if( $culHmChanSets->{$md."00"} && $roleD){foreach(keys %{$culHmChanSets->{$md."00"}} ){push @arr1,"$_:".${$culHmChanSets->{$md."00"}}{$_} }}; @@ -8667,18 +8667,19 @@ sub CUL_HM_tempListTmpl(@) { ################################################## restore will not delete any peered channels, it will just add peer channels.
  • listDevice
    -
  • when used with ccu it returns a list of Devices using the ccu service to assign an IO.
    -
  • -
  • when used with ActionDetector user will get a comma separated list of entities being assigned to the action detector
    - get ActionDetector listDevice # returns all assigned entities
    - get ActionDetector listDevice notActive# returns entities which habe not status alive
    - get ActionDetector listDevice alive # returns entities with status alive
    - get ActionDetector listDevice unknown # returns entities with status unknown
    - get ActionDetector listDevice dead # returns entities with status dead
    -
  • - -
    - + + +
    Attributes The overall function can be viewed checking out the "ActionDetector" entity. The status of all entities is present in the READING section.
    Note: This function can be enabled for devices with non-cyclic messages as well. It is up to the user to enter a reasonable cycletime. - +
  • autoReadReg
    '0' autoReadReg will be ignored.
    '1' will execute a getConfig for the device automatically after each reboot of FHEM.
    @@ -8727,14 +8728,14 @@ sub CUL_HM_tempListTmpl(@) { ################################################## of the readings and the display will be delayed depending on the size of the database.
    Recommendations and constrains upon usage:
    -
  • + use this attribute on the device or channel 01. Do not use it separate on each channel + of a multi-channel device to avoid duplicate execution
    + usage on devices which only react to 'config' mode is not recommended since executen will + not start until config is triggered by the user
    + usage on devices which support wakeup-mode is usefull. But consider that execution is delayed + until the device "wakes up".
    + +
  • burstAccess
    can be set for the device entity if the model allowes conditionalBurst. The attribut will switch off burst operations (0_off) which causes less message load @@ -9944,17 +9945,18 @@ sub CUL_HM_tempListTmpl(@) { ################################################## "restore" löscht keine verknüpften Kanäle, es fügt nur neue Peers hinzu.
  • listDevice
    -
  • bei einer CCU gibt es eine Liste der Devices, welche den ccu service zum zuweisen der IOs zurück
    -
  • -
  • beim ActionDetector wird eine Komma geteilte Liste der Entities zurückgegeben
    - get ActionDetector listDevice # returns alle assigned entities
    - get ActionDetector listDevice notActive# returns entities ohne status alive
    - get ActionDetector listDevice alive # returns entities mit status alive
    - get ActionDetector listDevice unknown # returns entities mit status unknown
    - get ActionDetector listDevice dead # returns entities mit status dead
    -
  • - - + +
    Attribute