patch_issues67-Lockout_and_BlockingManualTime #79
| @@ -3,8 +3,8 @@ UPD 2021-11-29_15:01:56 75264 lib/FHEM/Automation/ShuttersControl.pm | |||||||
| UPD 2021-10-09_07:12:54 2657 lib/FHEM/Automation/ShuttersControl/Dev.pm | UPD 2021-10-09_07:12:54 2657 lib/FHEM/Automation/ShuttersControl/Dev.pm | ||||||
| UPD 2021-10-09_07:12:54 2494 lib/FHEM/Automation/ShuttersControl/Roommate.pm | UPD 2021-10-09_07:12:54 2494 lib/FHEM/Automation/ShuttersControl/Roommate.pm | ||||||
| UPD 2021-10-24_07:33:53 31900 lib/FHEM/Automation/ShuttersControl/Shutters.pm | UPD 2021-10-24_07:33:53 31900 lib/FHEM/Automation/ShuttersControl/Shutters.pm | ||||||
| UPD 2021-12-04_09:50:00 25333 lib/FHEM/Automation/ShuttersControl/Shading.pm | UPD 2021-12-04_10:58:06 25333 lib/FHEM/Automation/ShuttersControl/Shading.pm | ||||||
| UPD 2021-12-04_10:54:53 111003 lib/FHEM/Automation/ShuttersControl/EventProcessingFunctions.pm | UPD 2021-12-04_20:47:39 112341 lib/FHEM/Automation/ShuttersControl/EventProcessingFunctions.pm | ||||||
| UPD 2021-11-14_14:03:06 40094 lib/FHEM/Automation/ShuttersControl/Helper.pm | UPD 2021-11-14_14:03:06 40094 lib/FHEM/Automation/ShuttersControl/Helper.pm | ||||||
| UPD 2021-10-09_07:12:54 2173 lib/FHEM/Automation/ShuttersControl/Window.pm | UPD 2021-10-09_07:12:54 2173 lib/FHEM/Automation/ShuttersControl/Window.pm | ||||||
| UPD 2021-10-09_07:12:54 11739 lib/FHEM/Automation/ShuttersControl/Dev/Attr.pm | UPD 2021-10-09_07:12:54 11739 lib/FHEM/Automation/ShuttersControl/Dev/Attr.pm | ||||||
|   | |||||||
| @@ -54,18 +54,18 @@ use FHEM::Automation::ShuttersControl::Rainprotection qw (:ALL); | |||||||
| require Exporter; | require Exporter; | ||||||
| our @ISA       = qw(Exporter); | our @ISA       = qw(Exporter); | ||||||
| our @EXPORT_OK = qw( | our @EXPORT_OK = qw( | ||||||
|                     EventProcessingPartyMode |   EventProcessingPartyMode | ||||||
|                     EventProcessingGeneral |   EventProcessingGeneral | ||||||
|                     EventProcessingShutters |   EventProcessingShutters | ||||||
|                     EventProcessingAdvShuttersClose |   EventProcessingAdvShuttersClose | ||||||
| ); | ); | ||||||
| our %EXPORT_TAGS = ( | our %EXPORT_TAGS = ( | ||||||
|     ALL => [ |     ALL => [ | ||||||
|         qw( |         qw( | ||||||
|            EventProcessingPartyMode |           EventProcessingPartyMode | ||||||
|            EventProcessingGeneral |           EventProcessingGeneral | ||||||
|            EventProcessingShutters |           EventProcessingShutters | ||||||
|            EventProcessingAdvShuttersClose |           EventProcessingAdvShuttersClose | ||||||
|           ) |           ) | ||||||
|     ], |     ], | ||||||
| ); | ); | ||||||
| @@ -75,12 +75,12 @@ use GPUtils qw(GP_Import); | |||||||
| BEGIN { | BEGIN { | ||||||
|     GP_Import( |     GP_Import( | ||||||
|         qw( |         qw( | ||||||
|            Log3 |           Log3 | ||||||
|            gettimeofday |           gettimeofday | ||||||
|            computeAlignTime |           computeAlignTime | ||||||
|            CommandSet |           CommandSet | ||||||
|            ReadingsVal |           ReadingsVal | ||||||
|            RemoveInternalTimer |           RemoveInternalTimer | ||||||
|           ) |           ) | ||||||
|     ); |     ); | ||||||
| } | } | ||||||
| @@ -94,8 +94,12 @@ sub EventProcessingGeneral { | |||||||
|  |  | ||||||
|     if ( defined($devname) && ($devname) ) |     if ( defined($devname) && ($devname) ) | ||||||
|     { # es wird lediglich der Devicename der Funktion mitgegeben wenn es sich nicht um global handelt daher hier die Unterscheidung |     { # es wird lediglich der Devicename der Funktion mitgegeben wenn es sich nicht um global handelt daher hier die Unterscheidung | ||||||
|         my $windReading = $FHEM::Automation::ShuttersControl::ascDev->getWindSensorReading // 'none'; |         my $windReading = | ||||||
|         my $rainReading = $FHEM::Automation::ShuttersControl::ascDev->getRainSensorReading // 'none'; |           $FHEM::Automation::ShuttersControl::ascDev->getWindSensorReading | ||||||
|  |           // 'none'; | ||||||
|  |         my $rainReading = | ||||||
|  |           $FHEM::Automation::ShuttersControl::ascDev->getRainSensorReading | ||||||
|  |           // 'none'; | ||||||
|  |  | ||||||
|         while ( my ( $device, $deviceAttr ) = |         while ( my ( $device, $deviceAttr ) = | ||||||
|             each %{ $hash->{monitoredDevs}{$devname} } ) |             each %{ $hash->{monitoredDevs}{$devname} } ) | ||||||
| @@ -122,13 +126,16 @@ sub EventProcessingGeneral { | |||||||
|             EventProcessingExternalTriggerDevice( $hash, $device, $events ) |             EventProcessingExternalTriggerDevice( $hash, $device, $events ) | ||||||
|               if ( $deviceAttr eq 'ASC_ExternalTrigger' ); |               if ( $deviceAttr eq 'ASC_ExternalTrigger' ); | ||||||
|  |  | ||||||
|             $FHEM::Automation::ShuttersControl::shutters->setShuttersDev($device) |             $FHEM::Automation::ShuttersControl::shutters->setShuttersDev( | ||||||
|  |                 $device) | ||||||
|               if ( $deviceAttr eq 'ASC_BrightnessSensor' ); |               if ( $deviceAttr eq 'ASC_BrightnessSensor' ); | ||||||
|  |  | ||||||
|             if ( |             if ( | ||||||
|                 $deviceAttr eq 'ASC_BrightnessSensor' |                 $deviceAttr eq 'ASC_BrightnessSensor' | ||||||
|                 && (   $FHEM::Automation::ShuttersControl::shutters->getDown eq 'brightness' |                 && ( $FHEM::Automation::ShuttersControl::shutters->getDown eq | ||||||
|                     || $FHEM::Automation::ShuttersControl::shutters->getUp eq 'brightness' ) |                     'brightness' | ||||||
|  |                     || $FHEM::Automation::ShuttersControl::shutters->getUp eq | ||||||
|  |                     'brightness' ) | ||||||
|               ) |               ) | ||||||
|             { |             { | ||||||
|                 EventProcessingBrightness( $hash, $device, $events ); |                 EventProcessingBrightness( $hash, $device, $events ); | ||||||
| @@ -147,7 +154,8 @@ sub EventProcessingGeneral { | |||||||
|              \s(.*)$}xms |              \s(.*)$}xms | ||||||
|           ) |           ) | ||||||
|         {     # wurde den Attributen unserer Rolläden ein Wert zugewiesen ? |         {     # wurde den Attributen unserer Rolläden ein Wert zugewiesen ? | ||||||
|             FHEM::Automation::ShuttersControl::AddNotifyDev( $hash, $3, $1, $2 ) if ( $3 ne 'none' ); |             FHEM::Automation::ShuttersControl::AddNotifyDev( $hash, $3, $1, $2 ) | ||||||
|  |               if ( $3 ne 'none' ); | ||||||
|             Log3( $name, 4, |             Log3( $name, 4, | ||||||
|                 "AutoShuttersControl ($name) - EventProcessing: ATTR" ); |                 "AutoShuttersControl ($name) - EventProcessing: ATTR" ); | ||||||
|         } |         } | ||||||
| @@ -175,11 +183,13 @@ sub EventProcessingGeneral { | |||||||
|                 (.*)?}xms |                 (.*)?}xms | ||||||
|           ) |           ) | ||||||
|         { |         { | ||||||
|             FHEM::Automation::ShuttersControl::CreateSunRiseSetShuttersTimer( $hash, $2 ) |             FHEM::Automation::ShuttersControl::CreateSunRiseSetShuttersTimer( | ||||||
|  |                 $hash, $2 ) | ||||||
|               if ( |               if ( | ||||||
|                 $3 ne 'ASC_Time_Up_WE_Holiday' |                 $3 ne 'ASC_Time_Up_WE_Holiday' | ||||||
|                 || (   $3 eq 'ASC_Time_Up_WE_Holiday' |                 || (   $3 eq 'ASC_Time_Up_WE_Holiday' | ||||||
|                     && $FHEM::Automation::ShuttersControl::ascDev->getSunriseTimeWeHoliday eq 'on' ) |                     && $FHEM::Automation::ShuttersControl::ascDev | ||||||
|  |                     ->getSunriseTimeWeHoliday eq 'on' ) | ||||||
|               ); |               ); | ||||||
|         } |         } | ||||||
|         elsif ( |         elsif ( | ||||||
| @@ -189,7 +199,8 @@ sub EventProcessingGeneral { | |||||||
|                 (.*)?}xms |                 (.*)?}xms | ||||||
|           ) |           ) | ||||||
|         { |         { | ||||||
|             FHEM::Automation::ShuttersControl::RenewSunRiseSetShuttersTimer($hash); |             FHEM::Automation::ShuttersControl::RenewSunRiseSetShuttersTimer( | ||||||
|  |                 $hash); | ||||||
|         } |         } | ||||||
|         elsif ( |         elsif ( | ||||||
|             $events =~ m{^(DELETEATTR|ATTR) |             $events =~ m{^(DELETEATTR|ATTR) | ||||||
| @@ -197,7 +208,8 @@ sub EventProcessingGeneral { | |||||||
|                 (.*)?}xms |                 (.*)?}xms | ||||||
|           ) |           ) | ||||||
|         { |         { | ||||||
|             $FHEM::Automation::ShuttersControl::shutters->deleteShadingStateChangeSunny; |             $FHEM::Automation::ShuttersControl::shutters | ||||||
|  |               ->deleteShadingStateChangeSunny; | ||||||
|         } |         } | ||||||
|  |  | ||||||
|         if ( |         if ( | ||||||
| @@ -210,20 +222,21 @@ m{^(DELETEATTR|ATTR)         #global ATTR myASC ASC_tempSensor Cellar | |||||||
|                 (.*)?}xms |                 (.*)?}xms | ||||||
|           ) |           ) | ||||||
|         { |         { | ||||||
| #             ATTR RolloKinZimSteven_F1 ASC_Shading_Mode off |             #             ATTR RolloKinZimSteven_F1 ASC_Shading_Mode off | ||||||
|             if ( $events =~ m{^ATTR\s(.*)\sASC_Shading_Mode\s(off)}xms ) { |             if ( $events =~ m{^ATTR\s(.*)\sASC_Shading_Mode\s(off)}xms ) { | ||||||
|                 my %funcHash = ( |                 my %funcHash = ( | ||||||
|                     hash            => $hash, |                     hash           => $hash, | ||||||
|                     shuttersdevice  => $1, |                     shuttersdevice => $1, | ||||||
|                     value           => $2, |                     value          => $2, | ||||||
|                     attrEvent       => 1, |                     attrEvent      => 1, | ||||||
|                 ); |                 ); | ||||||
|  |  | ||||||
|                 FHEM::Automation::ShuttersControl::Shading::_CheckShuttersConditionsForShadingFn(\%funcHash); |                 FHEM::Automation::ShuttersControl::Shading::_CheckShuttersConditionsForShadingFn( | ||||||
|  |                     \%funcHash ); | ||||||
|             } |             } | ||||||
|             else { |             else { | ||||||
|                 CommandSet( undef, $name . ' controlShading on' ) |                 CommandSet( undef, $name . ' controlShading on' ) | ||||||
|                 if ( ReadingsVal( $name, 'controlShading', 'off' ) ne 'off' ); |                   if ( ReadingsVal( $name, 'controlShading', 'off' ) ne 'off' ); | ||||||
|             } |             } | ||||||
|         } |         } | ||||||
|     } |     } | ||||||
| @@ -247,9 +260,8 @@ sub EventProcessingWindowRec { | |||||||
|     { |     { | ||||||
|         return |         return | ||||||
|           if ( !IsAfterShuttersManualBlocking($shuttersDev) |           if ( !IsAfterShuttersManualBlocking($shuttersDev) | ||||||
|             && $FHEM::Automation::ShuttersControl::shutters->getLockOut |             && $FHEM::Automation::ShuttersControl::shutters->getLockOut eq | ||||||
|               eq 'off' ); |             'off' ); | ||||||
|  |  | ||||||
|  |  | ||||||
|         my $match = $1; |         my $match = $1; | ||||||
|  |  | ||||||
| @@ -279,7 +291,11 @@ sub EventProcessingWindowRec { | |||||||
|         $FHEM::Automation::ShuttersControl::shutters->setHardLockOut('on') |         $FHEM::Automation::ShuttersControl::shutters->setHardLockOut('on') | ||||||
|           if ( $match =~ m{[Oo]pen|false}xms |           if ( $match =~ m{[Oo]pen|false}xms | ||||||
|             && $FHEM::Automation::ShuttersControl::shutters->getShuttersPlace |             && $FHEM::Automation::ShuttersControl::shutters->getShuttersPlace | ||||||
|             eq 'terrace' ); |             eq 'terrace' | ||||||
|  |             && $FHEM::Automation::ShuttersControl::shutters->getStatus != | ||||||
|  |             $FHEM::Automation::ShuttersControl::shutters->getOpenPos | ||||||
|  |             && $FHEM::Automation::ShuttersControl::shutters->getStatus != | ||||||
|  |             $FHEM::Automation::ShuttersControl::shutters->getComfortOpenPos ); | ||||||
|  |  | ||||||
|         FHEM::Automation::ShuttersControl::ASC_Debug( |         FHEM::Automation::ShuttersControl::ASC_Debug( | ||||||
|                 'EventProcessingWindowRec: ' |                 'EventProcessingWindowRec: ' | ||||||
| @@ -288,12 +304,12 @@ sub EventProcessingWindowRec { | |||||||
|               . $homemode |               . $homemode | ||||||
|               . ' QueryShuttersPosWinRecTilted:' |               . ' QueryShuttersPosWinRecTilted:' | ||||||
|               . $FHEM::Automation::ShuttersControl::shutters |               . $FHEM::Automation::ShuttersControl::shutters | ||||||
|                   ->getQueryShuttersPos( |               ->getQueryShuttersPos( | ||||||
|                 $FHEM::Automation::ShuttersControl::shutters->getVentilatePos |                 $FHEM::Automation::ShuttersControl::shutters->getVentilatePos | ||||||
|               ) |               ) | ||||||
|               . ' QueryShuttersPosWinRecComfort: ' |               . ' QueryShuttersPosWinRecComfort: ' | ||||||
|               . $FHEM::Automation::ShuttersControl::shutters |               . $FHEM::Automation::ShuttersControl::shutters | ||||||
|                   ->getQueryShuttersPos( |               ->getQueryShuttersPos( | ||||||
|                 $FHEM::Automation::ShuttersControl::shutters->getComfortOpenPos |                 $FHEM::Automation::ShuttersControl::shutters->getComfortOpenPos | ||||||
|               ) |               ) | ||||||
|         ); |         ); | ||||||
| @@ -306,41 +322,40 @@ sub EventProcessingWindowRec { | |||||||
|                 $FHEM::Automation::ShuttersControl::shutters->getVentilatePos |                 $FHEM::Automation::ShuttersControl::shutters->getVentilatePos | ||||||
|                 || $FHEM::Automation::ShuttersControl::shutters->getStatus == |                 || $FHEM::Automation::ShuttersControl::shutters->getStatus == | ||||||
|                 $FHEM::Automation::ShuttersControl::shutters->getComfortOpenPos |                 $FHEM::Automation::ShuttersControl::shutters->getComfortOpenPos | ||||||
|                 || (   $FHEM::Automation::ShuttersControl::shutters->getStatus == |                 || ( $FHEM::Automation::ShuttersControl::shutters->getStatus == | ||||||
|                        $FHEM::Automation::ShuttersControl::shutters->getOpenPos |                        $FHEM::Automation::ShuttersControl::shutters->getOpenPos | ||||||
|                     && $FHEM::Automation::ShuttersControl::shutters->getLastDrive |                     && $FHEM::Automation::ShuttersControl::shutters | ||||||
|                       eq 'ventilate - window open' |                     ->getLastDrive eq 'ventilate - window open' | ||||||
|                     && $FHEM::Automation::ShuttersControl::shutters->getSubTyp |                     && $FHEM::Automation::ShuttersControl::shutters->getSubTyp | ||||||
|                       eq 'twostate' |                     eq 'twostate' | ||||||
|                     && $FHEM::Automation::ShuttersControl::shutters->getVentilateOpen |                     && $FHEM::Automation::ShuttersControl::shutters | ||||||
|                       eq 'on' ) |                     ->getVentilateOpen eq 'on' ) | ||||||
|                 || ( $FHEM::Automation::ShuttersControl::shutters->getStatus == |                 || ( $FHEM::Automation::ShuttersControl::shutters->getStatus == | ||||||
|                     $FHEM::Automation::ShuttersControl::shutters |                     $FHEM::Automation::ShuttersControl::shutters | ||||||
|                       ->getPrivacyDownPos |                     ->getPrivacyDownPos | ||||||
|                     && $FHEM::Automation::ShuttersControl::shutters |                     && $FHEM::Automation::ShuttersControl::shutters | ||||||
|                          ->getPrivacyDownStatus != 2 |                     ->getPrivacyDownStatus != 2 | ||||||
|                     && !$FHEM::Automation::ShuttersControl::shutters->getIsDay ) |                     && !$FHEM::Automation::ShuttersControl::shutters->getIsDay ) | ||||||
|                 || ( $FHEM::Automation::ShuttersControl::shutters->getStatus == |                 || ( | ||||||
|                       $FHEM::Automation::ShuttersControl::shutters |                     $FHEM::Automation::ShuttersControl::shutters->getStatus == | ||||||
|                          ->getOpenPos |                     $FHEM::Automation::ShuttersControl::shutters->getOpenPos | ||||||
|                     && (   $FHEM::Automation::ShuttersControl::shutters |                     && ( $FHEM::Automation::ShuttersControl::shutters | ||||||
|                              ->getLockOut ne 'off' |                         ->getLockOut ne 'off' | ||||||
|                         || $FHEM::Automation::ShuttersControl::shutters |                         || $FHEM::Automation::ShuttersControl::shutters | ||||||
|                              ->getShuttersPlace eq 'terrace' |                         ->getShuttersPlace eq 'terrace' ) | ||||||
|                        ) |                     && !$FHEM::Automation::ShuttersControl::shutters->getIsDay | ||||||
|                     && !$FHEM::Automation::ShuttersControl::shutters->getIsDay ) |                 ) | ||||||
|                 || ( $FHEM::Automation::ShuttersControl::shutters->getStatus == |                 || ( $FHEM::Automation::ShuttersControl::shutters->getStatus == | ||||||
|                       $FHEM::Automation::ShuttersControl::shutters |                        $FHEM::Automation::ShuttersControl::shutters->getOpenPos | ||||||
|                          ->getOpenPos |  | ||||||
|                     && $FHEM::Automation::ShuttersControl::shutters |                     && $FHEM::Automation::ShuttersControl::shutters | ||||||
|                          ->getDelayCmd ne 'none' |                     ->getDelayCmd ne 'none' | ||||||
|                     && $FHEM::Automation::ShuttersControl::shutters |                     && $FHEM::Automation::ShuttersControl::shutters | ||||||
|                          ->getShuttersPlace eq 'terrace' ) |                     ->getShuttersPlace eq 'terrace' ) | ||||||
|             ) |             ) | ||||||
|             && ( $FHEM::Automation::ShuttersControl::shutters->getVentilateOpen |             && ( $FHEM::Automation::ShuttersControl::shutters->getVentilateOpen | ||||||
|                 eq 'on' |                 eq 'on' | ||||||
|                 || $FHEM::Automation::ShuttersControl::ascDev |                 || $FHEM::Automation::ShuttersControl::ascDev | ||||||
|                      ->getAutoShuttersControlComfort eq 'on' ) |                 ->getAutoShuttersControlComfort eq 'on' ) | ||||||
|           ) |           ) | ||||||
|         { |         { | ||||||
|             FHEM::Automation::ShuttersControl::ASC_Debug( |             FHEM::Automation::ShuttersControl::ASC_Debug( | ||||||
| @@ -376,18 +391,19 @@ sub EventProcessingWindowRec { | |||||||
|                 elsif ( |                 elsif ( | ||||||
|                     !$FHEM::Automation::ShuttersControl::shutters |                     !$FHEM::Automation::ShuttersControl::shutters | ||||||
|                     ->getIfInShading |                     ->getIfInShading | ||||||
|                     && ( $FHEM::Automation::ShuttersControl::shutters->getStatus |                     && ( | ||||||
|  |                         $FHEM::Automation::ShuttersControl::shutters->getStatus | ||||||
|                         != $FHEM::Automation::ShuttersControl::shutters |                         != $FHEM::Automation::ShuttersControl::shutters | ||||||
|                         ->getOpenPos |                         ->getOpenPos | ||||||
|                         || $FHEM::Automation::ShuttersControl::shutters |                         || $FHEM::Automation::ShuttersControl::shutters | ||||||
|                         ->getStatus != |                         ->getStatus != | ||||||
|                         $FHEM::Automation::ShuttersControl::shutters |                         $FHEM::Automation::ShuttersControl::shutters | ||||||
|                         ->getLastManPos |                         ->getLastManPos | ||||||
|                         || (   $FHEM::Automation::ShuttersControl::shutters |                         || ( $FHEM::Automation::ShuttersControl::shutters | ||||||
|                                  ->getDelayCmd ne 'none' |                             ->getDelayCmd ne 'none' | ||||||
|                             && $FHEM::Automation::ShuttersControl::shutters |                             && $FHEM::Automation::ShuttersControl::shutters | ||||||
|                                  ->getShuttersPlace eq 'terrace' ) |                             ->getShuttersPlace eq 'terrace' ) | ||||||
|                         ) |                     ) | ||||||
|                   ) |                   ) | ||||||
|                 { |                 { | ||||||
|                     if ( $FHEM::Automation::ShuttersControl::shutters |                     if ( $FHEM::Automation::ShuttersControl::shutters | ||||||
| @@ -412,40 +428,44 @@ sub EventProcessingWindowRec { | |||||||
|                           ->setDriveCmd( |                           ->setDriveCmd( | ||||||
|                             ( |                             ( | ||||||
|                                 $FHEM::Automation::ShuttersControl::shutters |                                 $FHEM::Automation::ShuttersControl::shutters | ||||||
|                                     ->getDelayCmd ne 'none' |                                   ->getDelayCmd ne 'none' | ||||||
|                                   && $FHEM::Automation::ShuttersControl::shutters |                                   && $FHEM::Automation::ShuttersControl::shutters | ||||||
|                                     ->getShuttersPlace eq 'terrace' |                                   ->getShuttersPlace eq 'terrace' | ||||||
|                                 ? $FHEM::Automation::ShuttersControl::shutters |                                 ? $FHEM::Automation::ShuttersControl::shutters | ||||||
|                                     ->getDelayCmd |                                   ->getDelayCmd | ||||||
|                                 : ( $FHEM::Automation::ShuttersControl::shutters |                                 : ( | ||||||
|  |                                     $FHEM::Automation::ShuttersControl::shutters | ||||||
|                                       ->getVentilatePosAfterDayClosed eq 'open' |                                       ->getVentilatePosAfterDayClosed eq 'open' | ||||||
|                                 ? $FHEM::Automation::ShuttersControl::shutters |                                     ? $FHEM::Automation::ShuttersControl::shutters | ||||||
|                                     ->getOpenPos |                                       ->getOpenPos | ||||||
|                                 : $FHEM::Automation::ShuttersControl::shutters |                                     : $FHEM::Automation::ShuttersControl::shutters | ||||||
|                                     ->getLastManPos ) |                                       ->getLastManPos | ||||||
|  |                                 ) | ||||||
|                             ) |                             ) | ||||||
|                           ); |                           ); | ||||||
|                     } |                     } | ||||||
|                 } |                 } | ||||||
|             } |             } | ||||||
|             elsif ( |             elsif ( | ||||||
|                    !$FHEM::Automation::ShuttersControl::shutters->getIsDay |                   !$FHEM::Automation::ShuttersControl::shutters->getIsDay | ||||||
|                 && $FHEM::Automation::ShuttersControl::shutters->getModeDown eq 'roommate' |                 && $FHEM::Automation::ShuttersControl::shutters->getModeDown eq | ||||||
|                 && ( $FHEM::Automation::ShuttersControl::shutters->getRoommatesStatus eq 'home' |                 'roommate' | ||||||
|                   || $FHEM::Automation::ShuttersControl::shutters->getRoommatesStatus eq 'awoken' ) |                 && ( $FHEM::Automation::ShuttersControl::shutters | ||||||
|  |                     ->getRoommatesStatus eq 'home' | ||||||
|  |                     || $FHEM::Automation::ShuttersControl::shutters | ||||||
|  |                     ->getRoommatesStatus eq 'awoken' ) | ||||||
|               ) |               ) | ||||||
|             { |             { | ||||||
|                 $FHEM::Automation::ShuttersControl::shutters |                 $FHEM::Automation::ShuttersControl::shutters->setDriveCmd( | ||||||
|                           ->setDriveCmd( |                     ( | ||||||
|                             ( |                         $FHEM::Automation::ShuttersControl::shutters | ||||||
|                                 $FHEM::Automation::ShuttersControl::shutters |                           ->getVentilatePosAfterDayClosed eq 'open' | ||||||
|                                   ->getVentilatePosAfterDayClosed eq 'open' |                         ? $FHEM::Automation::ShuttersControl::shutters | ||||||
|                                 ? $FHEM::Automation::ShuttersControl::shutters |                           ->getOpenPos | ||||||
|                                   ->getOpenPos |                         : $FHEM::Automation::ShuttersControl::shutters | ||||||
|                                 : $FHEM::Automation::ShuttersControl::shutters |                           ->getLastManPos | ||||||
|                                   ->getLastManPos |                     ) | ||||||
|                             ) |                 ); | ||||||
|                           ); |  | ||||||
|             } |             } | ||||||
|             elsif ( |             elsif ( | ||||||
|                 $FHEM::Automation::ShuttersControl::shutters->getModeDown ne |                 $FHEM::Automation::ShuttersControl::shutters->getModeDown ne | ||||||
| @@ -826,7 +846,7 @@ sub EventProcessingRoommate { | |||||||
|         elsif ( |         elsif ( | ||||||
|             ( $event eq 'gotosleep' || $event eq 'asleep' ) |             ( $event eq 'gotosleep' || $event eq 'asleep' ) | ||||||
|             && $FHEM::Automation::ShuttersControl::shutters->getModeDown ne |             && $FHEM::Automation::ShuttersControl::shutters->getModeDown ne | ||||||
|                 'absent' |             'absent' | ||||||
|             && ( $FHEM::Automation::ShuttersControl::ascDev |             && ( $FHEM::Automation::ShuttersControl::ascDev | ||||||
|                 ->getAutoShuttersControlEvening eq 'on' |                 ->getAutoShuttersControlEvening eq 'on' | ||||||
|                 || $FHEM::Automation::ShuttersControl::shutters->getDown eq |                 || $FHEM::Automation::ShuttersControl::shutters->getDown eq | ||||||
| @@ -980,6 +1000,7 @@ sub EventProcessingResidents { | |||||||
|                 && $FHEM::Automation::ShuttersControl::shutters |                 && $FHEM::Automation::ShuttersControl::shutters | ||||||
|                 ->getSelfDefenseMode ne 'off' |                 ->getSelfDefenseMode ne 'off' | ||||||
|                 || $getModeDown eq 'absent' |                 || $getModeDown eq 'absent' | ||||||
|  |  | ||||||
| #                     || $getModeDown eq 'always' )       Wird zu Testzwecken auskommentiert, siehe #90 Github | #                     || $getModeDown eq 'always' )       Wird zu Testzwecken auskommentiert, siehe #90 Github | ||||||
|                 || ( $FHEM::Automation::ShuttersControl::shutters |                 || ( $FHEM::Automation::ShuttersControl::shutters | ||||||
|                     ->getShadingMode eq 'absent' |                     ->getShadingMode eq 'absent' | ||||||
| @@ -997,15 +1018,17 @@ sub EventProcessingResidents { | |||||||
|                     && ( |                     && ( | ||||||
|                         $FHEM::Automation::ShuttersControl::shutters |                         $FHEM::Automation::ShuttersControl::shutters | ||||||
|                         ->getSelfDefenseMode eq 'absent' |                         ->getSelfDefenseMode eq 'absent' | ||||||
|                         || ( CheckIfShuttersWindowRecOpen($shuttersDev) == 2 |                         || ( | ||||||
|  |                             CheckIfShuttersWindowRecOpen($shuttersDev) == 2 | ||||||
|                             && $FHEM::Automation::ShuttersControl::shutters |                             && $FHEM::Automation::ShuttersControl::shutters | ||||||
|                             ->getSelfDefenseMode eq 'gone' |                             ->getSelfDefenseMode eq 'gone' | ||||||
|                             && ( $FHEM::Automation::ShuttersControl::shutters |                             && ( $FHEM::Automation::ShuttersControl::shutters | ||||||
|                                 ->getShuttersPlace eq 'terrace' |                                 ->getShuttersPlace eq 'terrace' | ||||||
|                               || $FHEM::Automation::ShuttersControl::shutters |                                 || $FHEM::Automation::ShuttersControl::shutters | ||||||
|                                 ->getShuttersPlace eq 'EG_window' ) |                                 ->getShuttersPlace eq 'EG_window' ) | ||||||
|                             && $FHEM::Automation::ShuttersControl::shutters |                             && $FHEM::Automation::ShuttersControl::shutters | ||||||
|                             ->getSelfDefenseMode ne 'off' ) |                             ->getSelfDefenseMode ne 'off' | ||||||
|  |                         ) | ||||||
|                     ) |                     ) | ||||||
|                   ) |                   ) | ||||||
|                 { |                 { | ||||||
| @@ -1056,11 +1079,14 @@ sub EventProcessingResidents { | |||||||
|                         $FHEM::Automation::ShuttersControl::shutters |                         $FHEM::Automation::ShuttersControl::shutters | ||||||
|                           ->getLastPos ); |                           ->getLastPos ); | ||||||
|                 } |                 } | ||||||
|                 elsif ( $getModeDown eq 'absent'        # || $getModeDown eq 'always' )   Wird zu Testzwecken auskommentiert, siehe #90 Github |                 elsif ( | ||||||
|  |                     $getModeDown eq | ||||||
|  |                     'absent' # || $getModeDown eq 'always' )   Wird zu Testzwecken auskommentiert, siehe #90 Github | ||||||
|                     && !$FHEM::Automation::ShuttersControl::shutters->getIsDay |                     && !$FHEM::Automation::ShuttersControl::shutters->getIsDay | ||||||
|                     && IsAfterShuttersTimeBlocking($shuttersDev) |                     && IsAfterShuttersTimeBlocking($shuttersDev) | ||||||
|                     && $FHEM::Automation::ShuttersControl::shutters |                     && $FHEM::Automation::ShuttersControl::shutters | ||||||
|                     ->getRoommatesStatus eq 'none' ) |                     ->getRoommatesStatus eq 'none' | ||||||
|  |                   ) | ||||||
|                 { |                 { | ||||||
|                     $FHEM::Automation::ShuttersControl::shutters->setLastDrive( |                     $FHEM::Automation::ShuttersControl::shutters->setLastDrive( | ||||||
|                         'residents absent'); |                         'residents absent'); | ||||||
| @@ -1120,7 +1146,8 @@ sub EventProcessingResidents { | |||||||
|                 ->getRoommatesStatus eq 'none' |                 ->getRoommatesStatus eq 'none' | ||||||
|                 && (   $getModeDown eq 'home' |                 && (   $getModeDown eq 'home' | ||||||
|                     || $getModeDown eq 'always' ) |                     || $getModeDown eq 'always' ) | ||||||
|                 && $FHEM::Automation::ShuttersControl::ascDev->getAutoShuttersControlEvening eq 'on' |                 && $FHEM::Automation::ShuttersControl::ascDev | ||||||
|  |                 ->getAutoShuttersControlEvening eq 'on' | ||||||
|                 && $getResidentsLastStatus ne 'asleep' |                 && $getResidentsLastStatus ne 'asleep' | ||||||
|                 && $getResidentsLastStatus ne 'awoken' |                 && $getResidentsLastStatus ne 'awoken' | ||||||
|                 && IsAfterShuttersTimeBlocking($shuttersDev) |                 && IsAfterShuttersTimeBlocking($shuttersDev) | ||||||
| @@ -1268,7 +1295,8 @@ sub EventProcessingResidents { | |||||||
|                 ->getRoommatesStatus eq 'none' |                 ->getRoommatesStatus eq 'none' | ||||||
|                 && (   $getModeUp eq 'home' |                 && (   $getModeUp eq 'home' | ||||||
|                     || $getModeUp eq 'always' ) |                     || $getModeUp eq 'always' ) | ||||||
|                 && $FHEM::Automation::ShuttersControl::ascDev->getAutoShuttersControlMorning eq 'on' |                 && $FHEM::Automation::ShuttersControl::ascDev | ||||||
|  |                 ->getAutoShuttersControlMorning eq 'on' | ||||||
|                 && IsAfterShuttersTimeBlocking($shuttersDev) |                 && IsAfterShuttersTimeBlocking($shuttersDev) | ||||||
|                 && !$FHEM::Automation::ShuttersControl::shutters->getIfInShading |                 && !$FHEM::Automation::ShuttersControl::shutters->getIfInShading | ||||||
|                 && !$FHEM::Automation::ShuttersControl::shutters |                 && !$FHEM::Automation::ShuttersControl::shutters | ||||||
| @@ -1387,8 +1415,9 @@ sub EventProcessingWind { | |||||||
|                           $FHEM::Automation::ShuttersControl::shutters->getIsDay |                           $FHEM::Automation::ShuttersControl::shutters->getIsDay | ||||||
|                         ? $FHEM::Automation::ShuttersControl::shutters |                         ? $FHEM::Automation::ShuttersControl::shutters | ||||||
|                           ->getLastPos |                           ->getLastPos | ||||||
|                         : ( $FHEM::Automation::ShuttersControl::shutters->getShuttersPlace |                         : ( | ||||||
|                             eq 'awning' |                             $FHEM::Automation::ShuttersControl::shutters | ||||||
|  |                               ->getShuttersPlace eq 'awning' | ||||||
|                             ? $FHEM::Automation::ShuttersControl::shutters |                             ? $FHEM::Automation::ShuttersControl::shutters | ||||||
|                               ->getOpenPos |                               ->getOpenPos | ||||||
|                             : ( |                             : ( | ||||||
| @@ -1799,7 +1828,8 @@ sub EventProcessingBrightness { | |||||||
|                               . $FHEM::Automation::ShuttersControl::shutters |                               . $FHEM::Automation::ShuttersControl::shutters | ||||||
|                               ->getLastDrive ); |                               ->getLastDrive ); | ||||||
|  |  | ||||||
|                         FHEM::Automation::ShuttersControl::CreateSunRiseSetShuttersTimer( $hash, $shuttersDev ); |                         FHEM::Automation::ShuttersControl::CreateSunRiseSetShuttersTimer( | ||||||
|  |                             $hash, $shuttersDev ); | ||||||
|                     } |                     } | ||||||
|                     else { |                     else { | ||||||
|                         $FHEM::Automation::ShuttersControl::shutters |                         $FHEM::Automation::ShuttersControl::shutters | ||||||
| @@ -1976,10 +2006,8 @@ sub EventProcessingBrightness { | |||||||
|                 $FHEM::Automation::ShuttersControl::shutters->setLastDrive( |                 $FHEM::Automation::ShuttersControl::shutters->setLastDrive( | ||||||
|                     $lastDrive); |                     $lastDrive); | ||||||
|  |  | ||||||
|                 if ( |                 if ( $FHEM::Automation::ShuttersControl::shutters | ||||||
|                     $FHEM::Automation::ShuttersControl::shutters |                     ->getPrivacyDownStatus != 2 ) | ||||||
|                     ->getPrivacyDownStatus != 2 |  | ||||||
|                   ) |  | ||||||
|                 { |                 { | ||||||
|                     $FHEM::Automation::ShuttersControl::shutters->setSunrise(0); |                     $FHEM::Automation::ShuttersControl::shutters->setSunrise(0); | ||||||
|                     $FHEM::Automation::ShuttersControl::shutters->setSunset(1); |                     $FHEM::Automation::ShuttersControl::shutters->setSunset(1); | ||||||
| @@ -2169,17 +2197,17 @@ sub EventProcessingTwilightDevice { | |||||||
|                   . $FHEM::Automation::ShuttersControl::shutters->getShuttersDev |                   . $FHEM::Automation::ShuttersControl::shutters->getShuttersDev | ||||||
|                   . ' RainProtection: ' |                   . ' RainProtection: ' | ||||||
|                   . $FHEM::Automation::ShuttersControl::shutters |                   . $FHEM::Automation::ShuttersControl::shutters | ||||||
|                     ->getRainProtectionStatus |                   ->getRainProtectionStatus | ||||||
|                   . ' WindProtection: ' |                   . ' WindProtection: ' | ||||||
|                   . $FHEM::Automation::ShuttersControl::shutters |                   . $FHEM::Automation::ShuttersControl::shutters | ||||||
|                     ->getWindProtectionStatus ); |                   ->getWindProtectionStatus ); | ||||||
|  |  | ||||||
|             if (   $FHEM::Automation::ShuttersControl::ascDev |             if ( $FHEM::Automation::ShuttersControl::ascDev | ||||||
|                    ->getAutoShuttersControlShading eq 'on' |                 ->getAutoShuttersControlShading eq 'on' | ||||||
|                 && $FHEM::Automation::ShuttersControl::shutters |                 && $FHEM::Automation::ShuttersControl::shutters | ||||||
|                    ->getRainProtectionStatus eq 'unprotected' |                 ->getRainProtectionStatus eq 'unprotected' | ||||||
|                 && $FHEM::Automation::ShuttersControl::shutters |                 && $FHEM::Automation::ShuttersControl::shutters | ||||||
|                    ->getWindProtectionStatus eq 'unprotected' ) |                 ->getWindProtectionStatus eq 'unprotected' ) | ||||||
|             { |             { | ||||||
|                 ShadingProcessing( |                 ShadingProcessing( | ||||||
|                     $hash, |                     $hash, | ||||||
| @@ -2248,12 +2276,14 @@ sub EventProcessingPartyMode { | |||||||
|                     $shuttersDev, |                     $shuttersDev, | ||||||
|                     ( |                     ( | ||||||
|                         CheckIfShuttersWindowRecOpen($shuttersDev) == 0 |                         CheckIfShuttersWindowRecOpen($shuttersDev) == 0 | ||||||
|                         ? ($FHEM::Automation::ShuttersControl::shutters |                         ? ( | ||||||
|  |                             $FHEM::Automation::ShuttersControl::shutters | ||||||
|                               ->getSleepPos > 0 |                               ->getSleepPos > 0 | ||||||
|                             ? $FHEM::Automation::ShuttersControl::shutters |                             ? $FHEM::Automation::ShuttersControl::shutters | ||||||
|                                 ->getSleepPos |                               ->getSleepPos | ||||||
|                             : $FHEM::Automation::ShuttersControl::shutters |                             : $FHEM::Automation::ShuttersControl::shutters | ||||||
|                                 ->getClosedPos) |                               ->getClosedPos | ||||||
|  |                           ) | ||||||
|                         : $FHEM::Automation::ShuttersControl::shutters |                         : $FHEM::Automation::ShuttersControl::shutters | ||||||
|                           ->getVentilatePos |                           ->getVentilatePos | ||||||
|                     ) |                     ) | ||||||
| @@ -2261,7 +2291,7 @@ sub EventProcessingPartyMode { | |||||||
|             } |             } | ||||||
|         } |         } | ||||||
|         elsif ( |         elsif ( | ||||||
|                $FHEM::Automation::ShuttersControl::shutters->getDelayCmd ne 'none' |             $FHEM::Automation::ShuttersControl::shutters->getDelayCmd ne 'none' | ||||||
|             && $FHEM::Automation::ShuttersControl::shutters->getIsDay |             && $FHEM::Automation::ShuttersControl::shutters->getIsDay | ||||||
|             && IsAfterShuttersManualBlocking($shuttersDev) ) |             && IsAfterShuttersManualBlocking($shuttersDev) ) | ||||||
|         { |         { | ||||||
| @@ -2373,6 +2403,22 @@ sub EventProcessingShutters { | |||||||
|             $FHEM::Automation::ShuttersControl::shutters->setLastDriveReading; |             $FHEM::Automation::ShuttersControl::shutters->setLastDriveReading; | ||||||
|             $FHEM::Automation::ShuttersControl::ascDev->setStateReading; |             $FHEM::Automation::ShuttersControl::ascDev->setStateReading; | ||||||
|  |  | ||||||
|  |             $FHEM::Automation::ShuttersControl::shutters->setHardLockOut('on') | ||||||
|  |               if ( | ||||||
|  |                 ( | ||||||
|  |                     $FHEM::Automation::ShuttersControl::shutters->getStatus == | ||||||
|  |                     $FHEM::Automation::ShuttersControl::shutters | ||||||
|  |                     ->getComfortOpenPos | ||||||
|  |                     || ( $FHEM::Automation::ShuttersControl::shutters->getStatus | ||||||
|  |                         == $FHEM::Automation::ShuttersControl::shutters | ||||||
|  |                         ->getOpenPos | ||||||
|  |                         && $FHEM::Automation::ShuttersControl::shutters | ||||||
|  |                         ->getLastDrive eq 'ventilate - window open' ) | ||||||
|  |                 ) | ||||||
|  |                 && $FHEM::Automation::ShuttersControl::shutters | ||||||
|  |                 ->getShuttersPlace eq 'terrace' | ||||||
|  |               ); | ||||||
|  |  | ||||||
|             FHEM::Automation::ShuttersControl::ASC_Debug( |             FHEM::Automation::ShuttersControl::ASC_Debug( | ||||||
| 'EventProcessingShutters: eine automatisierte Fahrt durch ASC wurde erkannt! Es werden nun die LastDriveReading und StateReading Werte gesetzt!' | 'EventProcessingShutters: eine automatisierte Fahrt durch ASC wurde erkannt! Es werden nun die LastDriveReading und StateReading Werte gesetzt!' | ||||||
|             ); |             ); | ||||||
| @@ -2485,7 +2531,4 @@ sub EventProcessingExternalTriggerDevice { | |||||||
|     return; |     return; | ||||||
| } | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
| 1; | 1; | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user