testing #94
@@ -1,10 +1,10 @@
 | 
			
		||||
UPD 2021-12-04_08:08:23 115678 FHEM/73_AutoShuttersControl.pm
 | 
			
		||||
UPD 2021-12-06_06:34:51 115678 FHEM/73_AutoShuttersControl.pm
 | 
			
		||||
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 2494 lib/FHEM/Automation/ShuttersControl/Roommate.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:50:05 110883 lib/FHEM/Automation/ShuttersControl/EventProcessingFunctions.pm
 | 
			
		||||
UPD 2021-12-04_10:58:06 25333 lib/FHEM/Automation/ShuttersControl/Shading.pm
 | 
			
		||||
UPD 2021-12-08_11:45:16 112810 lib/FHEM/Automation/ShuttersControl/EventProcessingFunctions.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 11739 lib/FHEM/Automation/ShuttersControl/Dev/Attr.pm
 | 
			
		||||
@@ -13,4 +13,4 @@ UPD 2021-10-27_08:50:46 52649 lib/FHEM/Automation/ShuttersControl/Shutters/Attr.
 | 
			
		||||
UPD 2021-10-09_07:12:54 2901 lib/FHEM/Automation/ShuttersControl/Shutters/Readings.pm
 | 
			
		||||
UPD 2021-10-09_07:12:54 3978 lib/FHEM/Automation/ShuttersControl/Window/Attr.pm
 | 
			
		||||
UPD 2021-10-09_07:12:54 2286 lib/FHEM/Automation/ShuttersControl/Window/Readings.pm
 | 
			
		||||
UPD 2021-11-25_08:28:33 6965 lib/FHEM/Automation/ShuttersControl/Rainprotection.pm
 | 
			
		||||
UPD 2021-12-06_06:34:51 6965 lib/FHEM/Automation/ShuttersControl/Rainprotection.pm
 | 
			
		||||
 
 | 
			
		||||
@@ -54,18 +54,18 @@ use FHEM::Automation::ShuttersControl::Rainprotection qw (:ALL);
 | 
			
		||||
require Exporter;
 | 
			
		||||
our @ISA       = qw(Exporter);
 | 
			
		||||
our @EXPORT_OK = qw(
 | 
			
		||||
                    EventProcessingPartyMode
 | 
			
		||||
                    EventProcessingGeneral
 | 
			
		||||
                    EventProcessingShutters
 | 
			
		||||
                    EventProcessingAdvShuttersClose
 | 
			
		||||
  EventProcessingPartyMode
 | 
			
		||||
  EventProcessingGeneral
 | 
			
		||||
  EventProcessingShutters
 | 
			
		||||
  EventProcessingAdvShuttersClose
 | 
			
		||||
);
 | 
			
		||||
our %EXPORT_TAGS = (
 | 
			
		||||
    ALL => [
 | 
			
		||||
        qw(
 | 
			
		||||
           EventProcessingPartyMode
 | 
			
		||||
           EventProcessingGeneral
 | 
			
		||||
           EventProcessingShutters
 | 
			
		||||
           EventProcessingAdvShuttersClose
 | 
			
		||||
          EventProcessingPartyMode
 | 
			
		||||
          EventProcessingGeneral
 | 
			
		||||
          EventProcessingShutters
 | 
			
		||||
          EventProcessingAdvShuttersClose
 | 
			
		||||
          )
 | 
			
		||||
    ],
 | 
			
		||||
);
 | 
			
		||||
@@ -75,12 +75,12 @@ use GPUtils qw(GP_Import);
 | 
			
		||||
BEGIN {
 | 
			
		||||
    GP_Import(
 | 
			
		||||
        qw(
 | 
			
		||||
           Log3
 | 
			
		||||
           gettimeofday
 | 
			
		||||
           computeAlignTime
 | 
			
		||||
           CommandSet
 | 
			
		||||
           ReadingsVal
 | 
			
		||||
           RemoveInternalTimer
 | 
			
		||||
          Log3
 | 
			
		||||
          gettimeofday
 | 
			
		||||
          computeAlignTime
 | 
			
		||||
          CommandSet
 | 
			
		||||
          ReadingsVal
 | 
			
		||||
          RemoveInternalTimer
 | 
			
		||||
          )
 | 
			
		||||
    );
 | 
			
		||||
}
 | 
			
		||||
@@ -94,8 +94,12 @@ sub EventProcessingGeneral {
 | 
			
		||||
 | 
			
		||||
    if ( defined($devname) && ($devname) )
 | 
			
		||||
    { # 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 $rainReading = $FHEM::Automation::ShuttersControl::ascDev->getRainSensorReading // 'none';
 | 
			
		||||
        my $windReading =
 | 
			
		||||
          $FHEM::Automation::ShuttersControl::ascDev->getWindSensorReading
 | 
			
		||||
          // 'none';
 | 
			
		||||
        my $rainReading =
 | 
			
		||||
          $FHEM::Automation::ShuttersControl::ascDev->getRainSensorReading
 | 
			
		||||
          // 'none';
 | 
			
		||||
 | 
			
		||||
        while ( my ( $device, $deviceAttr ) =
 | 
			
		||||
            each %{ $hash->{monitoredDevs}{$devname} } )
 | 
			
		||||
@@ -122,13 +126,16 @@ sub EventProcessingGeneral {
 | 
			
		||||
            EventProcessingExternalTriggerDevice( $hash, $device, $events )
 | 
			
		||||
              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'
 | 
			
		||||
                && (   $FHEM::Automation::ShuttersControl::shutters->getDown eq 'brightness'
 | 
			
		||||
                    || $FHEM::Automation::ShuttersControl::shutters->getUp eq 'brightness' )
 | 
			
		||||
                && ( $FHEM::Automation::ShuttersControl::shutters->getDown eq
 | 
			
		||||
                    'brightness'
 | 
			
		||||
                    || $FHEM::Automation::ShuttersControl::shutters->getUp eq
 | 
			
		||||
                    'brightness' )
 | 
			
		||||
              )
 | 
			
		||||
            {
 | 
			
		||||
                EventProcessingBrightness( $hash, $device, $events );
 | 
			
		||||
@@ -147,7 +154,8 @@ sub EventProcessingGeneral {
 | 
			
		||||
             \s(.*)$}xms
 | 
			
		||||
          )
 | 
			
		||||
        {     # 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,
 | 
			
		||||
                "AutoShuttersControl ($name) - EventProcessing: ATTR" );
 | 
			
		||||
        }
 | 
			
		||||
@@ -175,11 +183,13 @@ sub EventProcessingGeneral {
 | 
			
		||||
                (.*)?}xms
 | 
			
		||||
          )
 | 
			
		||||
        {
 | 
			
		||||
            FHEM::Automation::ShuttersControl::CreateSunRiseSetShuttersTimer( $hash, $2 )
 | 
			
		||||
            FHEM::Automation::ShuttersControl::CreateSunRiseSetShuttersTimer(
 | 
			
		||||
                $hash, $2 )
 | 
			
		||||
              if (
 | 
			
		||||
                $3 ne '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 (
 | 
			
		||||
@@ -189,7 +199,8 @@ sub EventProcessingGeneral {
 | 
			
		||||
                (.*)?}xms
 | 
			
		||||
          )
 | 
			
		||||
        {
 | 
			
		||||
            FHEM::Automation::ShuttersControl::RenewSunRiseSetShuttersTimer($hash);
 | 
			
		||||
            FHEM::Automation::ShuttersControl::RenewSunRiseSetShuttersTimer(
 | 
			
		||||
                $hash);
 | 
			
		||||
        }
 | 
			
		||||
        elsif (
 | 
			
		||||
            $events =~ m{^(DELETEATTR|ATTR)
 | 
			
		||||
@@ -197,7 +208,8 @@ sub EventProcessingGeneral {
 | 
			
		||||
                (.*)?}xms
 | 
			
		||||
          )
 | 
			
		||||
        {
 | 
			
		||||
            $FHEM::Automation::ShuttersControl::shutters->deleteShadingStateChangeSunny;
 | 
			
		||||
            $FHEM::Automation::ShuttersControl::shutters
 | 
			
		||||
              ->deleteShadingStateChangeSunny;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        if (
 | 
			
		||||
@@ -210,20 +222,21 @@ m{^(DELETEATTR|ATTR)         #global ATTR myASC ASC_tempSensor Cellar
 | 
			
		||||
                (.*)?}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 ) {
 | 
			
		||||
                my %funcHash = (
 | 
			
		||||
                    hash            => $hash,
 | 
			
		||||
                    shuttersdevice  => $1,
 | 
			
		||||
                    value           => $2,
 | 
			
		||||
                    attrEvent       => 1,
 | 
			
		||||
                    hash           => $hash,
 | 
			
		||||
                    shuttersdevice => $1,
 | 
			
		||||
                    value          => $2,
 | 
			
		||||
                    attrEvent      => 1,
 | 
			
		||||
                );
 | 
			
		||||
 | 
			
		||||
                FHEM::Automation::ShuttersControl::Shading::_CheckShuttersConditionsForShadingFn(\%funcHash);
 | 
			
		||||
                FHEM::Automation::ShuttersControl::Shading::_CheckShuttersConditionsForShadingFn(
 | 
			
		||||
                    \%funcHash );
 | 
			
		||||
            }
 | 
			
		||||
            else {
 | 
			
		||||
                CommandSet( undef, $name . ' controlShading on' )
 | 
			
		||||
                if ( ReadingsVal( $name, 'controlShading', 'off' ) ne 'off' );
 | 
			
		||||
                  if ( ReadingsVal( $name, 'controlShading', 'off' ) ne 'off' );
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
@@ -243,9 +256,16 @@ sub EventProcessingWindowRec {
 | 
			
		||||
      $FHEM::Automation::ShuttersControl::shutters->getWinDevReading;
 | 
			
		||||
 | 
			
		||||
    if ( $events =~
 | 
			
		||||
        m{.*$reading:.*?([Oo]pen(?>ed)?|[Cc]losed?|tilt(?>ed)?|true|false)}xms
 | 
			
		||||
        && IsAfterShuttersManualBlocking($shuttersDev) )
 | 
			
		||||
        m{.*$reading:.*?([Oo]pen(?>ed)?|[Cc]losed?|tilt(?>ed)?|true|false)}xms )
 | 
			
		||||
    {
 | 
			
		||||
        return
 | 
			
		||||
          if ( !IsAfterShuttersManualBlocking($shuttersDev)
 | 
			
		||||
            && ( $FHEM::Automation::ShuttersControl::shutters->getLockOut eq
 | 
			
		||||
            'off'
 | 
			
		||||
              || $FHEM::Automation::ShuttersControl::shutters->getShuttersPlace
 | 
			
		||||
            ne 'terrace' )
 | 
			
		||||
          );
 | 
			
		||||
 | 
			
		||||
        my $match = $1;
 | 
			
		||||
 | 
			
		||||
        FHEM::Automation::ShuttersControl::ASC_Debug(
 | 
			
		||||
@@ -260,11 +280,7 @@ sub EventProcessingWindowRec {
 | 
			
		||||
 | 
			
		||||
        $FHEM::Automation::ShuttersControl::shutters->setShuttersDev(
 | 
			
		||||
            $shuttersDev);
 | 
			
		||||
        my $homemode =
 | 
			
		||||
          $FHEM::Automation::ShuttersControl::shutters->getRoommatesStatus;
 | 
			
		||||
        $homemode =
 | 
			
		||||
          $FHEM::Automation::ShuttersControl::ascDev->getResidentsStatus
 | 
			
		||||
          if ( $homemode eq 'none' );
 | 
			
		||||
        
 | 
			
		||||
 | 
			
		||||
        #### Hardware Lock der Rollläden
 | 
			
		||||
        $FHEM::Automation::ShuttersControl::shutters->setHardLockOut('off')
 | 
			
		||||
@@ -272,9 +288,29 @@ sub EventProcessingWindowRec {
 | 
			
		||||
            && $FHEM::Automation::ShuttersControl::shutters->getShuttersPlace
 | 
			
		||||
            eq 'terrace' );
 | 
			
		||||
        $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
 | 
			
		||||
            eq 'terrace' );
 | 
			
		||||
            eq 'terrace'
 | 
			
		||||
            && ( $FHEM::Automation::ShuttersControl::shutters->getStatus ==
 | 
			
		||||
                   $FHEM::Automation::ShuttersControl::shutters->getOpenPos
 | 
			
		||||
                || $FHEM::Automation::ShuttersControl::shutters->getStatus ==
 | 
			
		||||
                $FHEM::Automation::ShuttersControl::shutters->getComfortOpenPos
 | 
			
		||||
            )
 | 
			
		||||
          );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
        return
 | 
			
		||||
          if ( !IsAfterShuttersManualBlocking($shuttersDev) );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
          
 | 
			
		||||
        my $homemode =
 | 
			
		||||
          $FHEM::Automation::ShuttersControl::shutters->getRoommatesStatus;
 | 
			
		||||
        $homemode =
 | 
			
		||||
          $FHEM::Automation::ShuttersControl::ascDev->getResidentsStatus
 | 
			
		||||
          if ( $homemode eq 'none' );  
 | 
			
		||||
 | 
			
		||||
        FHEM::Automation::ShuttersControl::ASC_Debug(
 | 
			
		||||
                'EventProcessingWindowRec: '
 | 
			
		||||
@@ -283,12 +319,12 @@ sub EventProcessingWindowRec {
 | 
			
		||||
              . $homemode
 | 
			
		||||
              . ' QueryShuttersPosWinRecTilted:'
 | 
			
		||||
              . $FHEM::Automation::ShuttersControl::shutters
 | 
			
		||||
                  ->getQueryShuttersPos(
 | 
			
		||||
              ->getQueryShuttersPos(
 | 
			
		||||
                $FHEM::Automation::ShuttersControl::shutters->getVentilatePos
 | 
			
		||||
              )
 | 
			
		||||
              . ' QueryShuttersPosWinRecComfort: '
 | 
			
		||||
              . $FHEM::Automation::ShuttersControl::shutters
 | 
			
		||||
                  ->getQueryShuttersPos(
 | 
			
		||||
              ->getQueryShuttersPos(
 | 
			
		||||
                $FHEM::Automation::ShuttersControl::shutters->getComfortOpenPos
 | 
			
		||||
              )
 | 
			
		||||
        );
 | 
			
		||||
@@ -301,41 +337,40 @@ sub EventProcessingWindowRec {
 | 
			
		||||
                $FHEM::Automation::ShuttersControl::shutters->getVentilatePos
 | 
			
		||||
                || $FHEM::Automation::ShuttersControl::shutters->getStatus ==
 | 
			
		||||
                $FHEM::Automation::ShuttersControl::shutters->getComfortOpenPos
 | 
			
		||||
                || (   $FHEM::Automation::ShuttersControl::shutters->getStatus ==
 | 
			
		||||
                || ( $FHEM::Automation::ShuttersControl::shutters->getStatus ==
 | 
			
		||||
                       $FHEM::Automation::ShuttersControl::shutters->getOpenPos
 | 
			
		||||
                    && $FHEM::Automation::ShuttersControl::shutters->getLastDrive
 | 
			
		||||
                      eq 'ventilate - window open'
 | 
			
		||||
                    && $FHEM::Automation::ShuttersControl::shutters
 | 
			
		||||
                    ->getLastDrive eq 'ventilate - window open'
 | 
			
		||||
                    && $FHEM::Automation::ShuttersControl::shutters->getSubTyp
 | 
			
		||||
                      eq 'twostate'
 | 
			
		||||
                    && $FHEM::Automation::ShuttersControl::shutters->getVentilateOpen
 | 
			
		||||
                      eq 'on' )
 | 
			
		||||
                    eq 'twostate'
 | 
			
		||||
                    && $FHEM::Automation::ShuttersControl::shutters
 | 
			
		||||
                    ->getVentilateOpen eq 'on' )
 | 
			
		||||
                || ( $FHEM::Automation::ShuttersControl::shutters->getStatus ==
 | 
			
		||||
                    $FHEM::Automation::ShuttersControl::shutters
 | 
			
		||||
                      ->getPrivacyDownPos
 | 
			
		||||
                    ->getPrivacyDownPos
 | 
			
		||||
                    && $FHEM::Automation::ShuttersControl::shutters
 | 
			
		||||
                         ->getPrivacyDownStatus != 2
 | 
			
		||||
                    ->getPrivacyDownStatus != 2
 | 
			
		||||
                    && !$FHEM::Automation::ShuttersControl::shutters->getIsDay )
 | 
			
		||||
                || ( $FHEM::Automation::ShuttersControl::shutters->getStatus ==
 | 
			
		||||
                      $FHEM::Automation::ShuttersControl::shutters
 | 
			
		||||
                         ->getOpenPos
 | 
			
		||||
                    && (   $FHEM::Automation::ShuttersControl::shutters
 | 
			
		||||
                             ->getLockOut ne 'off'
 | 
			
		||||
                || (
 | 
			
		||||
                    $FHEM::Automation::ShuttersControl::shutters->getStatus ==
 | 
			
		||||
                    $FHEM::Automation::ShuttersControl::shutters->getOpenPos
 | 
			
		||||
                    && ( $FHEM::Automation::ShuttersControl::shutters
 | 
			
		||||
                        ->getLockOut ne 'off'
 | 
			
		||||
                        || $FHEM::Automation::ShuttersControl::shutters
 | 
			
		||||
                             ->getShuttersPlace eq 'terrace'
 | 
			
		||||
                       )
 | 
			
		||||
                    && !$FHEM::Automation::ShuttersControl::shutters->getIsDay )
 | 
			
		||||
                        ->getShuttersPlace eq 'terrace' )
 | 
			
		||||
                    && !$FHEM::Automation::ShuttersControl::shutters->getIsDay
 | 
			
		||||
                )
 | 
			
		||||
                || ( $FHEM::Automation::ShuttersControl::shutters->getStatus ==
 | 
			
		||||
                      $FHEM::Automation::ShuttersControl::shutters
 | 
			
		||||
                         ->getOpenPos
 | 
			
		||||
                       $FHEM::Automation::ShuttersControl::shutters->getOpenPos
 | 
			
		||||
                    && $FHEM::Automation::ShuttersControl::shutters
 | 
			
		||||
                         ->getDelayCmd ne 'none'
 | 
			
		||||
                    ->getDelayCmd ne 'none'
 | 
			
		||||
                    && $FHEM::Automation::ShuttersControl::shutters
 | 
			
		||||
                         ->getShuttersPlace eq 'terrace' )
 | 
			
		||||
                    ->getShuttersPlace eq 'terrace' )
 | 
			
		||||
            )
 | 
			
		||||
            && ( $FHEM::Automation::ShuttersControl::shutters->getVentilateOpen
 | 
			
		||||
                eq 'on'
 | 
			
		||||
                || $FHEM::Automation::ShuttersControl::ascDev
 | 
			
		||||
                     ->getAutoShuttersControlComfort eq 'on' )
 | 
			
		||||
                ->getAutoShuttersControlComfort eq 'on' )
 | 
			
		||||
          )
 | 
			
		||||
        {
 | 
			
		||||
            FHEM::Automation::ShuttersControl::ASC_Debug(
 | 
			
		||||
@@ -371,18 +406,19 @@ sub EventProcessingWindowRec {
 | 
			
		||||
                elsif (
 | 
			
		||||
                    !$FHEM::Automation::ShuttersControl::shutters
 | 
			
		||||
                    ->getIfInShading
 | 
			
		||||
                    && ( $FHEM::Automation::ShuttersControl::shutters->getStatus
 | 
			
		||||
                    && (
 | 
			
		||||
                        $FHEM::Automation::ShuttersControl::shutters->getStatus
 | 
			
		||||
                        != $FHEM::Automation::ShuttersControl::shutters
 | 
			
		||||
                        ->getOpenPos
 | 
			
		||||
                        || $FHEM::Automation::ShuttersControl::shutters
 | 
			
		||||
                        ->getStatus !=
 | 
			
		||||
                        $FHEM::Automation::ShuttersControl::shutters
 | 
			
		||||
                        ->getLastManPos
 | 
			
		||||
                        || (   $FHEM::Automation::ShuttersControl::shutters
 | 
			
		||||
                                 ->getDelayCmd ne 'none'
 | 
			
		||||
                        || ( $FHEM::Automation::ShuttersControl::shutters
 | 
			
		||||
                            ->getDelayCmd ne 'none'
 | 
			
		||||
                            && $FHEM::Automation::ShuttersControl::shutters
 | 
			
		||||
                                 ->getShuttersPlace eq 'terrace' )
 | 
			
		||||
                        )
 | 
			
		||||
                            ->getShuttersPlace eq 'terrace' )
 | 
			
		||||
                    )
 | 
			
		||||
                  )
 | 
			
		||||
                {
 | 
			
		||||
                    if ( $FHEM::Automation::ShuttersControl::shutters
 | 
			
		||||
@@ -407,40 +443,44 @@ sub EventProcessingWindowRec {
 | 
			
		||||
                          ->setDriveCmd(
 | 
			
		||||
                            (
 | 
			
		||||
                                $FHEM::Automation::ShuttersControl::shutters
 | 
			
		||||
                                    ->getDelayCmd ne 'none'
 | 
			
		||||
                                  ->getDelayCmd ne 'none'
 | 
			
		||||
                                  && $FHEM::Automation::ShuttersControl::shutters
 | 
			
		||||
                                    ->getShuttersPlace eq 'terrace'
 | 
			
		||||
                                  ->getShuttersPlace eq 'terrace'
 | 
			
		||||
                                ? $FHEM::Automation::ShuttersControl::shutters
 | 
			
		||||
                                    ->getDelayCmd
 | 
			
		||||
                                : ( $FHEM::Automation::ShuttersControl::shutters
 | 
			
		||||
                                  ->getDelayCmd
 | 
			
		||||
                                : (
 | 
			
		||||
                                    $FHEM::Automation::ShuttersControl::shutters
 | 
			
		||||
                                      ->getVentilatePosAfterDayClosed eq 'open'
 | 
			
		||||
                                ? $FHEM::Automation::ShuttersControl::shutters
 | 
			
		||||
                                    ->getOpenPos
 | 
			
		||||
                                : $FHEM::Automation::ShuttersControl::shutters
 | 
			
		||||
                                    ->getLastManPos )
 | 
			
		||||
                                    ? $FHEM::Automation::ShuttersControl::shutters
 | 
			
		||||
                                      ->getOpenPos
 | 
			
		||||
                                    : $FHEM::Automation::ShuttersControl::shutters
 | 
			
		||||
                                      ->getLastManPos
 | 
			
		||||
                                )
 | 
			
		||||
                            )
 | 
			
		||||
                          );
 | 
			
		||||
                    }
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
            elsif (
 | 
			
		||||
                   !$FHEM::Automation::ShuttersControl::shutters->getIsDay
 | 
			
		||||
                && $FHEM::Automation::ShuttersControl::shutters->getModeDown eq 'roommate'
 | 
			
		||||
                && ( $FHEM::Automation::ShuttersControl::shutters->getRoommatesStatus eq 'home'
 | 
			
		||||
                  || $FHEM::Automation::ShuttersControl::shutters->getRoommatesStatus eq 'awoken' )
 | 
			
		||||
                  !$FHEM::Automation::ShuttersControl::shutters->getIsDay
 | 
			
		||||
                && $FHEM::Automation::ShuttersControl::shutters->getModeDown eq
 | 
			
		||||
                'roommate'
 | 
			
		||||
                && ( $FHEM::Automation::ShuttersControl::shutters
 | 
			
		||||
                    ->getRoommatesStatus eq 'home'
 | 
			
		||||
                    || $FHEM::Automation::ShuttersControl::shutters
 | 
			
		||||
                    ->getRoommatesStatus eq 'awoken' )
 | 
			
		||||
              )
 | 
			
		||||
            {
 | 
			
		||||
                $FHEM::Automation::ShuttersControl::shutters
 | 
			
		||||
                          ->setDriveCmd(
 | 
			
		||||
                            (
 | 
			
		||||
                                $FHEM::Automation::ShuttersControl::shutters
 | 
			
		||||
                                  ->getVentilatePosAfterDayClosed eq 'open'
 | 
			
		||||
                                ? $FHEM::Automation::ShuttersControl::shutters
 | 
			
		||||
                                  ->getOpenPos
 | 
			
		||||
                                : $FHEM::Automation::ShuttersControl::shutters
 | 
			
		||||
                                  ->getLastManPos
 | 
			
		||||
                            )
 | 
			
		||||
                          );
 | 
			
		||||
                $FHEM::Automation::ShuttersControl::shutters->setDriveCmd(
 | 
			
		||||
                    (
 | 
			
		||||
                        $FHEM::Automation::ShuttersControl::shutters
 | 
			
		||||
                          ->getVentilatePosAfterDayClosed eq 'open'
 | 
			
		||||
                        ? $FHEM::Automation::ShuttersControl::shutters
 | 
			
		||||
                          ->getOpenPos
 | 
			
		||||
                        : $FHEM::Automation::ShuttersControl::shutters
 | 
			
		||||
                          ->getLastManPos
 | 
			
		||||
                    )
 | 
			
		||||
                );
 | 
			
		||||
            }
 | 
			
		||||
            elsif (
 | 
			
		||||
                $FHEM::Automation::ShuttersControl::shutters->getModeDown ne
 | 
			
		||||
@@ -495,9 +535,11 @@ sub EventProcessingWindowRec {
 | 
			
		||||
            )
 | 
			
		||||
            && $FHEM::Automation::ShuttersControl::shutters->getVentilateOpen
 | 
			
		||||
            eq 'on'
 | 
			
		||||
            && $FHEM::Automation::ShuttersControl::shutters
 | 
			
		||||
            && ( $FHEM::Automation::ShuttersControl::shutters
 | 
			
		||||
            ->getQueryShuttersPos(
 | 
			
		||||
                $FHEM::Automation::ShuttersControl::shutters->getVentilatePos
 | 
			
		||||
                $FHEM::Automation::ShuttersControl::shutters->getVentilatePos)
 | 
			
		||||
              || ( $FHEM::Automation::ShuttersControl::shutters->getShuttersPlace eq 'terrace'
 | 
			
		||||
                && $FHEM::Automation::ShuttersControl::shutters->getSubTyp eq 'twostate' )
 | 
			
		||||
            )
 | 
			
		||||
          )
 | 
			
		||||
        {
 | 
			
		||||
@@ -821,7 +863,7 @@ sub EventProcessingRoommate {
 | 
			
		||||
        elsif (
 | 
			
		||||
            ( $event eq 'gotosleep' || $event eq 'asleep' )
 | 
			
		||||
            && $FHEM::Automation::ShuttersControl::shutters->getModeDown ne
 | 
			
		||||
                'absent'
 | 
			
		||||
            'absent'
 | 
			
		||||
            && ( $FHEM::Automation::ShuttersControl::ascDev
 | 
			
		||||
                ->getAutoShuttersControlEvening eq 'on'
 | 
			
		||||
                || $FHEM::Automation::ShuttersControl::shutters->getDown eq
 | 
			
		||||
@@ -975,6 +1017,7 @@ sub EventProcessingResidents {
 | 
			
		||||
                && $FHEM::Automation::ShuttersControl::shutters
 | 
			
		||||
                ->getSelfDefenseMode ne 'off'
 | 
			
		||||
                || $getModeDown eq 'absent'
 | 
			
		||||
 | 
			
		||||
#                     || $getModeDown eq 'always' )       Wird zu Testzwecken auskommentiert, siehe #90 Github
 | 
			
		||||
                || ( $FHEM::Automation::ShuttersControl::shutters
 | 
			
		||||
                    ->getShadingMode eq 'absent'
 | 
			
		||||
@@ -992,15 +1035,17 @@ sub EventProcessingResidents {
 | 
			
		||||
                    && (
 | 
			
		||||
                        $FHEM::Automation::ShuttersControl::shutters
 | 
			
		||||
                        ->getSelfDefenseMode eq 'absent'
 | 
			
		||||
                        || ( CheckIfShuttersWindowRecOpen($shuttersDev) == 2
 | 
			
		||||
                        || (
 | 
			
		||||
                            CheckIfShuttersWindowRecOpen($shuttersDev) == 2
 | 
			
		||||
                            && $FHEM::Automation::ShuttersControl::shutters
 | 
			
		||||
                            ->getSelfDefenseMode eq 'gone'
 | 
			
		||||
                            && ( $FHEM::Automation::ShuttersControl::shutters
 | 
			
		||||
                                ->getShuttersPlace eq 'terrace'
 | 
			
		||||
                              || $FHEM::Automation::ShuttersControl::shutters
 | 
			
		||||
                                || $FHEM::Automation::ShuttersControl::shutters
 | 
			
		||||
                                ->getShuttersPlace eq 'EG_window' )
 | 
			
		||||
                            && $FHEM::Automation::ShuttersControl::shutters
 | 
			
		||||
                            ->getSelfDefenseMode ne 'off' )
 | 
			
		||||
                            ->getSelfDefenseMode ne 'off'
 | 
			
		||||
                        )
 | 
			
		||||
                    )
 | 
			
		||||
                  )
 | 
			
		||||
                {
 | 
			
		||||
@@ -1051,11 +1096,14 @@ sub EventProcessingResidents {
 | 
			
		||||
                        $FHEM::Automation::ShuttersControl::shutters
 | 
			
		||||
                          ->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
 | 
			
		||||
                    && IsAfterShuttersTimeBlocking($shuttersDev)
 | 
			
		||||
                    && $FHEM::Automation::ShuttersControl::shutters
 | 
			
		||||
                    ->getRoommatesStatus eq 'none' )
 | 
			
		||||
                    ->getRoommatesStatus eq 'none'
 | 
			
		||||
                  )
 | 
			
		||||
                {
 | 
			
		||||
                    $FHEM::Automation::ShuttersControl::shutters->setLastDrive(
 | 
			
		||||
                        'residents absent');
 | 
			
		||||
@@ -1115,7 +1163,8 @@ sub EventProcessingResidents {
 | 
			
		||||
                ->getRoommatesStatus eq 'none'
 | 
			
		||||
                && (   $getModeDown eq 'home'
 | 
			
		||||
                    || $getModeDown eq 'always' )
 | 
			
		||||
                && $FHEM::Automation::ShuttersControl::ascDev->getAutoShuttersControlEvening eq 'on'
 | 
			
		||||
                && $FHEM::Automation::ShuttersControl::ascDev
 | 
			
		||||
                ->getAutoShuttersControlEvening eq 'on'
 | 
			
		||||
                && $getResidentsLastStatus ne 'asleep'
 | 
			
		||||
                && $getResidentsLastStatus ne 'awoken'
 | 
			
		||||
                && IsAfterShuttersTimeBlocking($shuttersDev)
 | 
			
		||||
@@ -1263,7 +1312,8 @@ sub EventProcessingResidents {
 | 
			
		||||
                ->getRoommatesStatus eq 'none'
 | 
			
		||||
                && (   $getModeUp eq 'home'
 | 
			
		||||
                    || $getModeUp eq 'always' )
 | 
			
		||||
                && $FHEM::Automation::ShuttersControl::ascDev->getAutoShuttersControlMorning eq 'on'
 | 
			
		||||
                && $FHEM::Automation::ShuttersControl::ascDev
 | 
			
		||||
                ->getAutoShuttersControlMorning eq 'on'
 | 
			
		||||
                && IsAfterShuttersTimeBlocking($shuttersDev)
 | 
			
		||||
                && !$FHEM::Automation::ShuttersControl::shutters->getIfInShading
 | 
			
		||||
                && !$FHEM::Automation::ShuttersControl::shutters
 | 
			
		||||
@@ -1382,8 +1432,9 @@ sub EventProcessingWind {
 | 
			
		||||
                          $FHEM::Automation::ShuttersControl::shutters->getIsDay
 | 
			
		||||
                        ? $FHEM::Automation::ShuttersControl::shutters
 | 
			
		||||
                          ->getLastPos
 | 
			
		||||
                        : ( $FHEM::Automation::ShuttersControl::shutters->getShuttersPlace
 | 
			
		||||
                            eq 'awning'
 | 
			
		||||
                        : (
 | 
			
		||||
                            $FHEM::Automation::ShuttersControl::shutters
 | 
			
		||||
                              ->getShuttersPlace eq 'awning'
 | 
			
		||||
                            ? $FHEM::Automation::ShuttersControl::shutters
 | 
			
		||||
                              ->getOpenPos
 | 
			
		||||
                            : (
 | 
			
		||||
@@ -1794,7 +1845,8 @@ sub EventProcessingBrightness {
 | 
			
		||||
                              . $FHEM::Automation::ShuttersControl::shutters
 | 
			
		||||
                              ->getLastDrive );
 | 
			
		||||
 | 
			
		||||
                        FHEM::Automation::ShuttersControl::CreateSunRiseSetShuttersTimer( $hash, $shuttersDev );
 | 
			
		||||
                        FHEM::Automation::ShuttersControl::CreateSunRiseSetShuttersTimer(
 | 
			
		||||
                            $hash, $shuttersDev );
 | 
			
		||||
                    }
 | 
			
		||||
                    else {
 | 
			
		||||
                        $FHEM::Automation::ShuttersControl::shutters
 | 
			
		||||
@@ -1971,10 +2023,8 @@ sub EventProcessingBrightness {
 | 
			
		||||
                $FHEM::Automation::ShuttersControl::shutters->setLastDrive(
 | 
			
		||||
                    $lastDrive);
 | 
			
		||||
 | 
			
		||||
                if (
 | 
			
		||||
                    $FHEM::Automation::ShuttersControl::shutters
 | 
			
		||||
                    ->getPrivacyDownStatus != 2
 | 
			
		||||
                  )
 | 
			
		||||
                if ( $FHEM::Automation::ShuttersControl::shutters
 | 
			
		||||
                    ->getPrivacyDownStatus != 2 )
 | 
			
		||||
                {
 | 
			
		||||
                    $FHEM::Automation::ShuttersControl::shutters->setSunrise(0);
 | 
			
		||||
                    $FHEM::Automation::ShuttersControl::shutters->setSunset(1);
 | 
			
		||||
@@ -2164,17 +2214,17 @@ sub EventProcessingTwilightDevice {
 | 
			
		||||
                  . $FHEM::Automation::ShuttersControl::shutters->getShuttersDev
 | 
			
		||||
                  . ' RainProtection: '
 | 
			
		||||
                  . $FHEM::Automation::ShuttersControl::shutters
 | 
			
		||||
                    ->getRainProtectionStatus
 | 
			
		||||
                  ->getRainProtectionStatus
 | 
			
		||||
                  . ' WindProtection: '
 | 
			
		||||
                  . $FHEM::Automation::ShuttersControl::shutters
 | 
			
		||||
                    ->getWindProtectionStatus );
 | 
			
		||||
                  ->getWindProtectionStatus );
 | 
			
		||||
 | 
			
		||||
            if (   $FHEM::Automation::ShuttersControl::ascDev
 | 
			
		||||
                   ->getAutoShuttersControlShading eq 'on'
 | 
			
		||||
            if ( $FHEM::Automation::ShuttersControl::ascDev
 | 
			
		||||
                ->getAutoShuttersControlShading eq 'on'
 | 
			
		||||
                && $FHEM::Automation::ShuttersControl::shutters
 | 
			
		||||
                   ->getRainProtectionStatus eq 'unprotected'
 | 
			
		||||
                ->getRainProtectionStatus eq 'unprotected'
 | 
			
		||||
                && $FHEM::Automation::ShuttersControl::shutters
 | 
			
		||||
                   ->getWindProtectionStatus eq 'unprotected' )
 | 
			
		||||
                ->getWindProtectionStatus eq 'unprotected' )
 | 
			
		||||
            {
 | 
			
		||||
                ShadingProcessing(
 | 
			
		||||
                    $hash,
 | 
			
		||||
@@ -2243,12 +2293,14 @@ sub EventProcessingPartyMode {
 | 
			
		||||
                    $shuttersDev,
 | 
			
		||||
                    (
 | 
			
		||||
                        CheckIfShuttersWindowRecOpen($shuttersDev) == 0
 | 
			
		||||
                        ? ($FHEM::Automation::ShuttersControl::shutters
 | 
			
		||||
                        ? (
 | 
			
		||||
                            $FHEM::Automation::ShuttersControl::shutters
 | 
			
		||||
                              ->getSleepPos > 0
 | 
			
		||||
                            ? $FHEM::Automation::ShuttersControl::shutters
 | 
			
		||||
                                ->getSleepPos
 | 
			
		||||
                              ->getSleepPos
 | 
			
		||||
                            : $FHEM::Automation::ShuttersControl::shutters
 | 
			
		||||
                                ->getClosedPos)
 | 
			
		||||
                              ->getClosedPos
 | 
			
		||||
                          )
 | 
			
		||||
                        : $FHEM::Automation::ShuttersControl::shutters
 | 
			
		||||
                          ->getVentilatePos
 | 
			
		||||
                    )
 | 
			
		||||
@@ -2256,7 +2308,7 @@ sub EventProcessingPartyMode {
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
        elsif (
 | 
			
		||||
               $FHEM::Automation::ShuttersControl::shutters->getDelayCmd ne 'none'
 | 
			
		||||
            $FHEM::Automation::ShuttersControl::shutters->getDelayCmd ne 'none'
 | 
			
		||||
            && $FHEM::Automation::ShuttersControl::shutters->getIsDay
 | 
			
		||||
            && IsAfterShuttersManualBlocking($shuttersDev) )
 | 
			
		||||
        {
 | 
			
		||||
@@ -2368,6 +2420,22 @@ sub EventProcessingShutters {
 | 
			
		||||
            $FHEM::Automation::ShuttersControl::shutters->setLastDriveReading;
 | 
			
		||||
            $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(
 | 
			
		||||
'EventProcessingShutters: eine automatisierte Fahrt durch ASC wurde erkannt! Es werden nun die LastDriveReading und StateReading Werte gesetzt!'
 | 
			
		||||
            );
 | 
			
		||||
@@ -2480,7 +2548,4 @@ sub EventProcessingExternalTriggerDevice {
 | 
			
		||||
    return;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
1;
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user