patch-raindelaiObject #34

Merged
marko merged 7 commits from patch-raindelaiObject into devel 2021-05-18 08:30:28 +00:00
4 changed files with 85 additions and 57 deletions

View File

@ -1,16 +1,16 @@
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:41:07 31896 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-05-18_09:00:42 11741 lib/FHEM/Automation/ShuttersControl/Dev/Attr.pm
UPD 2020-07-03_11:29:10 7251 lib/FHEM/Automation/ShuttersControl/Dev/Readings.pm UPD 2020-07-03_11:29:10 7251 lib/FHEM/Automation/ShuttersControl/Dev/Readings.pm
UPD 2021-01-29_10:06:33 52525 lib/FHEM/Automation/ShuttersControl/Shutters/Attr.pm UPD 2021-01-29_10:06:33 52525 lib/FHEM/Automation/ShuttersControl/Shutters/Attr.pm
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_09:57:48 6195 lib/FHEM/Automation/ShuttersControl/Rainprotection.pm

View File

@ -282,7 +282,7 @@ sub _getRainSensor {
? $pos ? $pos
: $FHEM::Automation::ShuttersControl::shutters->getClosedPos ); : $FHEM::Automation::ShuttersControl::shutters->getClosedPos );
$self->{ASC_rainSensor}->{waitingTime} = $self->{ASC_rainSensor}->{waitingTime} =
( $pos ne 'none' ? $wait : 900 ); ( $wait ne 'none' ? $wait : 0 );
return $self->{ASC_rainSensor}->{device}; return $self->{ASC_rainSensor}->{device};
} }

View File

@ -79,7 +79,12 @@ sub RainProcessing {
&& $FHEM::Automation::ShuttersControl::shutters->getStatus != && $FHEM::Automation::ShuttersControl::shutters->getStatus !=
$rainClosedPos $rainClosedPos
&& $FHEM::Automation::ShuttersControl::shutters && $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(); _RainProtected();
} }
@ -94,9 +99,13 @@ sub RainProcessing {
shuttersdevice => $shuttersDev, shuttersdevice => $shuttersDev,
); );
$FHEM::Automation::ShuttersControl::shutters->setRainUnprotectionDelayObj(\%funcHash);
::InternalTimer( ::gettimeofday() + $FHEM::Automation::ShuttersControl::ascDev->getRainWaitingTime ::InternalTimer( ::gettimeofday() + $FHEM::Automation::ShuttersControl::ascDev->getRainWaitingTime
, \&_RainUnprotected , \&_RainUnprotected
, \%funcHash ); , \%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 ### 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 { 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( $FHEM::Automation::ShuttersControl::shutters->setLastDrive(
'rain protected'); 'rain protected');
$FHEM::Automation::ShuttersControl::shutters->setDriveCmd( $FHEM::Automation::ShuttersControl::shutters->setDriveCmd(
@ -123,6 +137,12 @@ sub _RainUnprotected {
$FHEM::Automation::ShuttersControl::shutters->setLastDrive( $FHEM::Automation::ShuttersControl::shutters->setLastDrive(
'rain un-protected'); 'rain un-protected');
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->setDriveCmd(
( (
$FHEM::Automation::ShuttersControl::shutters->getIsDay $FHEM::Automation::ShuttersControl::shutters->getIsDay

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
@ -245,8 +229,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 +241,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 +338,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 +359,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 +370,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 +456,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 +659,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 +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 { sub getSunsetUnixTime {
my $self = shift; my $self = shift;
@ -857,7 +865,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 +874,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 +899,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 +917,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' );