diff --git a/FHEM/10_CUL_HM.pm b/FHEM/10_CUL_HM.pm index b15384cce..dec567309 100755 --- a/FHEM/10_CUL_HM.pm +++ b/FHEM/10_CUL_HM.pm @@ -3071,7 +3071,20 @@ sub CUL_HM_parseCommon(@){##################################################### $devHlpr->{HM_CMDNR} < 250 && $devHlpr->{HM_CMDNR} > 5);# this is power on $devHlpr->{HM_CMDNR} = hex($mhp->{mNo});# sync msgNo prior to any sending - if($rxt & 0x08){ #wakeup device + if($rxt & 0x10){ # lazy config + if($mhp->{mFlgH} & 0x02 # wakeup message + && $devHlpr->{prt}{sleeping} + && ( $defs{$mhp->{devH}{IODev}{NAME}}{helper}{VTS_LZYCFG} # for TSCUL VTS0.34 up + || $defs{$mhp->{devH}{IODev}{NAME}}{TYPE} =~ m/^(?:HMLAN|HMUARTLGW)$/s )){ + CUL_HM_appFromQ($mhp->{devN},"cf");# stack cmds if waiting + $devHlpr->{prt}{sleeping} = 0; + CUL_HM_ProcessCmdStack($mhp->{devH}); + } + else{ + $devHlpr->{prt}{sleeping} = 1 if (!$devHlpr->{prt}{sProc}); # set back to sleeping with next trigger, if nothing to do + } + } + elsif($rxt & 0x08){ #wakeup device if(($mhp->{mFlgH} & 0xA2) == 0x82){ #wakeup signal CUL_HM_appFromQ($mhp->{devN},"wu");# stack cmds if waiting if ($mhp->{devH}{cmdStack}){ @@ -3084,17 +3097,6 @@ sub CUL_HM_parseCommon(@){##################################################### $devHlpr->{prt}{sleeping} = 1 if($mhp->{mFlgH} & 0x20) ; } } - if($rxt & 0x10 && $devHlpr->{prt}{sleeping}){ # lazy config - if($mhp->{mFlgH} & 0x02 # wakeup device - && $defs{$mhp->{devH}{IODev}{NAME}}{TYPE} =~ m/^(HMLAN|HMUARTLGW)$/){ - CUL_HM_appFromQ($mhp->{devN},"cf");# stack cmds if waiting - $devHlpr->{prt}{sleeping} = 0; - CUL_HM_ProcessCmdStack($mhp->{devH}); - } - else{ - $devHlpr->{prt}{sleeping} = 1; - } - } my $repeat; $devHlpr->{supp_Pair_Rep} = 0 if ($mhp->{mTp} ne "00"); # noansi: reset pairing suppress flag as we got something different from device