add remove DelayTimer or set new then new rain protection trigger

This commit is contained in:
Marko Oldenburg 2021-05-18 08:38:31 +02:00
parent aadc88c570
commit 774fe63a26
3 changed files with 59 additions and 39 deletions

View File

@ -1,10 +1,10 @@
UPD 2021-05-17_14:25:13 97974 FHEM/73_AutoShuttersControl.pm UPD 2021-05-17_14:30:37 97974 FHEM/73_AutoShuttersControl.pm
UPD 2021-05-17_14:25:13 74350 lib/FHEM/Automation/ShuttersControl.pm UPD 2021-05-17_14:34:49 74350 lib/FHEM/Automation/ShuttersControl.pm
UPD 2020-06-22_09:41:40 2657 lib/FHEM/Automation/ShuttersControl/Dev.pm UPD 2020-06-22_09:41:40 2657 lib/FHEM/Automation/ShuttersControl/Dev.pm
UPD 2020-07-26_17:36:29 2496 lib/FHEM/Automation/ShuttersControl/Roommate.pm UPD 2020-07-26_17:36:29 2496 lib/FHEM/Automation/ShuttersControl/Roommate.pm
UPD 2021-02-26_14:36:10 31487 lib/FHEM/Automation/ShuttersControl/Shutters.pm UPD 2021-05-18_08:26:00 32241 lib/FHEM/Automation/ShuttersControl/Shutters.pm
UPD 2021-05-10_08:26:03 25329 lib/FHEM/Automation/ShuttersControl/Shading.pm UPD 2021-05-17_14:30:37 25329 lib/FHEM/Automation/ShuttersControl/Shading.pm
UPD 2021-05-17_14:26:04 108472 lib/FHEM/Automation/ShuttersControl/EventProcessingFunctions.pm UPD 2021-05-17_14:34:49 108472 lib/FHEM/Automation/ShuttersControl/EventProcessingFunctions.pm
UPD 2021-02-26_14:36:10 40628 lib/FHEM/Automation/ShuttersControl/Helper.pm UPD 2021-02-26_14:36:10 40628 lib/FHEM/Automation/ShuttersControl/Helper.pm
UPD 2020-06-22_09:41:40 2175 lib/FHEM/Automation/ShuttersControl/Window.pm UPD 2020-06-22_09:41:40 2175 lib/FHEM/Automation/ShuttersControl/Window.pm
UPD 2021-04-27_07:52:31 11742 lib/FHEM/Automation/ShuttersControl/Dev/Attr.pm UPD 2021-04-27_07:52:31 11742 lib/FHEM/Automation/ShuttersControl/Dev/Attr.pm
@ -13,4 +13,4 @@ UPD 2021-01-29_10:06:33 52525 lib/FHEM/Automation/ShuttersControl/Shutters/Attr.
UPD 2020-06-22_09:41:40 2903 lib/FHEM/Automation/ShuttersControl/Shutters/Readings.pm UPD 2020-06-22_09:41:40 2903 lib/FHEM/Automation/ShuttersControl/Shutters/Readings.pm
UPD 2021-01-29_10:06:33 3980 lib/FHEM/Automation/ShuttersControl/Window/Attr.pm UPD 2021-01-29_10:06:33 3980 lib/FHEM/Automation/ShuttersControl/Window/Attr.pm
UPD 2020-06-22_09:41:40 2288 lib/FHEM/Automation/ShuttersControl/Window/Readings.pm UPD 2020-06-22_09:41:40 2288 lib/FHEM/Automation/ShuttersControl/Window/Readings.pm
UPD 2021-05-17_14:26:04 5159 lib/FHEM/Automation/ShuttersControl/Rainprotection.pm UPD 2021-05-18_08:38:16 5582 lib/FHEM/Automation/ShuttersControl/Rainprotection.pm

View File

@ -93,6 +93,12 @@ sub RainProcessing {
my %funcHash = ( my %funcHash = (
shuttersdevice => $shuttersDev, shuttersdevice => $shuttersDev,
); );
::RemoveInternalTimer($FHEM::Automation::ShuttersControl::shutters->getRainUnprotectionDelayObj)
if($FHEM::Automation::ShuttersControl::shutters->getRainUnprotectionDelayObj ne 'none');
$FHEM::Automation::ShuttersControl::shutters->getRainUnprotectionDelayObj
$FHEM::Automation::ShuttersControl::shutters->setRainUnprotectionDelayObj(\%funcHash);
::InternalTimer( ::gettimeofday() + $FHEM::Automation::ShuttersControl::ascDev->getRainWaitingTime ::InternalTimer( ::gettimeofday() + $FHEM::Automation::ShuttersControl::ascDev->getRainWaitingTime
, \&_RainUnprotected , \&_RainUnprotected

View File

@ -57,22 +57,6 @@ use strict;
use warnings; use warnings;
use utf8; use utf8;
use GPUtils qw(GP_Import);
## Import der FHEM Funktionen
BEGIN {
GP_Import(
qw(
defs
ReadingsVal
readingsSingleUpdate
gettimeofday
InternalTimer
CommandSet
Log3)
);
}
sub new { sub new {
my $class = shift; my $class = shift;
my $self = { my $self = {
@ -114,15 +98,15 @@ sub setHardLockOut {
&& $FHEM::Automation::ShuttersControl::shutters->getLockOutCmd ne && $FHEM::Automation::ShuttersControl::shutters->getLockOutCmd ne
'none' ) 'none' )
{ {
CommandSet( undef, $self->{shuttersDev} . ' inhibit ' . $cmd ) ::CommandSet( undef, $self->{shuttersDev} . ' inhibit ' . $cmd )
if ( $FHEM::Automation::ShuttersControl::shutters->getLockOutCmd eq if ( $FHEM::Automation::ShuttersControl::shutters->getLockOutCmd eq
'inhibit' ); 'inhibit' );
CommandSet( undef, ::CommandSet( undef,
$self->{shuttersDev} . ' ' $self->{shuttersDev} . ' '
. ( $cmd eq 'on' ? 'blocked' : 'unblocked' ) ) . ( $cmd eq 'on' ? 'blocked' : 'unblocked' ) )
if ( $FHEM::Automation::ShuttersControl::shutters->getLockOutCmd eq if ( $FHEM::Automation::ShuttersControl::shutters->getLockOutCmd eq
'blocked' ); 'blocked' );
CommandSet( undef, ::CommandSet( undef,
$self->{shuttersDev} . ' ' $self->{shuttersDev} . ' '
. ( $cmd eq 'on' ? 'protectionOn' : 'protectionOff' ) ) . ( $cmd eq 'on' ? 'protectionOn' : 'protectionOff' ) )
if ( $FHEM::Automation::ShuttersControl::shutters->getLockOutCmd eq if ( $FHEM::Automation::ShuttersControl::shutters->getLockOutCmd eq
@ -223,6 +207,12 @@ sub setDriveCmd {
. ' - antifreeze mode' ); . ' - antifreeze mode' );
} }
} }
### Rainprotection unprotected Delay Routine
if ( $shutters->getRainUnprotectionDelayObj ne 'none' ) {
::Remove::InternalTimer($FHEM::Automation::ShuttersControl::shutters->getRainUnprotectionDelayObj);
$FHEM::Automation::ShuttersControl::shutters->setRainUnprotectionDelayObj('none');
}
my %h = ( my %h = (
shuttersDev => $self->{shuttersDev}, shuttersDev => $self->{shuttersDev},
@ -245,8 +235,8 @@ sub setDriveCmd {
&& $FHEM::Automation::ShuttersControl::ascDev->getSelfDefense eq && $FHEM::Automation::ShuttersControl::ascDev->getSelfDefense eq
'on' ) 'on' )
{ {
InternalTimer( ::InternalTimer(
gettimeofday() + ::gettimeofday() +
$FHEM::Automation::ShuttersControl::shutters $FHEM::Automation::ShuttersControl::shutters
->getSelfDefenseAbsentDelay, ->getSelfDefenseAbsentDelay,
\&FHEM::Automation::ShuttersControl::_SetCmdFn, \%h \&FHEM::Automation::ShuttersControl::_SetCmdFn, \%h
@ -257,8 +247,8 @@ sub setDriveCmd {
elsif ( $offSetStart > 0 elsif ( $offSetStart > 0
&& !$FHEM::Automation::ShuttersControl::shutters->getNoDelay ) && !$FHEM::Automation::ShuttersControl::shutters->getNoDelay )
{ {
InternalTimer( ::InternalTimer(
gettimeofday() + int( ::gettimeofday() + int(
rand($offSet) + rand($offSet) +
$FHEM::Automation::ShuttersControl::shutters $FHEM::Automation::ShuttersControl::shutters
->getDelayStart ->getDelayStart
@ -354,14 +344,14 @@ sub setPosSetCmd {
sub setLastDriveReading { sub setLastDriveReading {
my $self = shift; my $self = shift;
my $shuttersDevHash = $defs{ $self->{shuttersDev} }; my $shuttersDevHash = $::defs{ $self->{shuttersDev} };
my %h = ( my %h = (
devHash => $shuttersDevHash, devHash => $shuttersDevHash,
lastDrive => $FHEM::Automation::ShuttersControl::shutters->getLastDrive, lastDrive => $FHEM::Automation::ShuttersControl::shutters->getLastDrive,
); );
InternalTimer( gettimeofday() + 0.1, ::InternalTimer( ::gettimeofday() + 0.1,
\&FHEM::Automation::ShuttersControl::_setShuttersLastDriveDelayed, \&FHEM::Automation::ShuttersControl::_setShuttersLastDriveDelayed,
\%h ); \%h );
return; return;
@ -375,7 +365,7 @@ sub setLastPos {
$self->{ $self->{shuttersDev} }{lastPos}{VAL} = $position $self->{ $self->{shuttersDev} }{lastPos}{VAL} = $position
if ( defined($position) ); if ( defined($position) );
$self->{ $self->{shuttersDev} }{lastPos}{TIME} = int( gettimeofday() ) $self->{ $self->{shuttersDev} }{lastPos}{TIME} = int( ::gettimeofday() )
if ( defined( $self->{ $self->{shuttersDev} }{lastPos} ) ); if ( defined( $self->{ $self->{shuttersDev} }{lastPos} ) );
return; return;
} }
@ -386,11 +376,11 @@ sub setLastManPos {
$self->{ $self->{shuttersDev} }{lastManPos}{VAL} = $position $self->{ $self->{shuttersDev} }{lastManPos}{VAL} = $position
if ( defined($position) ); if ( defined($position) );
$self->{ $self->{shuttersDev} }{lastManPos}{TIME} = int( gettimeofday() ) $self->{ $self->{shuttersDev} }{lastManPos}{TIME} = int( ::gettimeofday() )
if ( defined( $self->{ $self->{shuttersDev} }{lastManPos} ) if ( defined( $self->{ $self->{shuttersDev} }{lastManPos} )
&& defined( $self->{ $self->{shuttersDev} }{lastManPos}{TIME} ) ); && defined( $self->{ $self->{shuttersDev} }{lastManPos}{TIME} ) );
$self->{ $self->{shuttersDev} }{lastManPos}{TIME} = $self->{ $self->{shuttersDev} }{lastManPos}{TIME} =
int( gettimeofday() ) - 86400 int( ::gettimeofday() ) - 86400
if ( defined( $self->{ $self->{shuttersDev} }{lastManPos} ) if ( defined( $self->{ $self->{shuttersDev} }{lastManPos} )
&& !defined( $self->{ $self->{shuttersDev} }{lastManPos}{TIME} ) ); && !defined( $self->{ $self->{shuttersDev} }{lastManPos}{TIME} ) );
return; return;
@ -472,6 +462,15 @@ sub setRainProtectionStatus { # Werte protected, unprotected
return; return;
} }
sub setRainUnprotectionDelayObj {
my $self = shift;
my $value = shift;
$self->{ $self->{shuttersDev} }->{RainProtection}->{UNPROTECTIONDELAYOBJVAL} = $value
if ( defined($value) );
return;
}
sub setExternalTriggerStatus { sub setExternalTriggerStatus {
my $self = shift; my $self = shift;
my $value = shift; my $value = shift;
@ -666,7 +665,7 @@ sub getLastDrive {
my $self = shift; my $self = shift;
$self->{ $self->{shuttersDev} }{lastDrive} = $self->{ $self->{shuttersDev} }{lastDrive} =
ReadingsVal( $self->{shuttersDev}, 'ASC_ShuttersLastDrive', 'none' ) ::ReadingsVal( $self->{shuttersDev}, 'ASC_ShuttersLastDrive', 'none' )
if ( !defined( $self->{ $self->{shuttersDev} }{lastDrive} ) ); if ( !defined( $self->{ $self->{shuttersDev} }{lastDrive} ) );
return $self->{ $self->{shuttersDev} }{lastDrive}; return $self->{ $self->{shuttersDev} }{lastDrive};
@ -756,6 +755,21 @@ sub getRainProtectionStatus { # Werte protected, unprotected
); );
} }
sub getRainUnprotectionDelayObj {
my $self = shift;
return (
(
defined( $self->{ $self->{shuttersDev} }->{RainProtection} )
&& defined(
$self->{ $self->{shuttersDev} }->{RainProtection}->{UNPROTECTIONDELAYOBJVAL}
)
)
? $self->{ $self->{shuttersDev} }->{RainProtection}->{UNPROTECTIONDELAYOBJVAL}
: 'none'
);
}
sub getSunsetUnixTime { sub getSunsetUnixTime {
my $self = shift; my $self = shift;
@ -857,7 +871,7 @@ sub getRoommatesLastStatus {
sub getOutTemp { sub getOutTemp {
my $self = shift; my $self = shift;
return ReadingsVal( return ::ReadingsVal(
$FHEM::Automation::ShuttersControl::shutters->_getTempSensor, $FHEM::Automation::ShuttersControl::shutters->_getTempSensor,
$FHEM::Automation::ShuttersControl::shutters->getTempSensorReading, $FHEM::Automation::ShuttersControl::shutters->getTempSensorReading,
-100 ); -100 );
@ -866,7 +880,7 @@ sub getOutTemp {
sub getIdleDetection { sub getIdleDetection {
my $self = shift; my $self = shift;
return ReadingsVal( return ::ReadingsVal(
$self->{shuttersDev}, $self->{shuttersDev},
$FHEM::Automation::ShuttersControl::shutters->_getIdleDetectionReading, $FHEM::Automation::ShuttersControl::shutters->_getIdleDetectionReading,
'none' 'none'
@ -891,7 +905,7 @@ sub setShadingStatus {
$self->{ $self->{shuttersDev} }{ShadingStatus}{VAL} = $value $self->{ $self->{shuttersDev} }{ShadingStatus}{VAL} = $value
if ( defined($value) ); if ( defined($value) );
$self->{ $self->{shuttersDev} }{ShadingStatus}{TIME} = int( gettimeofday() ) $self->{ $self->{shuttersDev} }{ShadingStatus}{TIME} = int( ::gettimeofday() )
if ( defined( $self->{ $self->{shuttersDev} }{ShadingStatus} ) ); if ( defined( $self->{ $self->{shuttersDev} }{ShadingStatus} ) );
return; return;
@ -909,7 +923,7 @@ sub setShadingLastStatus {
$self->{ $self->{shuttersDev} }{ShadingLastStatus}{VAL} = $value $self->{ $self->{shuttersDev} }{ShadingLastStatus}{VAL} = $value
if ( defined($value) ); if ( defined($value) );
$self->{ $self->{shuttersDev} }{ShadingLastStatus}{TIME} = $self->{ $self->{shuttersDev} }{ShadingLastStatus}{TIME} =
int( gettimeofday() ) int( ::gettimeofday() )
if ( defined( $self->{ $self->{shuttersDev} }{ShadingLastStatus} ) ); if ( defined( $self->{ $self->{shuttersDev} }{ShadingLastStatus} ) );
$self->{ $self->{shuttersDev} }{ShadingManualDriveStatus}{VAL} = 0 $self->{ $self->{shuttersDev} }{ShadingManualDriveStatus}{VAL} = 0
if ( $value eq 'out' ); if ( $value eq 'out' );