From 18b6286cbccc7ca6e4374a25fa508b3609fd5ecc Mon Sep 17 00:00:00 2001 From: Marko Oldenburg Date: Sat, 11 Apr 2020 15:53:21 +0200 Subject: [PATCH] Fix little Bugs in Shading and Window open with shading state --- 73_AutoShuttersControl.pm | 56 +++++++++++++++++++-------------------- 1 file changed, 27 insertions(+), 29 deletions(-) diff --git a/73_AutoShuttersControl.pm b/73_AutoShuttersControl.pm index 7c1df81..6e21f83 100644 --- a/73_AutoShuttersControl.pm +++ b/73_AutoShuttersControl.pm @@ -1117,8 +1117,11 @@ sub EventProcessingWindowRec { $shutters->setNoDelay(1); $shutters->setDriveCmd( $shutters->getShadingPos ); } - elsif ($shutters->getStatus != $shutters->getOpenPos - || $shutters->getStatus != $shutters->getLastManPos ) + elsif ( + !$shutters->getIfInShading + && ( $shutters->getStatus != $shutters->getOpenPos + || $shutters->getStatus != $shutters->getLastManPos ) + ) { if ( $shutters->getPrivacyDownStatus == 2 ) { $shutters->setLastDrive( @@ -2463,6 +2466,7 @@ sub ShadingProcessing { && $shutters->getShadingLastStatus eq 'out' ) ) && $shutters->getRoommatesStatus ne 'asleep' + && $shutters->getRoommatesStatus ne 'gotosleep' ); return; @@ -2486,27 +2490,23 @@ sub ShadingProcessingDriveCommand { { $shutters->setShadingStatus( $shutters->getShadingStatus ); - if ( $shutters->getShadingStatus eq 'in' - && $getShadingPos != $getStatus ) + if ( + $shutters->getShadingStatus eq 'in' + && $getShadingPos != $getStatus + && ( CheckIfShuttersWindowRecOpen($shuttersDev) != 2 + || $shutters->getShuttersPlace ne 'terrace' ) + ) { - if ( - !( - CheckIfShuttersWindowRecOpen($shuttersDev) == 2 - && $shutters->getShuttersPlace eq 'terrace' - ) - ) - { - $shutters->setLastDrive('shading in'); - ShuttersCommandSet( $hash, $shuttersDev, $getShadingPos ); + $shutters->setLastDrive('shading in'); + ShuttersCommandSet( $hash, $shuttersDev, $getShadingPos ); - ASC_Debug( 'ShadingProcessingDriveCommand: ' - . $shutters->getShuttersDev - . ' - Der aktuelle Beschattungsstatus ist: ' - . $shutters->getShadingStatus - . ' und somit wird nun in die Position: ' - . $getShadingPos - . ' zum Beschatten gefahren' ); - } + ASC_Debug( 'ShadingProcessingDriveCommand: ' + . $shutters->getShuttersDev + . ' - Der aktuelle Beschattungsstatus ist: ' + . $shutters->getShadingStatus + . ' und somit wird nun in die Position: ' + . $getShadingPos + . ' zum Beschatten gefahren' ); } elsif ($shutters->getShadingStatus eq 'out' && $getShadingPos == $getStatus ) @@ -2775,14 +2775,12 @@ sub ShuttersCommandSet { if ( ( - $posValue == $shutters->getShadingPos - && ( - CheckIfShuttersWindowRecOpen($shuttersDev) == 2 - && $shutters->getShuttersPlace eq 'terrace' - && ( $shutters->getLockOut eq 'soft' - || $shutters->getLockOut eq 'hard' ) - && !$shutters->getQueryShuttersPos($posValue) - ) + $posValue == $shutters->getShadingPos + && CheckIfShuttersWindowRecOpen($shuttersDev) == 2 + && $shutters->getShuttersPlace eq 'terrace' + && ( $shutters->getLockOut eq 'soft' + || $shutters->getLockOut eq 'hard' ) + && !$shutters->getQueryShuttersPos($posValue) ) || ( $posValue != $shutters->getShadingPos