change code

This commit is contained in:
Marko Oldenburg 2019-04-20 21:53:05 +02:00
parent f91b97b162
commit 1e7c01739a

View File

@ -837,7 +837,7 @@ sub EventProcessingWindowRec($@) {
if ( if (
$1 eq 'closed' $1 eq 'closed'
and IsAfterShuttersTimeBlocking( $hash, $shuttersDev ) and IsAfterShuttersTimeBlocking($shuttersDev)
and ( $shutters->getStatus == $shutters->getVentilatePos and ( $shutters->getStatus == $shutters->getVentilatePos
or $shutters->getStatus == $shutters->getComfortOpenPos or $shutters->getStatus == $shutters->getComfortOpenPos
or $shutters->getStatus == $shutters->getOpenPos ) or $shutters->getStatus == $shutters->getOpenPos )
@ -848,7 +848,7 @@ sub EventProcessingWindowRec($@) {
if ( $homemode eq 'none' ); if ( $homemode eq 'none' );
if ( if (
IsDay( $hash, $shuttersDev ) IsDay($shuttersDev)
and $shutters->getStatus != $shutters->getOpenPos and $shutters->getStatus != $shutters->getOpenPos
and ( $homemode ne 'asleep' and ( $homemode ne 'asleep'
or $homemode ne 'gotosleep' or $homemode ne 'gotosleep'
@ -860,7 +860,7 @@ sub EventProcessingWindowRec($@) {
$shutters->setDriveCmd( $shutters->getLastPos ); $shutters->setDriveCmd( $shutters->getLastPos );
} }
elsif (not IsDay( $hash, $shuttersDev ) elsif (not IsDay($shuttersDev)
or $homemode eq 'asleep' or $homemode eq 'asleep'
or $homemode eq 'gotosleep' ) or $homemode eq 'gotosleep' )
{ {
@ -950,8 +950,8 @@ sub EventProcessingRoommate($@) {
$getRoommatesLastStatus eq 'asleep' $getRoommatesLastStatus eq 'asleep'
or $getRoommatesLastStatus eq 'awoken' or $getRoommatesLastStatus eq 'awoken'
) )
and IsDay( $hash, $shuttersDev ) and IsDay($shuttersDev)
and IsAfterShuttersTimeBlocking( $hash, $shuttersDev ) and IsAfterShuttersTimeBlocking($shuttersDev)
and ( $getModeUp eq 'home' and ( $getModeUp eq 'home'
or $getModeUp eq 'always' ) or $getModeUp eq 'always' )
) )
@ -974,8 +974,8 @@ sub EventProcessingRoommate($@) {
) )
{ {
if ( if (
not IsDay( $hash, $shuttersDev ) not IsDay($shuttersDev)
and IsAfterShuttersTimeBlocking( $hash, $shuttersDev ) and IsAfterShuttersTimeBlocking($shuttersDev)
and ( $getModeDown eq 'home' and ( $getModeDown eq 'home'
or $getModeDown eq 'always' ) or $getModeDown eq 'always' )
) )
@ -997,9 +997,9 @@ sub EventProcessingRoommate($@) {
ShuttersCommandSet( $hash, $shuttersDev, $position ); ShuttersCommandSet( $hash, $shuttersDev, $position );
} }
elsif ( elsif (
IsDay( $hash, $shuttersDev ) IsDay($shuttersDev)
and $shutters->getStatus == $shutters->getClosedPos and $shutters->getStatus == $shutters->getClosedPos
and IsAfterShuttersTimeBlocking( $hash, $shuttersDev ) and IsAfterShuttersTimeBlocking($shuttersDev)
and ( $getModeUp eq 'home' and ( $getModeUp eq 'home'
or $getModeUp eq 'always' ) or $getModeUp eq 'always' )
and not $shutters->getIfInShading and not $shutters->getIfInShading
@ -1039,7 +1039,7 @@ sub EventProcessingRoommate($@) {
} }
elsif ( $getModeDown eq 'absent' elsif ( $getModeDown eq 'absent'
and $1 eq 'absent' and $1 eq 'absent'
and not IsDay( $hash, $shuttersDev ) ) and not IsDay($shuttersDev) )
{ {
$shutters->setLastDrive('roommate absent'); $shutters->setLastDrive('roommate absent');
ShuttersCommandSet( $hash, $shuttersDev, $shutters->getClosedPos ); ShuttersCommandSet( $hash, $shuttersDev, $shutters->getClosedPos );
@ -1069,8 +1069,8 @@ sub EventProcessingResidents($@) {
$getModeDown eq 'absent' $getModeDown eq 'absent'
or $getModeDown eq 'always' or $getModeDown eq 'always'
) )
and not IsDay( $hash, $shuttersDev ) and not IsDay($shuttersDev)
and IsAfterShuttersTimeBlocking( $hash, $shuttersDev ) and IsAfterShuttersTimeBlocking($shuttersDev)
) )
) )
{ {
@ -1115,13 +1115,13 @@ sub EventProcessingResidents($@) {
if ( if (
$shutters->getStatus != $shutters->getClosedPos $shutters->getStatus != $shutters->getClosedPos
and not IsDay( $hash, $shuttersDev ) and not IsDay($shuttersDev)
and $shutters->getRoommatesStatus eq 'none' and $shutters->getRoommatesStatus eq 'none'
and ( $getModeDown eq 'home' and ( $getModeDown eq 'home'
or $getModeDown eq 'always' ) or $getModeDown eq 'always' )
and ( $getResidentsLastStatus ne 'asleep' and ( $getResidentsLastStatus ne 'asleep'
or $getResidentsLastStatus ne 'awoken' ) or $getResidentsLastStatus ne 'awoken' )
and IsAfterShuttersTimeBlocking( $hash, $shuttersDev ) and IsAfterShuttersTimeBlocking($shuttersDev)
) )
{ {
$shutters->setLastDrive('residents home'); $shutters->setLastDrive('residents home');
@ -1146,11 +1146,11 @@ sub EventProcessingResidents($@) {
} }
elsif ( elsif (
$shutters->getStatus == $shutters->getClosedPos $shutters->getStatus == $shutters->getClosedPos
and IsDay( $hash, $shuttersDev ) and IsDay($shuttersDev)
and $shutters->getRoommatesStatus eq 'none' and $shutters->getRoommatesStatus eq 'none'
and ( $getModeUp eq 'home' and ( $getModeUp eq 'home'
or $getModeUp eq 'always' ) or $getModeUp eq 'always' )
and IsAfterShuttersTimeBlocking( $hash, $shuttersDev ) and IsAfterShuttersTimeBlocking($shuttersDev)
and not $shutters->getIfInShading and not $shutters->getIfInShading
) )
{ {
@ -1497,7 +1497,7 @@ sub EventProcessingShadingBrightness($@) {
$shutters->getShadingMode eq 'always' $shutters->getShadingMode eq 'always'
or $shutters->getShadingMode eq $homemode or $shutters->getShadingMode eq $homemode
) )
and IsDay( $hash, $shuttersDev ) and IsDay($shuttersDev)
) )
{ {
ShadingProcessing( ShadingProcessing(
@ -1564,7 +1564,7 @@ sub EventProcessingTwilightDevice($@) {
$shutters->getShadingMode eq 'always' $shutters->getShadingMode eq 'always'
or $shutters->getShadingMode eq $homemode or $shutters->getShadingMode eq $homemode
) )
and IsDay( $hash, $shuttersDev ) and IsDay($shuttersDev)
) )
{ {
ShadingProcessing( ShadingProcessing(
@ -1586,7 +1586,7 @@ sub EventProcessingTwilightDevice($@) {
} }
$shutters->setShadingStatus('out') $shutters->setShadingStatus('out')
if ( not IsDay( $hash, $shuttersDev ) if ( not IsDay($shuttersDev)
and $shutters->getShadingStatus ne 'out' ); and $shutters->getShadingStatus ne 'out' );
} }
} }
@ -1621,9 +1621,7 @@ sub ShadingProcessing($@) {
. ', Winkel Rechts: ' . ', Winkel Rechts: '
. $anglePlus . $anglePlus
. ', Ist es nach der Zeitblockadezeit: ' . ', Ist es nach der Zeitblockadezeit: '
. ( . ( IsAfterShuttersTimeBlocking($shuttersDev) ? 'JA' : 'NEIN' )
IsAfterShuttersTimeBlocking( $hash, $shuttersDev ) ? 'JA' : 'NEIN'
)
. ', Ist es nach der manuellen Blockadezeit: ' . ', Ist es nach der manuellen Blockadezeit: '
. ( IsAfterShuttersManualBlocking($shuttersDev) ? 'JA' : 'NEIN' ) . ( IsAfterShuttersManualBlocking($shuttersDev) ? 'JA' : 'NEIN' )
. ', Ist es nach der Hälfte der Beschattungswartezeit: ' . ', Ist es nach der Hälfte der Beschattungswartezeit: '
@ -1634,7 +1632,7 @@ sub ShadingProcessing($@) {
); );
$shutters->setShadingStatus('out') $shutters->setShadingStatus('out')
if ( not IsDay( $hash, $shuttersDev ) if ( not IsDay($shuttersDev)
and $shutters->getShadingStatus ne 'out' ); and $shutters->getShadingStatus ne 'out' );
Log3( $name, 4, Log3( $name, 4,
@ -1656,7 +1654,7 @@ sub ShadingProcessing($@) {
or $outTemp == -100 or $outTemp == -100
or ( int( gettimeofday() ) - $shutters->getShadingStatusTimestamp ) < or ( int( gettimeofday() ) - $shutters->getShadingStatusTimestamp ) <
( $shutters->getShadingWaitingPeriod / 2 ) ( $shutters->getShadingWaitingPeriod / 2 )
or not IsAfterShuttersTimeBlocking( $hash, $shuttersDev ) or not IsAfterShuttersTimeBlocking($shuttersDev)
or not IsAfterShuttersManualBlocking($shuttersDev) ); or not IsAfterShuttersManualBlocking($shuttersDev) );
Log3( $name, 4, Log3( $name, 4,
@ -1676,7 +1674,7 @@ sub ShadingProcessing($@) {
if ( if (
( (
$outTemp < $shutters->getShadingMinOutsideTemperature - 3 $outTemp < $shutters->getShadingMinOutsideTemperature - 3
or not IsDay( $hash, $shuttersDev ) or not IsDay($shuttersDev)
) )
and $shutters->getShadingStatus ne 'out' and $shutters->getShadingStatus ne 'out'
and $getStatus != $getShadingPos and $getStatus != $getShadingPos
@ -1836,7 +1834,7 @@ sub EventProcessingPartyMode($) {
foreach my $shuttersDev ( @{ $hash->{helper}{shuttersList} } ) { foreach my $shuttersDev ( @{ $hash->{helper}{shuttersList} } ) {
$shutters->setShuttersDev($shuttersDev); $shutters->setShuttersDev($shuttersDev);
if ( not IsDay( $hash, $shuttersDev ) if ( not IsDay($shuttersDev)
and $shutters->getModeDown ne 'off' and $shutters->getModeDown ne 'off'
and IsAfterShuttersManualBlocking($shuttersDev) ) and IsAfterShuttersManualBlocking($shuttersDev) )
{ {
@ -1867,7 +1865,7 @@ sub EventProcessingPartyMode($) {
); );
} }
} }
elsif ( IsDay( $hash, $shuttersDev ) elsif ( IsDay($shuttersDev)
and IsAfterShuttersManualBlocking($shuttersDev) ) and IsAfterShuttersManualBlocking($shuttersDev) )
{ {
$shutters->setLastDrive('drive after party mode'); $shutters->setLastDrive('drive after party mode');
@ -1970,10 +1968,8 @@ sub CreateSunRiseSetShuttersTimer($$) {
return if ( IsDisabled($name) ); return if ( IsDisabled($name) );
my $shuttersSunriseUnixtime = my $shuttersSunriseUnixtime = ShuttersSunrise( $shuttersDev, 'unix' ) + 1;
ShuttersSunrise( $hash, $shuttersDev, 'unix' ) + 1; my $shuttersSunsetUnixtime = ShuttersSunset( $shuttersDev, 'unix' ) + 1;
my $shuttersSunsetUnixtime =
ShuttersSunset( $hash, $shuttersDev, 'unix' ) + 1;
$shutters->setSunriseUnixTime($shuttersSunriseUnixtime); $shutters->setSunriseUnixTime($shuttersSunriseUnixtime);
$shutters->setSunsetUnixTime($shuttersSunsetUnixtime); $shutters->setSunsetUnixTime($shuttersSunsetUnixtime);
@ -2477,16 +2473,13 @@ sub ExtractNotifyDevFromEvent($$$) {
} }
## Ist Tag oder Nacht für den entsprechende Rolladen ## Ist Tag oder Nacht für den entsprechende Rolladen
sub IsDay($$) { sub IsDay($) {
my ( $hash, $shuttersDev ) = @_; my ($shuttersDev) = @_;
$shutters->setShuttersDev($shuttersDev); $shutters->setShuttersDev($shuttersDev);
my $name = $hash->{NAME}; my $isday = ( ShuttersSunrise( $shuttersDev, 'unix' ) >
my $isday = ( ShuttersSunrise( $hash, $shuttersDev, 'unix' ) > ShuttersSunset( $shuttersDev, 'unix' ) ? 1 : 0 );
ShuttersSunset( $hash, $shuttersDev, 'unix' ) ? 1 : 0 );
my $respIsDay = $isday; my $respIsDay = $isday;
printf 'IsDay ist: ' . $respIsDay . "\n";
$respIsDay = ( $respIsDay = (
( (
@ -2497,8 +2490,6 @@ sub IsDay($$) {
or $shutters->getSunset or $shutters->getSunset
) ? 0 : 1 ) ? 0 : 1
) if ( $shutters->getDown eq 'brightness' ); ) if ( $shutters->getDown eq 'brightness' );
printf 'IsDay Sunset ist: ' . $respIsDay . "\n";
$respIsDay = ( $respIsDay = (
( (
@ -2510,16 +2501,13 @@ sub IsDay($$) {
or $shutters->getSunrise or $shutters->getSunrise
) ? 1 : 0 ) ? 1 : 0
) if ( $shutters->getUp eq 'brightness' ); ) if ( $shutters->getUp eq 'brightness' );
printf 'IsDay Sunrise ist: ' . $respIsDay . "\n";
return $respIsDay; return $respIsDay;
} }
sub ShuttersSunrise($$$) { sub ShuttersSunrise($$) {
my ( $hash, $shuttersDev, $tm ) = my ( $shuttersDev, $tm ) =
@_; # Tm steht für Timemode und bedeutet Realzeit oder Unixzeit @_; # Tm steht für Timemode und bedeutet Realzeit oder Unixzeit
my $name = $hash->{NAME};
my $autoAstroMode; my $autoAstroMode;
$shutters->setShuttersDev($shuttersDev); $shutters->setShuttersDev($shuttersDev);
@ -2824,17 +2812,17 @@ sub ShuttersSunrise($$$) {
} }
} }
sub IsAfterShuttersTimeBlocking($$) { sub IsAfterShuttersTimeBlocking($) {
my ( $hash, $shuttersDev ) = @_; my ($shuttersDev) = @_;
$shutters->setShuttersDev($shuttersDev); $shutters->setShuttersDev($shuttersDev);
if ( if (
( int( gettimeofday() ) - $shutters->getLastManPosTimestamp ) < ( int( gettimeofday() ) - $shutters->getLastManPosTimestamp ) <
$shutters->getBlockingTimeAfterManual $shutters->getBlockingTimeAfterManual
or ( not IsDay( $hash, $shuttersDev ) or ( not IsDay($shuttersDev)
and $shutters->getSunriseUnixTime - ( int( gettimeofday() ) ) < and $shutters->getSunriseUnixTime - ( int( gettimeofday() ) ) <
$shutters->getBlockingTimeBeforDayOpen ) $shutters->getBlockingTimeBeforDayOpen )
or ( IsDay( $hash, $shuttersDev ) or ( IsDay($shuttersDev)
and $shutters->getSunsetUnixTime - ( int( gettimeofday() ) ) < and $shutters->getSunsetUnixTime - ( int( gettimeofday() ) ) <
$shutters->getBlockingTimeBeforNightClose ) $shutters->getBlockingTimeBeforNightClose )
) )
@ -2870,10 +2858,9 @@ sub IsAfterShuttersManualBlocking($) {
else { return 1 } else { return 1 }
} }
sub ShuttersSunset($$$) { sub ShuttersSunset($$) {
my ( $hash, $shuttersDev, $tm ) = my ( $shuttersDev, $tm ) =
@_; # Tm steht für Timemode und bedeutet Realzeit oder Unixzeit @_; # Tm steht für Timemode und bedeutet Realzeit oder Unixzeit
my $name = $hash->{NAME};
my $autoAstroMode; my $autoAstroMode;
$shutters->setShuttersDev($shuttersDev); $shutters->setShuttersDev($shuttersDev);