From 5b9e769648191f987db93f2da7264e4094712a4d Mon Sep 17 00:00:00 2001 From: Marko Oldenburg Date: Tue, 23 Apr 2019 12:33:01 +0200 Subject: [PATCH] bugfix in IsDayFn and add more Debug Messages --- 73_AutoShuttersControl.pm | 78 +++++++++++++++++++++++++++++---------- 1 file changed, 59 insertions(+), 19 deletions(-) diff --git a/73_AutoShuttersControl.pm b/73_AutoShuttersControl.pm index 04eb036..b8524c4 100644 --- a/73_AutoShuttersControl.pm +++ b/73_AutoShuttersControl.pm @@ -44,7 +44,7 @@ use strict; use warnings; use FHEM::Meta; -my $version = '0.5.99.2'; +my $version = '0.5.99.3'; sub AutoShuttersControl_Initialize($) { my ($hash) = @_; @@ -2480,27 +2480,67 @@ sub IsDay($) { my $isday = ( ShuttersSunrise( $shuttersDev, 'unix' ) > ShuttersSunset( $shuttersDev, 'unix' ) ? 1 : 0 ); my $respIsDay = $isday; + + + ASC_Debug( 'FnIsDay: ' + . $shuttersDev + . ' Allgemein: ' + . $respIsDay ); - $respIsDay = ( - ( - ( - $shutters->getBrightness > $shutters->getBrightnessMinVal - and $isday - ) - or $shutters->getSunset - ) ? 0 : 1 - ) if ( $shutters->getDown eq 'brightness' ); + if ( $shutters->getDown eq 'brightness' + or $shutters->getUp eq 'brightness' ) + { + my $brightnessMinVal; + if ( $shutters->getBrightnessMinVal > -1 ) { + $brightnessMinVal = $shutters->getBrightnessMinVal; + } + else { + $brightnessMinVal = $ascDev->getBrightnessMinVal; + } - $respIsDay = ( - ( + my $brightnessMaxVal; + if ( $shutters->getBrightnessMaxVal > -1 ) { + $brightnessMaxVal = $shutters->getBrightnessMaxVal; + } + else { + $brightnessMaxVal = $ascDev->getBrightnessMaxVal; + } + + $respIsDay = ( ( - $shutters->getBrightness > $shutters->getBrightnessMaxVal - and not $isday - ) - or $respIsDay - or $shutters->getSunrise - ) ? 1 : 0 - ) if ( $shutters->getUp eq 'brightness' ); + ( + $shutters->getBrightness > $brightnessMinVal + and $isday + ) + or $shutters->getSunset + ) ? 1 : 0 + ) if ( $shutters->getDown eq 'brightness' ); + + ASC_Debug( 'FnIsDay: ' + . $shuttersDev + . ' getDownBrightness: ' . $respIsDay + . ' Brightness: ' . $shutters->getBrightness + . ' BrightnessMin: ' . $brightnessMinVal + . ' Sunset: ' . $shutters->getSunset ); + + $respIsDay = ( + ( + ( + $shutters->getBrightness > $brightnessMaxVal + and not $isday + ) + or $respIsDay + or $shutters->getSunrise + ) ? 1 : 0 + ) if ( $shutters->getUp eq 'brightness' ); + + ASC_Debug( 'FnIsDay: ' + . $shuttersDev + . ' getUpBrightness: ' . $respIsDay + . ' Brightness: ' . $shutters->getBrightness + . ' BrightnessMax: ' . $brightnessMaxVal + . ' Sunset: ' . $shutters->getSunrise ); + } return $respIsDay; }