change homemmode condition for shading in shadingDrive Fn
This commit is contained in:
		| @@ -339,16 +339,16 @@ sub Define($$) { | ||||
|  | ||||
|     my $name = $a[0]; | ||||
|  | ||||
|     $hash->{MID}        = 'da39a3ee5e6b4b0d3255bfef95601890afd80709' | ||||
|     $hash->{MID} = 'da39a3ee5e6b4b0d3255bfef95601890afd80709' | ||||
|       ; # eine Ein Eindeutige ID für interne FHEM Belange / nicht weiter wichtig | ||||
|        | ||||
| #   ### Versionierung ### | ||||
|     # Stable Version | ||||
| #     $hash->{VERSION}    = version->parse($VERSION)->normal; | ||||
|     # Developer Version | ||||
|     $hash->{DEV_VERSION}    = FHEM::Meta::Get( $hash, 'x_developmentversion' ); | ||||
|  | ||||
|     $hash->{NOTIFYDEV}  = 'global,' | ||||
|     #   ### Versionierung ### | ||||
|     # Stable Version | ||||
|     #     $hash->{VERSION}    = version->parse($VERSION)->normal; | ||||
|     # Developer Version | ||||
|     $hash->{DEV_VERSION} = FHEM::Meta::Get( $hash, 'x_developmentversion' ); | ||||
|  | ||||
|     $hash->{NOTIFYDEV} = 'global,' | ||||
|       . $name;    # Liste aller Devices auf deren Events gehört werden sollen | ||||
|                   #$hash->{shutters} = $shutters; | ||||
|                   #$hash->{ascDev} = $ascDev; | ||||
| @@ -726,16 +726,16 @@ sub ShuttersDeviceScan($) { | ||||
|           if ( ReadingsVal( $_, 'ASC_Enable', 'none' ) eq 'none' ); | ||||
|     } | ||||
|  | ||||
| #    ### Temporär und muss später entfernt werden | ||||
| #     CommandAttr( undef, | ||||
| #             $name | ||||
| #           . ' ASC_brightnessDriveUpDown ' | ||||
| #           . AttrVal( $name, 'ASC_brightnessMinVal', 500 ) . ':' | ||||
| #           . AttrVal( $name, 'ASC_brightnessMaxVal', 800 ) ) | ||||
| #       if ( AttrVal( $name, 'ASC_brightnessMinVal', 'none' ) ne 'none' ); | ||||
| # | ||||
| #     CommandDeleteAttr( undef, $name . ' ASC_brightnessMaxVal' ) | ||||
| #       if ( AttrVal( $name, 'ASC_brightnessMaxVal', 'none' ) ne 'none' ); | ||||
|     #    ### Temporär und muss später entfernt werden | ||||
|     #     CommandAttr( undef, | ||||
|     #             $name | ||||
|     #           . ' ASC_brightnessDriveUpDown ' | ||||
|     #           . AttrVal( $name, 'ASC_brightnessMinVal', 500 ) . ':' | ||||
|     #           . AttrVal( $name, 'ASC_brightnessMaxVal', 800 ) ) | ||||
|     #       if ( AttrVal( $name, 'ASC_brightnessMinVal', 'none' ) ne 'none' ); | ||||
|     # | ||||
|     #     CommandDeleteAttr( undef, $name . ' ASC_brightnessMaxVal' ) | ||||
|     #       if ( AttrVal( $name, 'ASC_brightnessMaxVal', 'none' ) ne 'none' ); | ||||
|  | ||||
|     $hash->{NOTIFYDEV} = "global," . $name . $shuttersList; | ||||
|  | ||||
| @@ -1739,19 +1739,10 @@ sub EventProcessingShadingBrightness($@) { | ||||
|               . ' WindProtection: ' | ||||
|               . $shutters->getWindProtectionStatus ); | ||||
|  | ||||
|         my $homemode = $shutters->getRoommatesStatus; | ||||
|         $homemode = $ascDev->getResidentsStatus if ( $homemode eq 'none' ); | ||||
|  | ||||
|         if ( | ||||
|             ( | ||||
|                    $shutters->getShadingMode eq 'always' | ||||
|                 or $shutters->getShadingMode eq $homemode | ||||
|             ) | ||||
|             and IsDay($shuttersDev) | ||||
|         if (    IsDay($shuttersDev) | ||||
|             and $ascDev->getAutoShuttersControlShading eq 'on' | ||||
|             and $shutters->getRainProtectionStatus eq 'unprotected' | ||||
|             and $shutters->getWindProtectionStatus eq 'unprotected' | ||||
|           ) | ||||
|             and $shutters->getWindProtectionStatus eq 'unprotected' ) | ||||
|         { | ||||
|             ShadingProcessing( | ||||
|                 $hash, | ||||
| @@ -1771,7 +1762,6 @@ sub EventProcessingShadingBrightness($@) { | ||||
|             ); | ||||
|         } | ||||
|         elsif ( $shutters->getShadingStatus eq 'in' | ||||
|             and $shutters->getShadingMode ne $homemode | ||||
|             and $shutters->getRainProtectionStatus eq 'unprotected' | ||||
|             and $shutters->getWindProtectionStatus eq 'unprotected' ) | ||||
|         { | ||||
| @@ -2070,22 +2060,51 @@ sub ShadingProcessingDriveCommand($$) { | ||||
|     my $getShadingPos = $shutters->getShadingPos; | ||||
|     my $getStatus     = $shutters->getStatus; | ||||
|  | ||||
|     $shutters->setShadingStatus( $shutters->getShadingStatus ) | ||||
|       if ( | ||||
|         ( int( gettimeofday() ) - $shutters->getShadingStatusTimestamp ) > | ||||
|         ( $shutters->getShadingWaitingPeriod / 2 ) ); | ||||
|     my $homemode = $shutters->getRoommatesStatus; | ||||
|     $homemode = $ascDev->getResidentsStatus if ( $homemode eq 'none' ); | ||||
|  | ||||
|     if (    $shutters->getShadingStatus eq 'in' | ||||
|         and $getShadingPos != $getStatus ) | ||||
|     if (   $shutters->getShadingMode eq 'always' | ||||
|         or $shutters->getShadingMode eq $homemode ) | ||||
|     { | ||||
|         if ( | ||||
|             not $shutters->getQueryShuttersPos( $shutters->getShadingPos ) | ||||
|             and not( CheckIfShuttersWindowRecOpen($shuttersDev) == 2 | ||||
|                 and $shutters->getShuttersPlace eq 'terrace' ) | ||||
|           ) | ||||
|         $shutters->setShadingStatus( $shutters->getShadingStatus ) | ||||
|           if ( | ||||
|             ( int( gettimeofday() ) - $shutters->getShadingStatusTimestamp ) > | ||||
|             ( $shutters->getShadingWaitingPeriod / 2 ) ); | ||||
|  | ||||
|         if (    $shutters->getShadingStatus eq 'in' | ||||
|             and $getShadingPos != $getStatus ) | ||||
|         { | ||||
|             $shutters->setLastDrive('shading in'); | ||||
|             ShuttersCommandSet( $hash, $shuttersDev, $getShadingPos ); | ||||
|             if ( | ||||
|                 not $shutters->getQueryShuttersPos( $shutters->getShadingPos ) | ||||
|                 and not( CheckIfShuttersWindowRecOpen($shuttersDev) == 2 | ||||
|                     and $shutters->getShuttersPlace eq 'terrace' ) | ||||
|               ) | ||||
|             { | ||||
|                 $shutters->setLastDrive('shading in'); | ||||
|                 ShuttersCommandSet( $hash, $shuttersDev, $getShadingPos ); | ||||
|  | ||||
|                 ASC_Debug( 'ShadingProcessing: ' | ||||
|                       . $shutters->getShuttersDev | ||||
|                       . ' - Der aktuelle Beschattungsstatus ist: ' | ||||
|                       . $shutters->getShadingStatus | ||||
|                       . ' und somit wird nun in die Position: ' | ||||
|                       . $getShadingPos | ||||
|                       . ' zum Beschatten gefahren' ); | ||||
|             } | ||||
|         } | ||||
|         elsif ( $shutters->getShadingStatus eq 'out' | ||||
|             and $getShadingPos == $getStatus ) | ||||
|         { | ||||
|             $shutters->setLastDrive('shading out'); | ||||
|             ShuttersCommandSet( | ||||
|                 $hash, | ||||
|                 $shuttersDev, | ||||
|                 ( | ||||
|                       $shutters->getShadingPos == $shutters->getLastPos | ||||
|                     ? $shutters->getOpenPos | ||||
|                     : $shutters->getLastPos | ||||
|                 ) | ||||
|             ); | ||||
|  | ||||
|             ASC_Debug( 'ShadingProcessing: ' | ||||
|                   . $shutters->getShuttersDev | ||||
| @@ -2093,46 +2112,24 @@ sub ShadingProcessingDriveCommand($$) { | ||||
|                   . $shutters->getShadingStatus | ||||
|                   . ' und somit wird nun in die Position: ' | ||||
|                   . $getShadingPos | ||||
|                   . ' zum Beschatten gefahren' ); | ||||
|                   . ' zum beenden der Beschattung gefahren' ); | ||||
|         } | ||||
|     } | ||||
|     elsif ( $shutters->getShadingStatus eq 'out' | ||||
|         and $getShadingPos == $getStatus ) | ||||
|     { | ||||
|         $shutters->setLastDrive('shading out'); | ||||
|         ShuttersCommandSet( | ||||
|             $hash, | ||||
|             $shuttersDev, | ||||
|             ( | ||||
|                   $shutters->getShadingPos == $shutters->getLastPos | ||||
|                 ? $shutters->getOpenPos | ||||
|                 : $shutters->getLastPos | ||||
|             ) | ||||
|         ); | ||||
|  | ||||
|         ASC_Debug( 'ShadingProcessing: ' | ||||
|         Log3( $name, 4, | ||||
| "AutoShuttersControl ($name) - Shading Processing - In der Routine zum fahren der Rollläden, Shading Wert: " | ||||
|               . $shutters->getShadingStatus ); | ||||
|  | ||||
|         ASC_Debug( | ||||
|                 'ShadingProcessing: ' | ||||
|               . $shutters->getShuttersDev | ||||
|               . ' - Der aktuelle Beschattungsstatus ist: ' | ||||
|               . $shutters->getShadingStatus | ||||
|               . ' und somit wird nun in die Position: ' | ||||
|               . $getShadingPos | ||||
|               . ' zum beenden der Beschattung gefahren' ); | ||||
|               . ', Beschattungsstatus Zeitstempel: ' | ||||
|               . strftime( | ||||
|                 "%Y.%m.%e %T", localtime( $shutters->getShadingStatusTimestamp ) | ||||
|               ) | ||||
|         ); | ||||
|     } | ||||
|  | ||||
|     Log3( $name, 4, | ||||
| "AutoShuttersControl ($name) - Shading Processing - In der Routine zum fahren der Rollläden, Shading Wert: " | ||||
|           . $shutters->getShadingStatus ); | ||||
|  | ||||
|     ASC_Debug( | ||||
|             'ShadingProcessing: ' | ||||
|           . $shutters->getShuttersDev | ||||
|           . ' - Der aktuelle Beschattungsstatus ist: ' | ||||
|           . $shutters->getShadingStatus | ||||
|           . ', Beschattungsstatus Zeitstempel: ' | ||||
|           . strftime( | ||||
|             "%Y.%m.%e %T", localtime( $shutters->getShadingStatusTimestamp ) | ||||
|           ) | ||||
|     ); | ||||
| } | ||||
|  | ||||
| sub EventProcessingPartyMode($) { | ||||
| @@ -6173,7 +6170,7 @@ sub getblockAscDrivesAfterManual { | ||||
|   "release_status": "under develop", | ||||
|   "license": "GPL_2", | ||||
|   "version": "v0.6.19", | ||||
|   "x_developmentversion": "v0.6.19.5", | ||||
|   "x_developmentversion": "v0.6.19.6", | ||||
|   "author": [ | ||||
|     "Marko Oldenburg <leongaultier@gmail.com>" | ||||
|   ], | ||||
|   | ||||
		Reference in New Issue
	
	Block a user