diff --git a/73_AutoShuttersControl.pm b/73_AutoShuttersControl.pm index 684f8cc..2133abb 100644 --- a/73_AutoShuttersControl.pm +++ b/73_AutoShuttersControl.pm @@ -2609,6 +2609,7 @@ sub EventProcessingExternalTriggerDevice($@) { $shutters->setLastDrive('external trigger device active'); $shutters->setNoDelay(1); + $shutters->setExternalTriggerState(1); ShuttersCommandSet( $hash, $shuttersDev, $triggerPosActive ); } elsif ( @@ -2625,6 +2626,7 @@ sub EventProcessingExternalTriggerDevice($@) { $shutters->setLastDrive('external trigger device inactive'); $shutters->setNoDelay(1); + $shutters->setExternalTriggerState(1); ShuttersCommandSet( $hash, $shuttersDev, $triggerPosInactive ); } @@ -4349,12 +4351,15 @@ sub setDriveCmd { ( $shutters->getPartyMode eq 'on' and $ascDev->getPartyMode eq 'on' ) or ( $shutters->getAdv and not $shutters->getQueryShuttersPos($posValue) - and not $shutters->getAdvDelay ) + and not $shutters->getAdvDelay + and not $shutters->getExternalTriggerState) ) { $shutters->setDelayCmd($posValue); $ascDev->setDelayCmdReading; $shutters->setNoDelay(0); + $shutters->setExternalTriggerState(0) + if ( $shutters->getExternalTriggerState ); FHEM::AutoShuttersControl::ASC_Debug( 'setDriveCmd: ' . $shutters->getShuttersDev @@ -4367,6 +4372,8 @@ sub setDriveCmd { $shutters->setDelayCmd('none') if ( $shutters->getDelayCmd ne 'none' ) ; # setzt den Wert auf none da der Rolladen nun gesteuert werden kann. + $shutters->setExternalTriggerState(0) + if ( $shutters->getExternalTriggerState ); ### antifreeze Routine if ( $shutters->getFreezeStatus > 0 ) { @@ -4888,6 +4895,14 @@ sub setRainProtectionStatus { # Werte protected, unprotected return 0; } +sub setExternalTriggerState { + my ( $self, $value ) = @_; + + $self->{ $self->{shuttersDev} }->{ASC_ExternalTrigger}->{event} = $value + if ( defined($value) ); + return 0; +} + sub setPushBrightnessInArray { my ( $self, $value ) = @_; @@ -5726,6 +5741,13 @@ sub getExternalTriggerPosInactive { ->{posinactive}; } +sub getExternalTriggerState { + my $self = shift; + + return ( (defined($self->{ $self->{shuttersDev} }->{ASC_ExternalTrigger}->{event}) + and $self->{ $self->{shuttersDev} }->{ASC_ExternalTrigger}->{event}) ? 1 : 0 ); +} + sub getDelay { my $self = shift; @@ -7559,8 +7581,8 @@ sub getblockAscDrivesAfterManual { In den Rollläden-Geräten @@ -7568,7 +7590,7 @@ sub getblockAscDrivesAfterManual { Set