add first code to delay no rain drive

This commit is contained in:
Marko Oldenburg 2019-10-04 06:14:54 +02:00
parent df3006fe25
commit bd39083d67

View File

@ -1511,40 +1511,46 @@ sub EventProcessingRain($@) {
if ( $1 eq 'rain' ) { $val = $triggerMax + 1 } if ( $1 eq 'rain' ) { $val = $triggerMax + 1 }
elsif ( $1 eq 'dry' ) { $val = $triggerMin } elsif ( $1 eq 'dry' ) { $val = $triggerMin }
else { $val = $1 } else { $val = $1 }
RainProtection($val,$triggerMax,$closedPos);
}
}
foreach my $shuttersDev ( @{ $hash->{helper}{shuttersList} } ) { sub RainProtection(@)
$shutters->setShuttersDev($shuttersDev); my ($val,$triggerMax,$closedPos) = @_;
next foreach my $shuttersDev ( @{ $hash->{helper}{shuttersList} } ) {
if ( $shutters->getRainProtection eq 'off' ); $shutters->setShuttersDev($shuttersDev);
if ( $val > $triggerMax next
and $shutters->getStatus != $closedPos if ( $shutters->getRainProtection eq 'off' );
and IsAfterShuttersManualBlocking($shuttersDev)
and $shutters->getRainProtectionStatus eq 'unprotected' ) if ( $val > $triggerMax
{ and $shutters->getStatus != $closedPos
$shutters->setLastDrive('rain protected'); and IsAfterShuttersManualBlocking($shuttersDev)
$shutters->setDriveCmd($closedPos); and $shutters->getRainProtectionStatus eq 'unprotected' )
$shutters->setRainProtectionStatus('protected'); {
} $shutters->setLastDrive('rain protected');
elsif ( ( $val == 0 or $val < $triggerMax ) $shutters->setDriveCmd($closedPos);
and $shutters->getStatus == $closedPos $shutters->setRainProtectionStatus('protected');
and IsAfterShuttersManualBlocking($shuttersDev) }
and $shutters->getRainProtectionStatus eq 'protected' ) elsif ( ( $val == 0 or $val < $triggerMax )
{ and $shutters->getStatus == $closedPos
$shutters->setLastDrive('rain un-protected'); and IsAfterShuttersManualBlocking($shuttersDev)
$shutters->setDriveCmd( and $shutters->getRainProtectionStatus eq 'protected' )
( {
$shutters->getIsDay ? $shutters->getLastPos $shutters->setLastDrive('rain un-protected');
: ( $shutters->setDriveCmd(
$shutters->getPrivacyDownStatus == 2 (
? $shutters->getPrivacyDownPos $shutters->getIsDay ? $shutters->getLastPos
: $shutters->getClosedPos : (
) $shutters->getPrivacyDownStatus == 2
? $shutters->getPrivacyDownPos
: $shutters->getClosedPos
) )
); )
$shutters->setRainProtectionStatus('unprotected'); );
} $shutters->setRainProtectionStatus('unprotected');
} }
} }
} }
@ -5978,7 +5984,7 @@ sub _getRainSensor {
if ( exists( $self->{ASC_rainSensor}->{LASTGETTIME} ) if ( exists( $self->{ASC_rainSensor}->{LASTGETTIME} )
and ( gettimeofday() - $self->{ASC_rainSensor}->{LASTGETTIME} ) < 2 ); and ( gettimeofday() - $self->{ASC_rainSensor}->{LASTGETTIME} ) < 2 );
$self->{ASC_rainSensor}->{LASTGETTIME} = int( gettimeofday() ); $self->{ASC_rainSensor}->{LASTGETTIME} = int( gettimeofday() );
my ( $device, $reading, $max, $hyst, $pos ) = my ( $device, $reading, $max, $hyst, $pos, $wait ) =
FHEM::AutoShuttersControl::GetAttrValues( $name, 'ASC_rainSensor', FHEM::AutoShuttersControl::GetAttrValues( $name, 'ASC_rainSensor',
'none' ); 'none' );
@ -5997,6 +6003,8 @@ sub _getRainSensor {
); );
$self->{ASC_rainSensor}->{shuttersClosedPos} = $self->{ASC_rainSensor}->{shuttersClosedPos} =
( $pos ne 'none' ? $pos : $shutters->getClosedPos ); ( $pos ne 'none' ? $pos : $shutters->getClosedPos );
$self->{ASC_rainSensor}->{waitingTime} =
( $pos ne 'none' ? $wait : 900 );
return $self->{ASC_rainSensor}->{device}; return $self->{ASC_rainSensor}->{device};
} }
@ -6045,6 +6053,17 @@ sub getRainSensorShuttersClosedPos {
return $self->{ASC_rainSensor}->{shuttersClosedPos}; return $self->{ASC_rainSensor}->{shuttersClosedPos};
} }
sub getRainWaitingTime {
my $self = shift;
my $name = $self->{name};
return $self->{ASC_rainSensor}->{waitingTime}
if ( exists( $self->{ASC_rainSensor}->{LASTGETTIME} )
and ( gettimeofday() - $self->{ASC_rainSensor}->{LASTGETTIME} ) < 2 );
$ascDev->_getRainSensor;
return $self->{ASC_rainSensor}->{waitingTime};
}
sub _getWindSensor { sub _getWindSensor {
my $self = shift; my $self = shift;
my $name = $self->{name}; my $name = $self->{name};