diff --git a/73_AutoShuttersControl.pm b/73_AutoShuttersControl.pm index 9d2b10a..cfa77c9 100644 --- a/73_AutoShuttersControl.pm +++ b/73_AutoShuttersControl.pm @@ -208,7 +208,7 @@ my %userAttrList = ( 'ASC_Time_Up_WE_Holiday' => '-', 'ASC_Time_Down_Early' => '-', 'ASC_Time_Down_Late' => '-', - 'ASC_PrivacyDownTime_beforNightClose' => '-', + 'ASC_PrivacyDownValue_beforNightClose' => '-', 'ASC_PrivacyDown_Pos' => '-', 'ASC_TempSensor' => '-', 'ASC_Ventilate_Window_Open:on,off' => '-', @@ -1500,6 +1500,9 @@ sub EventProcessingResidents($@) { } sub EventProcessingRain($@) { + + #### Ist noch nicht fertig, es fehlt noch das verzögerte Prüfen auf erhalten bleiben des getriggerten Wertes. + my ( $hash, $device, $events ) = @_; my $name = $device; my $reading = $ascDev->getRainSensorReading; @@ -1706,6 +1709,8 @@ sub EventProcessingBrightness($@) { $brightnessMaxVal = $ascDev->getBrightnessMaxVal; } + my $brightnessPrivacyVal = $shutters->getPrivacyDownTime; + ASC_Debug( 'EventProcessingBrightness: ' . $shutters->getShuttersDev . ' - Es wird geprüft ob Sunset oder Sunrise gefahren werden soll und der aktuelle übergebene Brightness-Wert: ' @@ -1822,7 +1827,8 @@ sub EventProcessingBrightness($@) { and int( gettimeofday() / 86400 ) == int( computeAlignTime( '24:00', $shutters->getTimeDownLate ) / 86400 ) - and $1 < $brightnessMinVal + and ( $1 < $brightnessMinVal + or $1 < $brightnessPrivacyVal ) and $shutters->getDown eq 'brightness' and not $shutters->getSunset and IsAfterShuttersManualBlocking($shuttersDev) @@ -1850,7 +1856,31 @@ sub EventProcessingBrightness($@) { ) { my $posValue; - if ( CheckIfShuttersWindowRecOpen($shuttersDev) == 2 + + ## Setzt den PrivacyDown Modus für die Sichtschutzfahrt auf den Status 0 + ## 1 bedeutet das PrivacyDown Timer aktiviert wurde, 2 beudet das er im privacyDown ist + ## also das Rollo in privacyDown Position steht und VOR der endgültigen Nachfahrt + $shutters->setPrivacyDownStatus(0) + if ( not defined( $shutters->getPrivacyDownStatus ) ); + + if ( $1 > $brightnessMinVal + and $1 < $brightnessPrivacyVal ) + { + $shutters->setLastDrive('privacy position'); + ShuttersCommandSet( $hash, $shuttersDev, + $shutters->getPrivacyDownPos ) + unless ( + $shutters->getQueryShuttersPos( + $shutters->getPrivacyDownPos + ) + ); + + ASC_Debug( 'EventProcessingBrightness: ' + . $shutters->getShuttersDev + . ' - Verarbeitung für Sunset Privacy Down. Roommatestatus korrekt zum fahren. Fahrbefehl wird an die Funktion FnShuttersCommandSet gesendet. Grund des fahrens: ' + . $shutters->getLastDrive ); + } + elsif ( CheckIfShuttersWindowRecOpen($shuttersDev) == 2 and $shutters->getSubTyp eq 'threestate' and $ascDev->getAutoShuttersControlComfort eq 'on' ) { @@ -2582,7 +2612,9 @@ sub CreateSunRiseSetShuttersTimer($$) { $shutters->setInTimerFuncHash( \%funcHash ); ## Abfrage für die Sichtschutzfahrt am Abend vor dem eigentlichen kompletten schließen - if ( $shutters->getPrivacyDownTime > 0 ) { + if ( $shutters->getPrivacyDownTime > 0 + and $shutters->getDown ne 'brightness' ) + { if ( ( $shuttersSunsetUnixtime - $shutters->getPrivacyDownTime ) > ( gettimeofday() + 1 ) ) { @@ -2689,6 +2721,12 @@ sub RenewSunRiseSetShuttersTimer($) { delFromDevAttrList( $_, 'ASC_Shading_Direction' ); delFromDevAttrList( $_, 'ASC_Shading_Angle_Left' ); delFromDevAttrList( $_, 'ASC_Shading_Angle_Right' ); + + $attr{$_}{ASC_PrivacyDownValue_beforNightClose} = + AttrVal( $_, 'ASC_PrivacyDownTime_beforNightClose', 'none' ) + if ( AttrVal( $_, 'ASC_PrivacyDownTime_beforNightClose', 'none' ) ne + 'none' ); + delFromDevAttrList( $_, 'ASC_PrivacyDownTime_beforNightClose' ); } } @@ -2778,8 +2816,8 @@ sub SunSetShuttersAfterTimerFn($) { and $ascDev->getResidentsStatus ne 'gone' ) ) and ( - $shutters->getDown ne 'brightness' - or ( $shutters->getDown eq 'brightness' + $shutters->getDown ne 'brightness' + or ( $shutters->getDown eq 'brightness' and not $shutters->getSunset ) ) ) @@ -2844,8 +2882,8 @@ sub SunRiseShuttersAfterTimerFn($) { and $ascDev->getResidentsStatus ne 'gone' ) ) and ( - $shutters->getUp ne 'brightness' - or ( $shutters->getUp eq 'brightness' + $shutters->getUp ne 'brightness' + or ( $shutters->getUp eq 'brightness' and not $shutters->getSunrise ) ) ) @@ -4657,7 +4695,7 @@ sub getPrivacyDownTime { my $self = shift; return AttrVal( $self->{shuttersDev}, - 'ASC_PrivacyDownTime_beforNightClose', -1 ); + 'ASC_PrivacyDownValue_beforNightClose', -1 ); } sub getPrivacyDownPos { @@ -6480,8 +6518,8 @@ sub getblockAscDrivesAfterManual {