From 7009423fa9f7614b204cffbd39ffdfd33e74d7db Mon Sep 17 00:00:00 2001 From: Marko Oldenburg Date: Sun, 22 Sep 2019 08:10:55 +0200 Subject: [PATCH] fix party mode then close window --- 73_AutoShuttersControl.pm | 118 ++++++++++++++++++++++---------------- 1 file changed, 67 insertions(+), 51 deletions(-) diff --git a/73_AutoShuttersControl.pm b/73_AutoShuttersControl.pm index ca6bd95..de006c9 100644 --- a/73_AutoShuttersControl.pm +++ b/73_AutoShuttersControl.pm @@ -2332,7 +2332,8 @@ sub EventProcessingPartyMode($) { ); } } - elsif ( $shutters->getIsDay + elsif ( $shutters->getDelayCmd ne 'none' + and $shutters->getIsDay and IsAfterShuttersManualBlocking($shuttersDev) ) { $shutters->setLastDrive('drive after party mode'); @@ -3961,63 +3962,78 @@ sub setDriveCmd { my $offSet; my $offSetStart; - ### antifreeze Routine - if ( $shutters->getFreezeStatus > 0 ) { - if ( $shutters->getFreezeStatus != 1 ) { - $posValue = $shutters->getStatus; - $shutters->setLastDrive('no drive - antifreeze defense'); - $shutters->setLastDriveReading; - $ascDev->setStateReading; - } - elsif ( $posValue == $shutters->getClosedPos ) { - $posValue = $shutters->getAntiFreezePos; - $shutters->setLastDrive( - $shutters->getLastDrive . ' - antifreeze mode' ); - } + if ( $shutters->getPartyMode eq 'on' + and $ascDev->getPartyMode eq 'on' ) { + + $shutters->setDelayCmd($posValue); + $ascDev->setDelayCmdReading; + $shutters->setNoDelay(0); + + FHEM::AutoShuttersControl::ASC_Debug( 'setDriveCmd: ' + . $shutters->getShuttersDev + . ' - Die Fahrt wird zurĆ¼ckgestellt. Grund kann ein geƶffnetes Fenster sein oder ein aktivierter Party Modus' + ); } + else { + ### antifreeze Routine + if ( $shutters->getFreezeStatus > 0 ) { + if ( $shutters->getFreezeStatus != 1 ) { - my %h = ( - shuttersDev => $self->{shuttersDev}, - posValue => $posValue, - ); + $posValue = $shutters->getStatus; + $shutters->setLastDrive('no drive - antifreeze defense'); + $shutters->setLastDriveReading; + $ascDev->setStateReading; + } + elsif ( $posValue == $shutters->getClosedPos ) { + $posValue = $shutters->getAntiFreezePos; + $shutters->setLastDrive( + $shutters->getLastDrive . ' - antifreeze mode' ); + } + } - $offSet = $shutters->getDelay if ( $shutters->getDelay > -1 ); - $offSet = $ascDev->getShuttersOffset if ( $shutters->getDelay < 0 ); - $offSetStart = $shutters->getDelayStart; + my %h = ( + shuttersDev => $self->{shuttersDev}, + posValue => $posValue, + ); - if ( $shutters->getSelfDefenseAbsent - and not $shutters->getSelfDefenseAbsentTimerrun - and $shutters->getSelfDefenseMode ne 'off' - and $shutters->getLastDrive eq 'selfDefense active' - and $ascDev->getSelfDefense eq 'on' ) - { - InternalTimer( gettimeofday() + $shutters->getSelfDefenseAbsentDelay, - 'FHEM::AutoShuttersControl::_SetCmdFn', \%h ); - $shutters->setSelfDefenseAbsent( 1, 0, \%h ); - } - elsif ( $offSetStart > 0 and not $shutters->getNoDelay ) { - InternalTimer( - gettimeofday() + int( rand($offSet) + $shutters->getDelayStart ), - 'FHEM::AutoShuttersControl::_SetCmdFn', \%h ); + $offSet = $shutters->getDelay if ( $shutters->getDelay > -1 ); + $offSet = $ascDev->getShuttersOffset if ( $shutters->getDelay < 0 ); + $offSetStart = $shutters->getDelayStart; + + if ( $shutters->getSelfDefenseAbsent + and not $shutters->getSelfDefenseAbsentTimerrun + and $shutters->getSelfDefenseMode ne 'off' + and $shutters->getLastDrive eq 'selfDefense active' + and $ascDev->getSelfDefense eq 'on' ) + { + InternalTimer( gettimeofday() + $shutters->getSelfDefenseAbsentDelay, + 'FHEM::AutoShuttersControl::_SetCmdFn', \%h ); + $shutters->setSelfDefenseAbsent( 1, 0, \%h ); + } + elsif ( $offSetStart > 0 and not $shutters->getNoDelay ) { + InternalTimer( + gettimeofday() + int( rand($offSet) + $shutters->getDelayStart ), + 'FHEM::AutoShuttersControl::_SetCmdFn', \%h ); + + FHEM::AutoShuttersControl::ASC_Debug( 'FnSetDriveCmd: ' + . $shutters->getShuttersDev + . ' - versetztes fahren' ); + } + elsif ( $offSetStart < 1 or $shutters->getNoDelay ) { + FHEM::AutoShuttersControl::_SetCmdFn( \%h ); + FHEM::AutoShuttersControl::ASC_Debug( 'FnSetDriveCmd: ' + . $shutters->getShuttersDev + . ' - NICHT versetztes fahren' ); + } FHEM::AutoShuttersControl::ASC_Debug( 'FnSetDriveCmd: ' - . $shutters->getShuttersDev - . ' - versetztes fahren' ); + . $shutters->getShuttersDev + . ' - NoDelay: ' + . ( $shutters->getNoDelay ? 'JA' : 'NEIN' ) ); + $shutters->setNoDelay(0); + return 0; } - elsif ( $offSetStart < 1 or $shutters->getNoDelay ) { - FHEM::AutoShuttersControl::_SetCmdFn( \%h ); - FHEM::AutoShuttersControl::ASC_Debug( 'FnSetDriveCmd: ' - . $shutters->getShuttersDev - . ' - NICHT versetztes fahren' ); - } - - FHEM::AutoShuttersControl::ASC_Debug( 'FnSetDriveCmd: ' - . $shutters->getShuttersDev - . ' - NoDelay: ' - . ( $shutters->getNoDelay ? 'JA' : 'NEIN' ) ); - $shutters->setNoDelay(0); - return 0; } sub setSunsetUnixTime { @@ -6991,7 +7007,7 @@ sub getblockAscDrivesAfterManual { ], "release_status": "under develop", "license": "GPL_2", - "version": "v0.6.104", + "version": "v0.6.105", "author": [ "Marko Oldenburg " ],