finish change brightnessUp with time for drive befor last up
This commit is contained in:
parent
6526ad8301
commit
4ae99c00f5
@ -1711,7 +1711,7 @@ sub EventProcessingBrightness($@) {
|
|||||||
$brightnessMaxVal = $ascDev->getBrightnessMaxVal;
|
$brightnessMaxVal = $ascDev->getBrightnessMaxVal;
|
||||||
}
|
}
|
||||||
|
|
||||||
my $brightnessPrivacyUpVal = $shutters->getPrivacyUpTime;
|
my $brightnessPrivacyUpVal = $shutters->getPrivacyUpBrightnessVal;
|
||||||
my $brightnessPrivacyDownVal = $shutters->getPrivacyDownTime;
|
my $brightnessPrivacyDownVal = $shutters->getPrivacyDownTime;
|
||||||
|
|
||||||
ASC_Debug( 'EventProcessingBrightness: '
|
ASC_Debug( 'EventProcessingBrightness: '
|
||||||
@ -1811,8 +1811,10 @@ sub EventProcessingBrightness($@) {
|
|||||||
|
|
||||||
if ( $brightnessPrivacyUpVal > 0
|
if ( $brightnessPrivacyUpVal > 0
|
||||||
and $1 < $brightnessMaxVal
|
and $1 < $brightnessMaxVal
|
||||||
and $1 > $brightnessPrivacyUpVal )
|
and $1 > $brightnessPrivacyUpVal
|
||||||
|
and $shutters->getPrivacyUpStatus == 1 )
|
||||||
{
|
{
|
||||||
|
$shutters->setPrivacyUpStatus(2);
|
||||||
$shutters->setLastDrive('privacy position');
|
$shutters->setLastDrive('privacy position');
|
||||||
ShuttersCommandSet( $hash, $shuttersDev,
|
ShuttersCommandSet( $hash, $shuttersDev,
|
||||||
$shutters->getPrivacyUpPos )
|
$shutters->getPrivacyUpPos )
|
||||||
@ -1826,12 +1828,16 @@ sub EventProcessingBrightness($@) {
|
|||||||
. $shutters->getShuttersDev
|
. $shutters->getShuttersDev
|
||||||
. ' - Verarbeitung für Sunset Privacy Down. Roommatestatus korrekt zum fahren. Fahrbefehl wird an die Funktion FnShuttersCommandSet gesendet. Grund des fahrens: '
|
. ' - Verarbeitung für Sunset Privacy Down. Roommatestatus korrekt zum fahren. Fahrbefehl wird an die Funktion FnShuttersCommandSet gesendet. Grund des fahrens: '
|
||||||
. $shutters->getLastDrive );
|
. $shutters->getLastDrive );
|
||||||
|
|
||||||
|
CreateSunRiseSetShuttersTimer( $hash, $shuttersDev );
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
$shutters->setLastDrive(
|
$shutters->setLastDrive(
|
||||||
'maximum brightness threshold exceeded');
|
'maximum brightness threshold exceeded');
|
||||||
$shutters->setSunrise(1);
|
$shutters->setSunrise(1);
|
||||||
$shutters->setSunset(0);
|
$shutters->setSunset(0);
|
||||||
|
$shutters->setPrivacyUpStatus(0)
|
||||||
|
if ( $shutters->getPrivacyUpStatus == 2 );
|
||||||
ShuttersCommandSet( $hash, $shuttersDev,
|
ShuttersCommandSet( $hash, $shuttersDev,
|
||||||
$shutters->getOpenPos );
|
$shutters->getOpenPos );
|
||||||
|
|
||||||
@ -1900,7 +1906,13 @@ sub EventProcessingBrightness($@) {
|
|||||||
and $1 < $brightnessPrivacyDownVal )
|
and $1 < $brightnessPrivacyDownVal )
|
||||||
{
|
{
|
||||||
$lastDrive = 'privacy position';
|
$lastDrive = 'privacy position';
|
||||||
$posValue = ( (not $shutters->getQueryShuttersPos($shutters->getPrivacyDownPos)) ? $shutters->getPrivacyDownPos : $shutters->getStatus );
|
$posValue = (
|
||||||
|
(
|
||||||
|
not $shutters->getQueryShuttersPos(
|
||||||
|
$shutters->getPrivacyDownPos
|
||||||
|
)
|
||||||
|
) ? $shutters->getPrivacyDownPos : $shutters->getStatus
|
||||||
|
);
|
||||||
|
|
||||||
ASC_Debug( 'EventProcessingBrightness: '
|
ASC_Debug( 'EventProcessingBrightness: '
|
||||||
. $shutters->getShuttersDev
|
. $shutters->getShuttersDev
|
||||||
@ -1911,7 +1923,7 @@ sub EventProcessingBrightness($@) {
|
|||||||
and $shutters->getSubTyp eq 'threestate'
|
and $shutters->getSubTyp eq 'threestate'
|
||||||
and $ascDev->getAutoShuttersControlComfort eq 'on' )
|
and $ascDev->getAutoShuttersControlComfort eq 'on' )
|
||||||
{
|
{
|
||||||
$posValue = $shutters->getComfortOpenPos;
|
$posValue = $shutters->getComfortOpenPos;
|
||||||
$lastDrive = 'minimum brightness threshold fell below';
|
$lastDrive = 'minimum brightness threshold fell below';
|
||||||
}
|
}
|
||||||
elsif ( CheckIfShuttersWindowRecOpen($shuttersDev) == 0
|
elsif ( CheckIfShuttersWindowRecOpen($shuttersDev) == 0
|
||||||
@ -1924,14 +1936,16 @@ sub EventProcessingBrightness($@) {
|
|||||||
);
|
);
|
||||||
$lastDrive = 'minimum brightness threshold fell below';
|
$lastDrive = 'minimum brightness threshold fell below';
|
||||||
}
|
}
|
||||||
else { $posValue = $shutters->getVentilatePos; $lastDrive = 'minimum brightness threshold fell below'; }
|
else {
|
||||||
|
$posValue = $shutters->getVentilatePos;
|
||||||
|
$lastDrive = 'minimum brightness threshold fell below';
|
||||||
|
}
|
||||||
|
|
||||||
$shutters->setLastDrive(
|
$shutters->setLastDrive($lastDrive);
|
||||||
$lastDrive);
|
|
||||||
$shutters->setSunrise(0);
|
$shutters->setSunrise(0);
|
||||||
$shutters->setSunset(1)
|
$shutters->setSunset(1)
|
||||||
unless ( $posValue == $shutters->getPrivacyDownPos
|
unless ( $posValue == $shutters->getPrivacyDownPos
|
||||||
or $posValue == $shutters->getStatus );
|
or $posValue == $shutters->getStatus );
|
||||||
ShuttersCommandSet( $hash, $shuttersDev, $posValue );
|
ShuttersCommandSet( $hash, $shuttersDev, $posValue );
|
||||||
|
|
||||||
ASC_Debug( 'EventProcessingBrightness: '
|
ASC_Debug( 'EventProcessingBrightness: '
|
||||||
@ -2645,9 +2659,7 @@ sub CreateSunRiseSetShuttersTimer($$) {
|
|||||||
$shutters->setInTimerFuncHash( \%funcHash );
|
$shutters->setInTimerFuncHash( \%funcHash );
|
||||||
|
|
||||||
## Abfrage für die Sichtschutzfahrt am Morgen vor dem eigentlichen kompletten öffnen
|
## Abfrage für die Sichtschutzfahrt am Morgen vor dem eigentlichen kompletten öffnen
|
||||||
if ( $shutters->getPrivacyUpTime > 0
|
if ( $shutters->getPrivacyUpTime > 0 ) {
|
||||||
and $shutters->getUp ne 'brightness' )
|
|
||||||
{
|
|
||||||
$shuttersSunriseUnixtime =
|
$shuttersSunriseUnixtime =
|
||||||
PrivacyUpTime( $shuttersDevHash, $shuttersSunriseUnixtime );
|
PrivacyUpTime( $shuttersDevHash, $shuttersSunriseUnixtime );
|
||||||
}
|
}
|
||||||
@ -2678,48 +2690,6 @@ sub CreateSunRiseSetShuttersTimer($$) {
|
|||||||
$ascDev->setStateReading('created new drive timer');
|
$ascDev->setStateReading('created new drive timer');
|
||||||
}
|
}
|
||||||
|
|
||||||
sub PrivacyUpTime($$) {
|
|
||||||
my ( $shuttersDevHash, $shuttersSunriseUnixtime ) = @_;
|
|
||||||
|
|
||||||
if ( ( $shuttersSunriseUnixtime - $shutters->getPrivacyUpTime ) >
|
|
||||||
( gettimeofday() + 1 ) )
|
|
||||||
{
|
|
||||||
$shuttersSunriseUnixtime =
|
|
||||||
$shuttersSunriseUnixtime - $shutters->getPrivacyUpTime;
|
|
||||||
readingsSingleUpdate(
|
|
||||||
$shuttersDevHash,
|
|
||||||
'ASC_Time_PrivacyDriveUp',
|
|
||||||
strftime( "%e.%m.%Y - %H:%M", localtime($shuttersSunriseUnixtime) ),
|
|
||||||
0
|
|
||||||
);
|
|
||||||
## Setzt den PrivacyDown Modus für die Sichtschutzfahrt auf den Status 1
|
|
||||||
$shutters->setPrivacyUpStatus(1);
|
|
||||||
}
|
|
||||||
|
|
||||||
return $shuttersSunriseUnixtime;
|
|
||||||
}
|
|
||||||
|
|
||||||
sub PrivacyDownTime($$) {
|
|
||||||
my ( $shuttersDevHash, $shuttersSunsetUnixtime ) = @_;
|
|
||||||
|
|
||||||
if ( ( $shuttersSunsetUnixtime - $shutters->getPrivacyDownTime ) >
|
|
||||||
( gettimeofday() + 1 ) )
|
|
||||||
{
|
|
||||||
$shuttersSunsetUnixtime =
|
|
||||||
$shuttersSunsetUnixtime - $shutters->getPrivacyDownTime;
|
|
||||||
readingsSingleUpdate(
|
|
||||||
$shuttersDevHash,
|
|
||||||
'ASC_Time_PrivacyDriveDown',
|
|
||||||
strftime( "%e.%m.%Y - %H:%M", localtime($shuttersSunsetUnixtime) ),
|
|
||||||
0
|
|
||||||
);
|
|
||||||
## Setzt den PrivacyDown Modus für die Sichtschutzfahrt auf den Status 1
|
|
||||||
$shutters->setPrivacyDownStatus(1);
|
|
||||||
}
|
|
||||||
|
|
||||||
return $shuttersSunsetUnixtime;
|
|
||||||
}
|
|
||||||
|
|
||||||
## Funktion zum neu setzen der Timer und der Readings für Sunset/Rise
|
## Funktion zum neu setzen der Timer und der Readings für Sunset/Rise
|
||||||
sub RenewSunRiseSetShuttersTimer($) {
|
sub RenewSunRiseSetShuttersTimer($) {
|
||||||
my $hash = shift;
|
my $hash = shift;
|
||||||
@ -2932,9 +2902,6 @@ sub SunRiseShuttersAfterTimerFn($) {
|
|||||||
my $shuttersDev = $funcHash->{shuttersdevice};
|
my $shuttersDev = $funcHash->{shuttersdevice};
|
||||||
$shutters->setShuttersDev($shuttersDev);
|
$shutters->setShuttersDev($shuttersDev);
|
||||||
|
|
||||||
$shutters->setSunset(0);
|
|
||||||
$shutters->setSunrise(1);
|
|
||||||
|
|
||||||
my $homemode = $shutters->getRoommatesStatus;
|
my $homemode = $shutters->getRoommatesStatus;
|
||||||
$homemode = $ascDev->getResidentsStatus if ( $homemode eq 'none' );
|
$homemode = $ascDev->getResidentsStatus if ( $homemode eq 'none' );
|
||||||
|
|
||||||
@ -2998,16 +2965,27 @@ sub SunRiseShuttersAfterTimerFn($) {
|
|||||||
$shutters->setLastDrive('day open');
|
$shutters->setLastDrive('day open');
|
||||||
ShuttersCommandSet( $hash, $shuttersDev,
|
ShuttersCommandSet( $hash, $shuttersDev,
|
||||||
$shutters->getOpenPos );
|
$shutters->getOpenPos );
|
||||||
|
|
||||||
|
$shutters->setPrivacyUpStatus(0)
|
||||||
|
if ( $shutters->getPrivacyUpStatus == 2 );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
elsif ( $shutters->getIfInShading ) {
|
elsif ( $shutters->getIfInShading ) {
|
||||||
$shutters->setLastDrive('shading in');
|
$shutters->setLastDrive('shading in');
|
||||||
ShuttersCommandSet( $hash, $shuttersDev,
|
ShuttersCommandSet( $hash, $shuttersDev,
|
||||||
$shutters->getShadingPos );
|
$shutters->getShadingPos );
|
||||||
|
|
||||||
|
$shutters->setPrivacyUpStatus(0)
|
||||||
|
if ( $shutters->getPrivacyUpStatus == 2 );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
unless ( $shutters->getPrivacyUpStatus == 1 ) {
|
||||||
|
$shutters->setSunrise(1);
|
||||||
|
$shutters->setSunset(0);
|
||||||
|
}
|
||||||
|
|
||||||
CreateSunRiseSetShuttersTimer( $hash, $shuttersDev );
|
CreateSunRiseSetShuttersTimer( $hash, $shuttersDev );
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -4005,6 +3983,53 @@ sub _perlCodeCheck($) {
|
|||||||
return $val;
|
return $val;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
sub PrivacyUpTime($$) {
|
||||||
|
my ( $shuttersDevHash, $shuttersSunriseUnixtime ) = @_;
|
||||||
|
my $privacyUpUnixtime;
|
||||||
|
|
||||||
|
if ( ( $shuttersSunriseUnixtime - $shutters->getPrivacyUpTime ) >
|
||||||
|
( gettimeofday() + 1 ) )
|
||||||
|
{
|
||||||
|
$privacyUpUnixtime =
|
||||||
|
$shuttersSunriseUnixtime - $shutters->getPrivacyUpTime;
|
||||||
|
|
||||||
|
$privacyUpUnixtime += 86400
|
||||||
|
if ( $shutters->getPrivacyUpStatus == 2 );
|
||||||
|
|
||||||
|
readingsSingleUpdate( $shuttersDevHash, 'ASC_Time_PrivacyDriveUp',
|
||||||
|
strftime( "%e.%m.%Y - %H:%M", localtime($privacyUpUnixtime) ), 1 );
|
||||||
|
## Setzt den PrivacyDown Modus für die Sichtschutzfahrt auf den Status 1
|
||||||
|
## und gibt die Unixtime für die nächste Fahrt korrekt zurück
|
||||||
|
unless ( $shutters->getPrivacyUpStatus == 2 ) {
|
||||||
|
$shutters->setPrivacyUpStatus(1);
|
||||||
|
$shuttersSunriseUnixtime = $privacyUpUnixtime;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return $shuttersSunriseUnixtime;
|
||||||
|
}
|
||||||
|
|
||||||
|
sub PrivacyDownTime($$) {
|
||||||
|
my ( $shuttersDevHash, $shuttersSunsetUnixtime ) = @_;
|
||||||
|
|
||||||
|
if ( ( $shuttersSunsetUnixtime - $shutters->getPrivacyDownTime ) >
|
||||||
|
( gettimeofday() + 1 ) )
|
||||||
|
{
|
||||||
|
$shuttersSunsetUnixtime =
|
||||||
|
$shuttersSunsetUnixtime - $shutters->getPrivacyDownTime;
|
||||||
|
readingsSingleUpdate(
|
||||||
|
$shuttersDevHash,
|
||||||
|
'ASC_Time_PrivacyDriveDown',
|
||||||
|
strftime( "%e.%m.%Y - %H:%M", localtime($shuttersSunsetUnixtime) ),
|
||||||
|
0
|
||||||
|
);
|
||||||
|
## Setzt den PrivacyDown Modus für die Sichtschutzfahrt auf den Status 1
|
||||||
|
$shutters->setPrivacyDownStatus(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
return $shuttersSunsetUnixtime;
|
||||||
|
}
|
||||||
|
|
||||||
######################################
|
######################################
|
||||||
######################################
|
######################################
|
||||||
########## Begin der Klassendeklarierungen für OOP (Objektorientierte Programmierung) #########################
|
########## Begin der Klassendeklarierungen für OOP (Objektorientierte Programmierung) #########################
|
||||||
@ -4796,15 +4821,78 @@ sub getShuttersPlace {
|
|||||||
sub getPrivacyUpTime {
|
sub getPrivacyUpTime {
|
||||||
my $self = shift;
|
my $self = shift;
|
||||||
|
|
||||||
return AttrVal( $self->{shuttersDev},
|
return $self->{ $self->{shuttersDev} }->{ASC_PrivacyUpValue_beforeDayOpen}
|
||||||
'ASC_PrivacyUpValue_beforeDayOpen', -1 );
|
->{uptime}
|
||||||
|
if (
|
||||||
|
exists(
|
||||||
|
$self->{ $self->{shuttersDev} }->{ASC_PrivacyUpValue_beforeDayOpen}
|
||||||
|
->{LASTGETTIME}
|
||||||
|
)
|
||||||
|
and ( gettimeofday() -
|
||||||
|
$self->{ $self->{shuttersDev} }->{ASC_PrivacyUpValue_beforeDayOpen}
|
||||||
|
->{LASTGETTIME} ) < 2
|
||||||
|
);
|
||||||
|
$self->{ $self->{shuttersDev} }->{ASC_PrivacyUpValue_beforeDayOpen}
|
||||||
|
->{LASTGETTIME} = int( gettimeofday() );
|
||||||
|
my ( $upTime, $upBrightnessVal ) =
|
||||||
|
FHEM::AutoShuttersControl::GetAttrValues( $self->{shuttersDev},
|
||||||
|
'ASC_PrivacyUpValue_beforeDayOpen', '-1:-1' );
|
||||||
|
|
||||||
|
## Erwartetes Ergebnis
|
||||||
|
# upTime:upBrightnessVal
|
||||||
|
|
||||||
|
$self->{ $self->{shuttersDev} }->{ASC_PrivacyUpValue_beforeDayOpen}
|
||||||
|
->{uptime} = $upTime;
|
||||||
|
$self->{ $self->{shuttersDev} }->{ASC_PrivacyUpValue_beforeDayOpen}
|
||||||
|
->{upbrightnessval} =
|
||||||
|
( $upBrightnessVal ne 'none' ? $upBrightnessVal : -1 );
|
||||||
|
|
||||||
|
$shutters->setPrivacyUpStatus(0)
|
||||||
|
if ( defined( $shutters->getPrivacyUpStatus )
|
||||||
|
and $self->{ $self->{shuttersDev} }->{ASC_PrivacyUpValue_beforeDayOpen}
|
||||||
|
->{uptime} == -1 );
|
||||||
|
|
||||||
|
return $self->{ $self->{shuttersDev} }->{ASC_PrivacyUpValue_beforeDayOpen}
|
||||||
|
->{uptime};
|
||||||
|
}
|
||||||
|
|
||||||
|
sub getPrivacyUpBrightnessVal {
|
||||||
|
my $self = shift;
|
||||||
|
|
||||||
|
return $self->{ $self->{shuttersDev} }->{ASC_PrivacyUpValue_beforeDayOpen}
|
||||||
|
->{upbrightnessval}
|
||||||
|
if (
|
||||||
|
exists(
|
||||||
|
$self->{ $self->{shuttersDev} }->{ASC_PrivacyUpValue_beforeDayOpen}
|
||||||
|
->{LASTGETTIME}
|
||||||
|
)
|
||||||
|
and ( gettimeofday() -
|
||||||
|
$self->{ $self->{shuttersDev} }->{ASC_PrivacyUpValue_beforeDayOpen}
|
||||||
|
->{LASTGETTIME} ) < 2
|
||||||
|
);
|
||||||
|
$shutters->getPrivacyUpTime;
|
||||||
|
|
||||||
|
return (
|
||||||
|
defined(
|
||||||
|
$self->{ $self->{shuttersDev} }->{ASC_PrivacyUpValue_beforeDayOpen}
|
||||||
|
->{upbrightnessval}
|
||||||
|
)
|
||||||
|
? $self->{ $self->{shuttersDev} }->{ASC_PrivacyUpValue_beforeDayOpen}
|
||||||
|
->{upbrightnessval}
|
||||||
|
: -1
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
sub getPrivacyDownTime {
|
sub getPrivacyDownTime {
|
||||||
my $self = shift;
|
my $self = shift;
|
||||||
|
my $downTime = AttrVal( $self->{shuttersDev},
|
||||||
return AttrVal( $self->{shuttersDev},
|
|
||||||
'ASC_PrivacyDownValue_beforeNightClose', -1 );
|
'ASC_PrivacyDownValue_beforeNightClose', -1 );
|
||||||
|
|
||||||
|
$shutters->setPrivacyDownStatus(0)
|
||||||
|
if ( defined( $shutters->getPrivacyDownStatus )
|
||||||
|
and $downTime == -1 );
|
||||||
|
|
||||||
|
return $downTime;
|
||||||
}
|
}
|
||||||
|
|
||||||
sub getPrivacyUpPos {
|
sub getPrivacyUpPos {
|
||||||
@ -7211,7 +7299,7 @@ sub getblockAscDrivesAfterManual {
|
|||||||
],
|
],
|
||||||
"release_status": "under develop",
|
"release_status": "under develop",
|
||||||
"license": "GPL_2",
|
"license": "GPL_2",
|
||||||
"version": "v0.6.130",
|
"version": "v0.6.134",
|
||||||
"author": [
|
"author": [
|
||||||
"Marko Oldenburg <leongaultier@gmail.com>"
|
"Marko Oldenburg <leongaultier@gmail.com>"
|
||||||
],
|
],
|
||||||
|
Loading…
x
Reference in New Issue
Block a user