fix party mode then close window

This commit is contained in:
Marko Oldenburg 2019-09-22 08:10:55 +02:00
parent 7d47fae3a7
commit 7009423fa9

View File

@ -2332,7 +2332,8 @@ sub EventProcessingPartyMode($) {
); );
} }
} }
elsif ( $shutters->getIsDay elsif ( $shutters->getDelayCmd ne 'none'
and $shutters->getIsDay
and IsAfterShuttersManualBlocking($shuttersDev) ) and IsAfterShuttersManualBlocking($shuttersDev) )
{ {
$shutters->setLastDrive('drive after party mode'); $shutters->setLastDrive('drive after party mode');
@ -3961,63 +3962,78 @@ sub setDriveCmd {
my $offSet; my $offSet;
my $offSetStart; my $offSetStart;
### antifreeze Routine
if ( $shutters->getFreezeStatus > 0 ) {
if ( $shutters->getFreezeStatus != 1 ) {
$posValue = $shutters->getStatus; if ( $shutters->getPartyMode eq 'on'
$shutters->setLastDrive('no drive - antifreeze defense'); and $ascDev->getPartyMode eq 'on' ) {
$shutters->setLastDriveReading;
$ascDev->setStateReading; $shutters->setDelayCmd($posValue);
} $ascDev->setDelayCmdReading;
elsif ( $posValue == $shutters->getClosedPos ) { $shutters->setNoDelay(0);
$posValue = $shutters->getAntiFreezePos;
$shutters->setLastDrive( FHEM::AutoShuttersControl::ASC_Debug( 'setDriveCmd: '
$shutters->getLastDrive . ' - antifreeze mode' ); . $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 = ( $posValue = $shutters->getStatus;
shuttersDev => $self->{shuttersDev}, $shutters->setLastDrive('no drive - antifreeze defense');
posValue => $posValue, $shutters->setLastDriveReading;
); $ascDev->setStateReading;
}
elsif ( $posValue == $shutters->getClosedPos ) {
$posValue = $shutters->getAntiFreezePos;
$shutters->setLastDrive(
$shutters->getLastDrive . ' - antifreeze mode' );
}
}
$offSet = $shutters->getDelay if ( $shutters->getDelay > -1 ); my %h = (
$offSet = $ascDev->getShuttersOffset if ( $shutters->getDelay < 0 ); shuttersDev => $self->{shuttersDev},
$offSetStart = $shutters->getDelayStart; posValue => $posValue,
);
if ( $shutters->getSelfDefenseAbsent $offSet = $shutters->getDelay if ( $shutters->getDelay > -1 );
and not $shutters->getSelfDefenseAbsentTimerrun $offSet = $ascDev->getShuttersOffset if ( $shutters->getDelay < 0 );
and $shutters->getSelfDefenseMode ne 'off' $offSetStart = $shutters->getDelayStart;
and $shutters->getLastDrive eq 'selfDefense active'
and $ascDev->getSelfDefense eq 'on' ) if ( $shutters->getSelfDefenseAbsent
{ and not $shutters->getSelfDefenseAbsentTimerrun
InternalTimer( gettimeofday() + $shutters->getSelfDefenseAbsentDelay, and $shutters->getSelfDefenseMode ne 'off'
'FHEM::AutoShuttersControl::_SetCmdFn', \%h ); and $shutters->getLastDrive eq 'selfDefense active'
$shutters->setSelfDefenseAbsent( 1, 0, \%h ); and $ascDev->getSelfDefense eq 'on' )
} {
elsif ( $offSetStart > 0 and not $shutters->getNoDelay ) { InternalTimer( gettimeofday() + $shutters->getSelfDefenseAbsentDelay,
InternalTimer( 'FHEM::AutoShuttersControl::_SetCmdFn', \%h );
gettimeofday() + int( rand($offSet) + $shutters->getDelayStart ), $shutters->setSelfDefenseAbsent( 1, 0, \%h );
'FHEM::AutoShuttersControl::_SetCmdFn', \%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: ' FHEM::AutoShuttersControl::ASC_Debug( 'FnSetDriveCmd: '
. $shutters->getShuttersDev . $shutters->getShuttersDev
. ' - versetztes fahren' ); . ' - 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 { sub setSunsetUnixTime {
@ -6991,7 +7007,7 @@ sub getblockAscDrivesAfterManual {
], ],
"release_status": "under develop", "release_status": "under develop",
"license": "GPL_2", "license": "GPL_2",
"version": "v0.6.104", "version": "v0.6.105",
"author": [ "author": [
"Marko Oldenburg <leongaultier@gmail.com>" "Marko Oldenburg <leongaultier@gmail.com>"
], ],