add privacy night close brightness with timer

This commit is contained in:
Marko Oldenburg 2019-10-31 07:17:04 +01:00
parent 39edc75094
commit e2d49c7c02

View File

@ -1815,7 +1815,7 @@ sub EventProcessingBrightness($@) {
and $shutters->getPrivacyUpStatus == 1 ) and $shutters->getPrivacyUpStatus == 1 )
{ {
$shutters->setPrivacyUpStatus(2); $shutters->setPrivacyUpStatus(2);
$shutters->setLastDrive('privacy position'); $shutters->setLastDrive('brightness privacy day open');
ShuttersCommandSet( $hash, $shuttersDev, ShuttersCommandSet( $hash, $shuttersDev,
$shutters->getPrivacyUpPos ) $shutters->getPrivacyUpPos )
unless ( unless (
@ -1905,7 +1905,7 @@ sub EventProcessingBrightness($@) {
and $1 > $brightnessMinVal and $1 > $brightnessMinVal
and $1 < $brightnessPrivacyDownVal ) and $1 < $brightnessPrivacyDownVal )
{ {
$lastDrive = 'privacy position'; $lastDrive = 'brightness privacy night close';
$posValue = ( $posValue = (
( (
not $shutters->getQueryShuttersPos( not $shutters->getQueryShuttersPos(
@ -1946,6 +1946,8 @@ sub EventProcessingBrightness($@) {
$shutters->setSunset(1) $shutters->setSunset(1)
unless ( $posValue == $shutters->getPrivacyDownPos unless ( $posValue == $shutters->getPrivacyDownPos
or $posValue == $shutters->getStatus ); or $posValue == $shutters->getStatus );
$shutters->setPrivacyDownStatus(0)
if ( $shutters->getPrivacyDownStatus == 2 );
ShuttersCommandSet( $hash, $shuttersDev, $posValue ); ShuttersCommandSet( $hash, $shuttersDev, $posValue );
ASC_Debug( 'EventProcessingBrightness: ' ASC_Debug( 'EventProcessingBrightness: '
@ -2669,9 +2671,7 @@ sub CreateSunRiseSetShuttersTimer($$) {
} }
## Abfrage für die Sichtschutzfahrt am Abend vor dem eigentlichen kompletten schließen ## 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' )
{
$shuttersSunsetUnixtime = $shuttersSunsetUnixtime =
PrivacyDownTime( $shuttersDevHash, $shuttersSunsetUnixtime ); PrivacyDownTime( $shuttersDevHash, $shuttersSunsetUnixtime );
} }
@ -2835,9 +2835,6 @@ sub SunSetShuttersAfterTimerFn($) {
my $shuttersDev = $funcHash->{shuttersdevice}; my $shuttersDev = $funcHash->{shuttersdevice};
$shutters->setShuttersDev($shuttersDev); $shutters->setShuttersDev($shuttersDev);
$shutters->setSunset(1);
$shutters->setSunrise(0);
my $homemode = $shutters->getRoommatesStatus; my $homemode = $shutters->getRoommatesStatus;
$homemode = $ascDev->getResidentsStatus if ( $homemode eq 'none' ); $homemode = $ascDev->getResidentsStatus if ( $homemode eq 'none' );
@ -2867,7 +2864,7 @@ sub SunSetShuttersAfterTimerFn($) {
if ( $shutters->getPrivacyDownStatus == 1 ) { if ( $shutters->getPrivacyDownStatus == 1 ) {
$shutters->setPrivacyDownStatus(2); $shutters->setPrivacyDownStatus(2);
$shutters->setLastDrive('privacy position'); $shutters->setLastDrive('timer privacy night close');
ShuttersCommandSet( $hash, $shuttersDev, ShuttersCommandSet( $hash, $shuttersDev,
$shutters->getPrivacyDownPos ) $shutters->getPrivacyDownPos )
unless ( unless (
@ -2875,7 +2872,8 @@ sub SunSetShuttersAfterTimerFn($) {
); );
} }
else { else {
$shutters->setPrivacyDownStatus(0); $shutters->setPrivacyDownStatus(0)
if ( $shutters->getPrivacyDownStatus == 2 );
$shutters->setLastDrive('night close'); $shutters->setLastDrive('night close');
ShuttersCommandSet( ShuttersCommandSet(
$hash, $hash,
@ -2892,6 +2890,11 @@ sub SunSetShuttersAfterTimerFn($) {
} }
} }
unless ( $shutters->getPrivacyDownStatus == 2 ) {
$shutters->setSunrise(0);
$shutters->setSunset(1);
}
CreateSunRiseSetShuttersTimer( $hash, $shuttersDev ); CreateSunRiseSetShuttersTimer( $hash, $shuttersDev );
} }
@ -2952,7 +2955,7 @@ sub SunRiseShuttersAfterTimerFn($) {
if ( not $shutters->getIfInShading ) { if ( not $shutters->getIfInShading ) {
if ( $shutters->getPrivacyUpStatus == 1 ) { if ( $shutters->getPrivacyUpStatus == 1 ) {
$shutters->setPrivacyUpStatus(2); $shutters->setPrivacyUpStatus(2);
$shutters->setLastDrive('privacy position'); $shutters->setLastDrive('timer privacy day open');
ShuttersCommandSet( $hash, $shuttersDev, ShuttersCommandSet( $hash, $shuttersDev,
$shutters->getPrivacyUpPos ) $shutters->getPrivacyUpPos )
unless ( unless (
@ -3999,7 +4002,7 @@ sub PrivacyUpTime($$) {
readingsSingleUpdate( $shuttersDevHash, 'ASC_Time_PrivacyDriveUp', readingsSingleUpdate( $shuttersDevHash, 'ASC_Time_PrivacyDriveUp',
strftime( "%e.%m.%Y - %H:%M", localtime($privacyUpUnixtime) ), 1 ); strftime( "%e.%m.%Y - %H:%M", localtime($privacyUpUnixtime) ), 1 );
## Setzt den PrivacyDown Modus für die Sichtschutzfahrt auf den Status 1 ## Setzt den PrivacyUp Modus für die Sichtschutzfahrt auf den Status 1
## und gibt die Unixtime für die nächste Fahrt korrekt zurück ## und gibt die Unixtime für die nächste Fahrt korrekt zurück
unless ( $shutters->getPrivacyUpStatus == 2 ) { unless ( $shutters->getPrivacyUpStatus == 2 ) {
$shutters->setPrivacyUpStatus(1); $shutters->setPrivacyUpStatus(1);
@ -4012,20 +4015,27 @@ sub PrivacyUpTime($$) {
sub PrivacyDownTime($$) { sub PrivacyDownTime($$) {
my ( $shuttersDevHash, $shuttersSunsetUnixtime ) = @_; my ( $shuttersDevHash, $shuttersSunsetUnixtime ) = @_;
my $privacyDownUnixtime;
if ( ( $shuttersSunsetUnixtime - $shutters->getPrivacyDownTime ) > if ( ( $shuttersSunsetUnixtime - $shutters->getPrivacyDownTime ) >
( gettimeofday() + 1 ) ) ( gettimeofday() + 1 )
or $shutters->getPrivacyDownStatus == 2 )
{ {
$shuttersSunsetUnixtime = $privacyDownUnixtime =
$shuttersSunsetUnixtime - $shutters->getPrivacyDownTime; $shuttersSunsetUnixtime - $shutters->getPrivacyDownTime;
readingsSingleUpdate(
$shuttersDevHash, $privacyDownUnixtime += 86400
'ASC_Time_PrivacyDriveDown', if ( $shutters->getPrivacyDownStatus == 2 );
strftime( "%e.%m.%Y - %H:%M", localtime($shuttersSunsetUnixtime) ),
0 readingsSingleUpdate( $shuttersDevHash, 'ASC_Time_PrivacyDriveDown',
); strftime( "%e.%m.%Y - %H:%M", localtime($privacyDownUnixtime) ),
1 );
## Setzt den PrivacyDown Modus für die Sichtschutzfahrt auf den Status 1 ## Setzt den PrivacyDown Modus für die Sichtschutzfahrt auf den Status 1
$shutters->setPrivacyDownStatus(1); ## und gibt die Unixtime für die nächste Fahrt korrekt zurück
unless ( $shutters->getPrivacyDownStatus == 2 ) {
$shutters->setPrivacyDownStatus(1);
$shuttersSunsetUnixtime = $privacyDownUnixtime;
}
} }
return $shuttersSunsetUnixtime; return $shuttersSunsetUnixtime;
@ -4885,15 +4895,68 @@ sub getPrivacyUpBrightnessVal {
} }
sub getPrivacyDownTime { sub getPrivacyDownTime {
my $self = shift; my $self = shift;
my $downTime = AttrVal( $self->{shuttersDev},
'ASC_PrivacyDownValue_beforeNightClose', -1 ); return $self->{ $self->{shuttersDev} }
->{ASC_PrivacyDownValue_beforeNightClose}->{downtime}
if (
exists(
$self->{ $self->{shuttersDev} }
->{ASC_PrivacyDownValue_beforeNightClose}->{LASTGETTIME}
)
and ( gettimeofday() -
$self->{ $self->{shuttersDev} }
->{ASC_PrivacyDownValue_beforeNightClose}->{LASTGETTIME} ) < 2
);
$self->{ $self->{shuttersDev} }->{ASC_PrivacyDownValue_beforeNightClose}
->{LASTGETTIME} = int( gettimeofday() );
my ( $downTime, $downBrightnessVal ) =
FHEM::AutoShuttersControl::GetAttrValues( $self->{shuttersDev},
'ASC_PrivacyDownValue_beforeNightClose', '-1:-1' );
## Erwartetes Ergebnis
# downTime:downBrightnessVal
$self->{ $self->{shuttersDev} }->{ASC_PrivacyDownValue_beforeNightClose}
->{downtime} = $downTime;
$self->{ $self->{shuttersDev} }->{ASC_PrivacyDownValue_beforeNightClose}
->{downbrightnessval} =
( $downBrightnessVal ne 'none' ? $downBrightnessVal : -1 );
$shutters->setPrivacyDownStatus(0) $shutters->setPrivacyDownStatus(0)
if ( defined( $shutters->getPrivacyDownStatus ) if ( defined( $shutters->getPrivacyDownStatus )
and $downTime == -1 ); and $self->{ $self->{shuttersDev} }
->{ASC_PrivacyDownValue_beforeNightClose}->{downtime} == -1 );
return $downTime; return $self->{ $self->{shuttersDev} }
->{ASC_PrivacyDownValue_beforeNightClose}->{downtime};
}
sub getPrivacyDownBrightnessVal {
my $self = shift;
return $self->{ $self->{shuttersDev} }
->{ASC_PrivacyDownValue_beforeNightClose}->{downbrightnessval}
if (
exists(
$self->{ $self->{shuttersDev} }
->{ASC_PrivacyDownValue_beforeNightClose}->{LASTGETTIME}
)
and ( gettimeofday() -
$self->{ $self->{shuttersDev} }
->{ASC_PrivacyDownValue_beforeNightClose}->{LASTGETTIME} ) < 2
);
$shutters->getPrivacyDownTime;
return (
defined(
$self->{ $self->{shuttersDev} }
->{ASC_PrivacyDownValue_beforeNightClose}->{downbrightnessval}
)
? $self->{ $self->{shuttersDev} }
->{ASC_PrivacyDownValue_beforeNightClose}->{downbrightnessval}
: -1
);
} }
sub getPrivacyUpPos { sub getPrivacyUpPos {
@ -7300,7 +7363,7 @@ sub getblockAscDrivesAfterManual {
], ],
"release_status": "under develop", "release_status": "under develop",
"license": "GPL_2", "license": "GPL_2",
"version": "v0.6.135", "version": "v0.6.136",
"author": [ "author": [
"Marko Oldenburg <leongaultier@gmail.com>" "Marko Oldenburg <leongaultier@gmail.com>"
], ],