mirror of
https://github.com/fhem/fhem-mirror.git
synced 2025-02-01 01:09:47 +00:00
73_AutoShuttersControl: add abort rain unprotection waiting time
git-svn-id: https://svn.fhem.de/fhem/trunk@24470 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
parent
b2cd54325f
commit
73989fdb8c
@ -1265,7 +1265,7 @@ sub Initialize {
|
||||
],
|
||||
"release_status": "stable",
|
||||
"license": "GPL_2",
|
||||
"version": "v0.10.13",
|
||||
"version": "v0.10.14",
|
||||
"author": [
|
||||
"Marko Oldenburg <fhemdevelopment@cooltux.net>"
|
||||
],
|
||||
|
@ -282,7 +282,7 @@ sub _getRainSensor {
|
||||
? $pos
|
||||
: $FHEM::Automation::ShuttersControl::shutters->getClosedPos );
|
||||
$self->{ASC_rainSensor}->{waitingTime} =
|
||||
( $pos ne 'none' ? $wait : 900 );
|
||||
( $wait ne 'none' ? $wait : 0 );
|
||||
|
||||
return $self->{ASC_rainSensor}->{device};
|
||||
}
|
||||
|
@ -79,24 +79,33 @@ sub RainProcessing {
|
||||
&& $FHEM::Automation::ShuttersControl::shutters->getStatus !=
|
||||
$rainClosedPos
|
||||
&& $FHEM::Automation::ShuttersControl::shutters
|
||||
->getRainProtectionStatus eq 'unprotected' )
|
||||
->getRainProtectionStatus eq 'unprotected'
|
||||
|| ( $FHEM::Automation::ShuttersControl::shutters
|
||||
->getRainProtectionStatus eq 'unprotected'
|
||||
&& $FHEM::Automation::ShuttersControl::shutters
|
||||
->getRainUnprotectionDelayObj ne 'none')
|
||||
)
|
||||
{
|
||||
_RainProtected();
|
||||
}
|
||||
elsif ( ( $val == 0 || $val < $triggerMin )
|
||||
&& $FHEM::Automation::ShuttersControl::shutters->getStatus ==
|
||||
$rainClosedPos
|
||||
$rainClosedPos
|
||||
&& IsAfterShuttersManualBlocking($shuttersDev)
|
||||
&& $FHEM::Automation::ShuttersControl::shutters
|
||||
->getRainProtectionStatus eq 'protected' )
|
||||
->getRainProtectionStatus eq 'protected' )
|
||||
{
|
||||
my %funcHash = (
|
||||
shuttersdevice => $shuttersDev,
|
||||
);
|
||||
|
||||
$FHEM::Automation::ShuttersControl::shutters->setRainUnprotectionDelayObj(\%funcHash);
|
||||
::InternalTimer( ::gettimeofday() + $FHEM::Automation::ShuttersControl::ascDev->getRainWaitingTime
|
||||
, \&_RainUnprotected
|
||||
, \%funcHash );
|
||||
|
||||
$FHEM::Automation::ShuttersControl::shutters
|
||||
->setRainProtectionStatus('unprotected');
|
||||
}
|
||||
}
|
||||
|
||||
@ -105,6 +114,11 @@ sub RainProcessing {
|
||||
|
||||
### es muss noch beobachtet werden ob die Auswahl des Rollos welches bearbeitet werden soll bestehen bleibt oder mit in die neuen Funktionen übergeben werden muss
|
||||
sub _RainProtected {
|
||||
::RemoveInternalTimer($FHEM::Automation::ShuttersControl::shutters->getRainUnprotectionDelayObj)
|
||||
if($FHEM::Automation::ShuttersControl::shutters->getRainUnprotectionDelayObj ne 'none');
|
||||
|
||||
$FHEM::Automation::ShuttersControl::shutters->setRainUnprotectionDelayObj('none');
|
||||
|
||||
$FHEM::Automation::ShuttersControl::shutters->setLastDrive(
|
||||
'rain protected');
|
||||
$FHEM::Automation::ShuttersControl::shutters->setDriveCmd(
|
||||
@ -123,20 +137,26 @@ sub _RainUnprotected {
|
||||
|
||||
$FHEM::Automation::ShuttersControl::shutters->setLastDrive(
|
||||
'rain un-protected');
|
||||
$FHEM::Automation::ShuttersControl::shutters->setDriveCmd(
|
||||
(
|
||||
$FHEM::Automation::ShuttersControl::shutters->getIsDay
|
||||
? $FHEM::Automation::ShuttersControl::shutters->getLastPos
|
||||
: (
|
||||
$FHEM::Automation::ShuttersControl::shutters
|
||||
->getPrivacyDownStatus == 2
|
||||
? $FHEM::Automation::ShuttersControl::shutters
|
||||
->getPrivacyDownPos
|
||||
: $FHEM::Automation::ShuttersControl::shutters
|
||||
->getClosedPos
|
||||
)
|
||||
|
||||
if ( $FHEM::Automation::ShuttersControl::shutters->getRainUnprotectionDelayObj ne 'none' ) {
|
||||
::RemoveInternalTimer($FHEM::Automation::ShuttersControl::shutters->getRainUnprotectionDelayObj);
|
||||
$FHEM::Automation::ShuttersControl::shutters->setRainUnprotectionDelayObj('none');
|
||||
}
|
||||
|
||||
$FHEM::Automation::ShuttersControl::shutters->setDriveCmd(
|
||||
(
|
||||
$FHEM::Automation::ShuttersControl::shutters->getIsDay
|
||||
? $FHEM::Automation::ShuttersControl::shutters->getLastPos
|
||||
: (
|
||||
$FHEM::Automation::ShuttersControl::shutters
|
||||
->getPrivacyDownStatus == 2
|
||||
? $FHEM::Automation::ShuttersControl::shutters
|
||||
->getPrivacyDownPos
|
||||
: $FHEM::Automation::ShuttersControl::shutters
|
||||
->getClosedPos
|
||||
)
|
||||
);
|
||||
)
|
||||
);
|
||||
|
||||
$FHEM::Automation::ShuttersControl::shutters
|
||||
->setRainProtectionStatus('unprotected');
|
||||
|
@ -57,22 +57,6 @@ use strict;
|
||||
use warnings;
|
||||
use utf8;
|
||||
|
||||
use GPUtils qw(GP_Import);
|
||||
|
||||
## Import der FHEM Funktionen
|
||||
BEGIN {
|
||||
GP_Import(
|
||||
qw(
|
||||
defs
|
||||
ReadingsVal
|
||||
readingsSingleUpdate
|
||||
gettimeofday
|
||||
InternalTimer
|
||||
CommandSet
|
||||
Log3)
|
||||
);
|
||||
}
|
||||
|
||||
sub new {
|
||||
my $class = shift;
|
||||
my $self = {
|
||||
@ -114,15 +98,15 @@ sub setHardLockOut {
|
||||
&& $FHEM::Automation::ShuttersControl::shutters->getLockOutCmd ne
|
||||
'none' )
|
||||
{
|
||||
CommandSet( undef, $self->{shuttersDev} . ' inhibit ' . $cmd )
|
||||
::CommandSet( undef, $self->{shuttersDev} . ' inhibit ' . $cmd )
|
||||
if ( $FHEM::Automation::ShuttersControl::shutters->getLockOutCmd eq
|
||||
'inhibit' );
|
||||
CommandSet( undef,
|
||||
::CommandSet( undef,
|
||||
$self->{shuttersDev} . ' '
|
||||
. ( $cmd eq 'on' ? 'blocked' : 'unblocked' ) )
|
||||
if ( $FHEM::Automation::ShuttersControl::shutters->getLockOutCmd eq
|
||||
'blocked' );
|
||||
CommandSet( undef,
|
||||
::CommandSet( undef,
|
||||
$self->{shuttersDev} . ' '
|
||||
. ( $cmd eq 'on' ? 'protectionOn' : 'protectionOff' ) )
|
||||
if ( $FHEM::Automation::ShuttersControl::shutters->getLockOutCmd eq
|
||||
@ -245,8 +229,8 @@ sub setDriveCmd {
|
||||
&& $FHEM::Automation::ShuttersControl::ascDev->getSelfDefense eq
|
||||
'on' )
|
||||
{
|
||||
InternalTimer(
|
||||
gettimeofday() +
|
||||
::InternalTimer(
|
||||
::gettimeofday() +
|
||||
$FHEM::Automation::ShuttersControl::shutters
|
||||
->getSelfDefenseAbsentDelay,
|
||||
\&FHEM::Automation::ShuttersControl::_SetCmdFn, \%h
|
||||
@ -257,8 +241,8 @@ sub setDriveCmd {
|
||||
elsif ( $offSetStart > 0
|
||||
&& !$FHEM::Automation::ShuttersControl::shutters->getNoDelay )
|
||||
{
|
||||
InternalTimer(
|
||||
gettimeofday() + int(
|
||||
::InternalTimer(
|
||||
::gettimeofday() + int(
|
||||
rand($offSet) +
|
||||
$FHEM::Automation::ShuttersControl::shutters
|
||||
->getDelayStart
|
||||
@ -354,14 +338,14 @@ sub setPosSetCmd {
|
||||
|
||||
sub setLastDriveReading {
|
||||
my $self = shift;
|
||||
my $shuttersDevHash = $defs{ $self->{shuttersDev} };
|
||||
my $shuttersDevHash = $::defs{ $self->{shuttersDev} };
|
||||
|
||||
my %h = (
|
||||
devHash => $shuttersDevHash,
|
||||
lastDrive => $FHEM::Automation::ShuttersControl::shutters->getLastDrive,
|
||||
);
|
||||
|
||||
InternalTimer( gettimeofday() + 0.1,
|
||||
::InternalTimer( ::gettimeofday() + 0.1,
|
||||
\&FHEM::Automation::ShuttersControl::_setShuttersLastDriveDelayed,
|
||||
\%h );
|
||||
return;
|
||||
@ -375,7 +359,7 @@ sub setLastPos {
|
||||
|
||||
$self->{ $self->{shuttersDev} }{lastPos}{VAL} = $position
|
||||
if ( defined($position) );
|
||||
$self->{ $self->{shuttersDev} }{lastPos}{TIME} = int( gettimeofday() )
|
||||
$self->{ $self->{shuttersDev} }{lastPos}{TIME} = int( ::gettimeofday() )
|
||||
if ( defined( $self->{ $self->{shuttersDev} }{lastPos} ) );
|
||||
return;
|
||||
}
|
||||
@ -386,11 +370,11 @@ sub setLastManPos {
|
||||
|
||||
$self->{ $self->{shuttersDev} }{lastManPos}{VAL} = $position
|
||||
if ( defined($position) );
|
||||
$self->{ $self->{shuttersDev} }{lastManPos}{TIME} = int( gettimeofday() )
|
||||
$self->{ $self->{shuttersDev} }{lastManPos}{TIME} = int( ::gettimeofday() )
|
||||
if ( defined( $self->{ $self->{shuttersDev} }{lastManPos} )
|
||||
&& defined( $self->{ $self->{shuttersDev} }{lastManPos}{TIME} ) );
|
||||
$self->{ $self->{shuttersDev} }{lastManPos}{TIME} =
|
||||
int( gettimeofday() ) - 86400
|
||||
int( ::gettimeofday() ) - 86400
|
||||
if ( defined( $self->{ $self->{shuttersDev} }{lastManPos} )
|
||||
&& !defined( $self->{ $self->{shuttersDev} }{lastManPos}{TIME} ) );
|
||||
return;
|
||||
@ -472,6 +456,15 @@ sub setRainProtectionStatus { # Werte protected, unprotected
|
||||
return;
|
||||
}
|
||||
|
||||
sub setRainUnprotectionDelayObj {
|
||||
my $self = shift;
|
||||
my $value = shift;
|
||||
|
||||
$self->{ $self->{shuttersDev} }->{RainProtection}->{UNPROTECTIONDELAYOBJVAL} = $value
|
||||
if ( defined($value) );
|
||||
return;
|
||||
}
|
||||
|
||||
sub setExternalTriggerStatus {
|
||||
my $self = shift;
|
||||
my $value = shift;
|
||||
@ -666,7 +659,7 @@ sub getLastDrive {
|
||||
my $self = shift;
|
||||
|
||||
$self->{ $self->{shuttersDev} }{lastDrive} =
|
||||
ReadingsVal( $self->{shuttersDev}, 'ASC_ShuttersLastDrive', 'none' )
|
||||
::ReadingsVal( $self->{shuttersDev}, 'ASC_ShuttersLastDrive', 'none' )
|
||||
if ( !defined( $self->{ $self->{shuttersDev} }{lastDrive} ) );
|
||||
|
||||
return $self->{ $self->{shuttersDev} }{lastDrive};
|
||||
@ -756,6 +749,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 {
|
||||
my $self = shift;
|
||||
|
||||
@ -857,7 +865,7 @@ sub getRoommatesLastStatus {
|
||||
sub getOutTemp {
|
||||
my $self = shift;
|
||||
|
||||
return ReadingsVal(
|
||||
return ::ReadingsVal(
|
||||
$FHEM::Automation::ShuttersControl::shutters->_getTempSensor,
|
||||
$FHEM::Automation::ShuttersControl::shutters->getTempSensorReading,
|
||||
-100 );
|
||||
@ -866,7 +874,7 @@ sub getOutTemp {
|
||||
sub getIdleDetection {
|
||||
my $self = shift;
|
||||
|
||||
return ReadingsVal(
|
||||
return ::ReadingsVal(
|
||||
$self->{shuttersDev},
|
||||
$FHEM::Automation::ShuttersControl::shutters->_getIdleDetectionReading,
|
||||
'none'
|
||||
@ -891,7 +899,7 @@ sub setShadingStatus {
|
||||
|
||||
$self->{ $self->{shuttersDev} }{ShadingStatus}{VAL} = $value
|
||||
if ( defined($value) );
|
||||
$self->{ $self->{shuttersDev} }{ShadingStatus}{TIME} = int( gettimeofday() )
|
||||
$self->{ $self->{shuttersDev} }{ShadingStatus}{TIME} = int( ::gettimeofday() )
|
||||
if ( defined( $self->{ $self->{shuttersDev} }{ShadingStatus} ) );
|
||||
|
||||
return;
|
||||
@ -909,7 +917,7 @@ sub setShadingLastStatus {
|
||||
$self->{ $self->{shuttersDev} }{ShadingLastStatus}{VAL} = $value
|
||||
if ( defined($value) );
|
||||
$self->{ $self->{shuttersDev} }{ShadingLastStatus}{TIME} =
|
||||
int( gettimeofday() )
|
||||
int( ::gettimeofday() )
|
||||
if ( defined( $self->{ $self->{shuttersDev} }{ShadingLastStatus} ) );
|
||||
$self->{ $self->{shuttersDev} }{ShadingManualDriveStatus}{VAL} = 0
|
||||
if ( $value eq 'out' );
|
||||
|
Loading…
Reference in New Issue
Block a user