check brightness sunset and sunrise

change code
This commit is contained in:
Marko Oldenburg 2020-06-29 13:41:46 +02:00
parent 4a5b4d9ac1
commit 9f2eeea6d8
2 changed files with 101 additions and 44 deletions

View File

@ -1,5 +1,5 @@
UPD 2020-06-29_09:05:05 97824 FHEM/73_AutoShuttersControl.pm UPD 2020-06-29_09:05:05 97824 FHEM/73_AutoShuttersControl.pm
UPD 2020-06-29_09:58:24 187022 lib/FHEM/Automation/ShuttersControl.pm UPD 2020-06-29_12:59:48 189668 lib/FHEM/Automation/ShuttersControl.pm
UPD 2020-06-22_09:41:40 2657 lib/FHEM/Automation/ShuttersControl/Dev.pm UPD 2020-06-22_09:41:40 2657 lib/FHEM/Automation/ShuttersControl/Dev.pm
UPD 2020-06-22_09:41:40 2493 lib/FHEM/Automation/ShuttersControl/Roommate.pm UPD 2020-06-22_09:41:40 2493 lib/FHEM/Automation/ShuttersControl/Roommate.pm
UPD 2020-06-29_09:05:05 30157 lib/FHEM/Automation/ShuttersControl/Shutters.pm UPD 2020-06-29_09:05:05 30157 lib/FHEM/Automation/ShuttersControl/Shutters.pm

View File

@ -441,11 +441,9 @@ sub Notify {
) ne '{ ShuttersControl_DevStateIcon($name) }' ) ne '{ ShuttersControl_DevStateIcon($name) }'
); );
CommandDeleteAttr( undef, $name . ' event-on-change-reading' ) CommandDeleteAttr( undef, $name . ' event-on-change-reading' )
if ( if ( AttrVal( $name, 'event-on-change-reading', 'none' ) ne 'none' );
AttrVal( $name, 'event-on-change-reading', 'none' ) ne 'none' );
CommandDeleteAttr( undef, $name . ' event-on-update-reading' ) CommandDeleteAttr( undef, $name . ' event-on-update-reading' )
if ( if ( AttrVal( $name, 'event-on-update-reading', 'none' ) ne 'none' );
AttrVal( $name, 'event-on-update-reading', 'none' ) ne 'none' );
# Ist der Event ein globaler und passt zum Rest der Abfrage oben wird nach neuen Rolläden Devices gescannt und eine Liste im Rolladenmodul sortiert nach Raum generiert # Ist der Event ein globaler und passt zum Rest der Abfrage oben wird nach neuen Rolläden Devices gescannt und eine Liste im Rolladenmodul sortiert nach Raum generiert
ShuttersDeviceScan($hash) ShuttersDeviceScan($hash)
@ -453,7 +451,7 @@ sub Notify {
} }
return return
if ( ref( $hash->{helper}{shuttersList} ) ne 'ARRAY' if ( ref( $hash->{helper}{shuttersList} ) ne 'ARRAY'
&& scalar( @{ $hash->{helper}{shuttersList} } ) == 0 ); || scalar( @{ $hash->{helper}{shuttersList} } ) == 0 );
my $posReading = $shutters->getPosCmd; my $posReading = $shutters->getPosCmd;
@ -1229,7 +1227,7 @@ sub EventProcessingWindowRec {
elsif ($match =~ m{[Oo]pen|false}xms elsif ($match =~ m{[Oo]pen|false}xms
&& $shutters->getSubTyp eq 'threestate' ) && $shutters->getSubTyp eq 'threestate' )
{ {
my $posValue = $shutters->getStatus; my $posValue = $shutters->getStatus;
my $setLastDrive; my $setLastDrive;
if ( $ascDev->getAutoShuttersControlComfort eq 'on' if ( $ascDev->getAutoShuttersControlComfort eq 'on'
and and
@ -1273,12 +1271,12 @@ sub EventProcessingRoommate {
"AutoShuttersControl ($name) - EventProcessingRoommate: $shuttersDev und Events $events" "AutoShuttersControl ($name) - EventProcessingRoommate: $shuttersDev und Events $events"
); );
my $getModeUp = $shutters->getModeUp; my $getModeUp = $shutters->getModeUp;
my $getModeDown = $shutters->getModeDown; my $getModeDown = $shutters->getModeDown;
my $getRoommatesStatus = $shutters->getRoommatesStatus; my $getRoommatesStatus = $shutters->getRoommatesStatus;
my $getRoommatesLastStatus = $shutters->getRoommatesLastStatus; my $getRoommatesLastStatus = $shutters->getRoommatesLastStatus;
my $event = $1; my $event = $1;
my $posValue = $shutters->getStatus; my $posValue = $shutters->getStatus;
if ( if (
( $event eq 'home' || $event eq 'awoken' ) ( $event eq 'home' || $event eq 'awoken' )
@ -1909,42 +1907,101 @@ sub EventProcessingBrightness {
) )
|| ( || (
( (
$shutters->getDown eq 'brightness'
|| $shutters->getUp eq 'brightness'
)
&& (
( (
( (
int( gettimeofday() / 86400 ) == int( (
computeAlignTime( '24:00', int( gettimeofday() / 86400 ) == int(
$shutters->getTimeUpEarly ) / 86400 computeAlignTime( '24:00',
$shutters->getTimeUpEarly ) / 86400
)
&& (
!IsWe()
|| (
IsWe()
&& $ascDev->getSunriseTimeWeHoliday eq 'off'
|| (
$ascDev->getSunriseTimeWeHoliday eq 'on'
&& $shutters->getTimeUpWeHoliday eq
'01:25' )
)
)
) )
&& ( || (
!IsWe() int( gettimeofday() / 86400 ) == int(
|| ( IsWe() computeAlignTime( '24:00',
&& $ascDev->getSunriseTimeWeHoliday eq 'off' ) $shutters->getTimeUpWeHoliday ) / 86400
)
&& IsWe()
&& $ascDev->getSunriseTimeWeHoliday eq 'on'
&& $shutters->getTimeUpWeHoliday ne '01:25'
) )
) )
&& int( gettimeofday() / 86400 ) == int(
computeAlignTime( '24:00', $shutters->getTimeUpLate ) /
86400
)
|| ( || (
int( gettimeofday() / 86400 ) == int( (
computeAlignTime( '24:00', int( gettimeofday() / 86400 ) != int(
$shutters->getTimeUpWeHoliday ) / 86400 computeAlignTime( '24:00',
$shutters->getTimeUpEarly ) / 86400
)
&& (
!IsWe()
|| (
IsWe()
&& $ascDev->getSunriseTimeWeHoliday eq 'off'
|| (
$ascDev->getSunriseTimeWeHoliday eq 'on'
&& $shutters->getTimeUpWeHoliday eq
'01:25' )
)
)
) )
&& IsWe() || (
&& $ascDev->getSunriseTimeWeHoliday eq 'on' int( gettimeofday() / 86400 ) != int(
&& $shutters->getTimeUpWeHoliday ne '01:25' computeAlignTime( '24:00',
$shutters->getTimeUpWeHoliday ) / 86400
)
&& IsWe()
&& $ascDev->getSunriseTimeWeHoliday eq 'on'
&& $shutters->getTimeUpWeHoliday ne '01:25'
)
)
&& int( gettimeofday() / 86400 ) != int(
computeAlignTime( '24:00', $shutters->getTimeUpLate ) /
86400
) )
) )
&& int( gettimeofday() / 86400 ) != int( && (
computeAlignTime( '24:00', $shutters->getTimeUpLate ) / (
86400 int( gettimeofday() / 86400 ) == int(
computeAlignTime(
'24:00', $shutters->getTimeDownEarly
) / 86400
)
&& int( gettimeofday() / 86400 ) == int(
computeAlignTime( '24:00', $shutters->getTimeDownLate
) / 86400
)
) )
) || (
|| ( int( gettimeofday() / 86400 ) != int(
int( gettimeofday() / 86400 ) == int( computeAlignTime(
computeAlignTime( '24:00', $shutters->getTimeDownEarly ) / '24:00', $shutters->getTimeDownEarly
86400 ) / 86400
) )
&& int( gettimeofday() / 86400 ) != int( && int( gettimeofday() / 86400 ) != int(
computeAlignTime( '24:00', $shutters->getTimeDownLate ) / computeAlignTime( '24:00', $shutters->getTimeDownLate
86400 ) / 86400
)
) )
)
) )
) )
); );
@ -2166,7 +2223,7 @@ sub EventProcessingBrightness {
|| $shutters->getModeDown eq 'always' || $shutters->getModeDown eq 'always'
) )
{ {
my $posValue = $shutters->getStatus; my $posValue = $shutters->getStatus;
my $lastDrive; my $lastDrive;
## Setzt den PrivacyDown Modus für die Sichtschutzfahrt auf den Status 0 ## Setzt den PrivacyDown Modus für die Sichtschutzfahrt auf den Status 0
@ -2224,8 +2281,8 @@ sub EventProcessingBrightness {
if ( if (
$shutters->getPrivacyDownStatus != 2 $shutters->getPrivacyDownStatus != 2
&& ( $posValue != $shutters->getStatus # && ( $posValue != $shutters->getStatus
|| $shutters->getSelfDefenseState ) # || $shutters->getSelfDefenseState )
) )
{ {
$shutters->setSunrise(0); $shutters->setSunrise(0);
@ -3034,9 +3091,10 @@ sub ShuttersCommandSet {
## Sub welche die InternalTimer nach entsprechenden Sunset oder Sunrise zusammen stellt ## Sub welche die InternalTimer nach entsprechenden Sunset oder Sunrise zusammen stellt
sub CreateSunRiseSetShuttersTimer { sub CreateSunRiseSetShuttersTimer {
my $hash = shift; my $hash = shift;
my $shuttersDev = shift // return Log3( $hash->{NAME}, 1, my $shuttersDev = shift // return Log3( $hash->{NAME}, 1,
"AutoShuttersControl ($hash->{NAME}) - Error in function CreateSunRiseSetShuttersTimer. No shuttersDev given"); "AutoShuttersControl ($hash->{NAME}) - Error in function CreateSunRiseSetShuttersTimer. No shuttersDev given"
);
my $name = $hash->{NAME}; my $name = $hash->{NAME};
my $shuttersDevHash = $defs{$shuttersDev}; my $shuttersDevHash = $defs{$shuttersDev};
@ -4964,7 +5022,6 @@ sub _CheckShuttersConditionsForShadingFn {
my $warnMessage; my $warnMessage;
my $infoMessage; my $infoMessage;
$infoMessage .= ( $infoMessage .= (
$shutters->getShadingMode ne 'off' $shutters->getShadingMode ne 'off'
&& $ascDev->getAutoShuttersControlShading eq 'on' && $ascDev->getAutoShuttersControlShading eq 'on'