Merge pull request 'patch-raindelaiObject' (#34) from patch-raindelaiObject into devel
Reviewed-on: #34
This commit is contained in:
		| @@ -1,16 +1,16 @@ | ||||
| UPD 2021-05-17_14:25:13 97974 FHEM/73_AutoShuttersControl.pm | ||||
| UPD 2021-05-17_14:25:13 74350 lib/FHEM/Automation/ShuttersControl.pm | ||||
| UPD 2021-05-17_14:30:37 97974 FHEM/73_AutoShuttersControl.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-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-10_08:26:03 25329 lib/FHEM/Automation/ShuttersControl/Shading.pm | ||||
| UPD 2021-05-17_14:26:04 108472 lib/FHEM/Automation/ShuttersControl/EventProcessingFunctions.pm | ||||
| UPD 2021-05-18_08:41:07 31896 lib/FHEM/Automation/ShuttersControl/Shutters.pm | ||||
| UPD 2021-05-17_14:30:37 25329 lib/FHEM/Automation/ShuttersControl/Shading.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 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 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 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 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 | ||||
|   | ||||
| @@ -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' ); | ||||
|   | ||||
		Reference in New Issue
	
	Block a user