diff --git a/73_AutoShuttersControl.pm b/73_AutoShuttersControl.pm index 9bb5223..f16ae52 100644 --- a/73_AutoShuttersControl.pm +++ b/73_AutoShuttersControl.pm @@ -707,19 +707,23 @@ sub ShuttersDeviceScan($) { foreach (@list) { push( @{ $hash->{helper}{shuttersList} }, $_ ) ; ## einem Hash wird ein Array zugewiesen welches die Liste der erkannten Rollos beinhaltet - + $shutters->setShuttersDev($_); - + #### Ab hier können temporäre Änderungen der Attribute gesetzt werden #### Gleichlautende Attribute wo lediglich die Parameter geändert werden sollen müssen hier gelöscht und die Parameter in der Funktion renewSetSunriseSunsetTimer gesetzt werden, #### vorher empfiehlt es sich die dort vergebenen Parameter aus zu lesen um sie dann hier wieder neu zu setzen. Dazu wird das shutters Objekt um einen Eintrag #### 'AttrUpdateChanges' erweitert - if ( ReadingsVal($_,'.ASC_AttrUpdateChanges_' . $hash->{VERSION},0) == 0 ) { - $shutters->setAttrUpdateChanges('ASC_Up',AttrVal($_,'ASC_Up','none')); + if ( ReadingsVal( $_, '.ASC_AttrUpdateChanges_' . $hash->{VERSION}, 0 ) + == 0 ) + { + $shutters->setAttrUpdateChanges( 'ASC_Up', + AttrVal( $_, 'ASC_Up', 'none' ) ); delFromDevAttrList( $_, 'ASC_Up' ); - $shutters->setAttrUpdateChanges('ASC_Down',AttrVal($_,'ASC_Down','none')); + $shutters->setAttrUpdateChanges( 'ASC_Down', + AttrVal( $_, 'ASC_Down', 'none' ) ); delFromDevAttrList( $_, 'ASC_Down' ); - } + } #### @@ -845,8 +849,7 @@ sub UserAttributs_Readings_ForShutters($$) { $shutters->setShuttersDev($_); RemoveInternalTimer( $shutters->getInTimerFuncHash ); - CommandDeleteReading( undef, - $_ . ' .?(ASC)_.*' ); + CommandDeleteReading( undef, $_ . ' .?(ASC)_.*' ); CommandDeleteAttr( undef, $_ . ' ASC' ); delFromDevAttrList( $_, $attrib ); @@ -1214,8 +1217,7 @@ sub EventProcessingRoommate($@) { } elsif ( ( $1 eq 'gotosleep' or $1 eq 'asleep' ) and $ascDev->getAutoShuttersControlEvening eq 'on' - and IsAfterShuttersManualBlocking($shuttersDev) - ) + and IsAfterShuttersManualBlocking($shuttersDev) ) { $shutters->setLastDrive('roommate asleep'); @@ -2457,9 +2459,12 @@ sub CreateSunRiseSetShuttersTimer($$) { 'ASC_Time_DriveDown', ( $ascDev->getAutoShuttersControlEvening eq 'on' - ? ($shutters->getDown eq 'roommate' ? 'roommate only' : strftime( - "%e.%m.%Y - %H:%M", localtime($shuttersSunsetUnixtime) - )) + ? ( + $shutters->getDown eq 'roommate' ? 'roommate only' : strftime( + "%e.%m.%Y - %H:%M", + localtime($shuttersSunsetUnixtime) + ) + ) : 'AutoShuttersControl off' ) ); @@ -2468,9 +2473,12 @@ sub CreateSunRiseSetShuttersTimer($$) { 'ASC_Time_DriveUp', ( $ascDev->getAutoShuttersControlMorning eq 'on' - ? ($shutters->getUp eq 'roommate' ? 'roommate only' : strftime( "%e.%m.%Y - %H:%M", - localtime($shuttersSunriseUnixtime) - )) + ? ( + $shutters->getUp eq 'roommate' ? 'roommate only' : strftime( + "%e.%m.%Y - %H:%M", + localtime($shuttersSunriseUnixtime) + ) + ) : 'AutoShuttersControl off' ) ); @@ -2531,7 +2539,12 @@ sub CreateSunRiseSetShuttersTimer($$) { $shutters->setPrivacyDownStatus(1); } } - else { CommandDeleteReading(undef, $shuttersDev . ' ASC_Time_PrivacyDriveDown') if ( ReadingsVal($shuttersDev,'ASC_Time_PrivacyDriveDown','none') ) } + else { + CommandDeleteReading( undef, + $shuttersDev . ' ASC_Time_PrivacyDriveDown' ) + if ( + ReadingsVal( $shuttersDev, 'ASC_Time_PrivacyDriveDown', 'none' ) ); + } InternalTimer( $shuttersSunsetUnixtime, 'FHEM::AutoShuttersControl::SunSetShuttersAfterTimerFn', \%funcHash ); @@ -2552,27 +2565,36 @@ sub RenewSunRiseSetShuttersTimer($) { $shutters->setInTimerFuncHash(undef); CreateSunRiseSetShuttersTimer( $hash, $_ ); - #### Temporär angelegt damit die neue Attributs Parameter Syntax verteilt werden kann #### Gleichlautende Attribute wo lediglich die Parameter geändert werden sollen müssen bereits in der Funktion ShuttersDeviceScan gelöscht werden #### vorher empfiehlt es sich die dort vergebenen Parameter aus zu lesen um sie dann hier wieder neu zu setzen. Dazu wird das shutters Objekt um einen Eintrag #### 'AttrUpdateChanges' erweitert - if ( (int(gettimeofday()) - $::fhem_started) < 20 and ReadingsVal($_,'.ASC_AttrUpdateChanges_' . $hash->{VERSION},0) == 0 ) { + if ( ( int( gettimeofday() ) - $::fhem_started ) < 20 + and + ReadingsVal( $_, '.ASC_AttrUpdateChanges_' . $hash->{VERSION}, 0 ) + == 0 ) + { $attr{$_}{'ASC_Up'} = $shutters->getAttrUpdateChanges('ASC_Up') - if ( $shutters->getAttrUpdateChanges('ASC_Up') ne 'none' ); + if ( $shutters->getAttrUpdateChanges('ASC_Up') ne 'none' ); $attr{$_}{'ASC_Down'} = $shutters->getAttrUpdateChanges('ASC_Down') - if ( $shutters->getAttrUpdateChanges('ASC_Down') ne 'none' ); + if ( $shutters->getAttrUpdateChanges('ASC_Down') ne 'none' ); - CommandDeleteReading(undef,$_ . ' .ASC_AttrUpdateChanges_.*') if ( ReadingsVal($_,'.ASC_AttrUpdateChanges_' . $hash->{VERSION},'none') eq 'none' ); - readingsSingleUpdate($defs{$_},'.ASC_AttrUpdateChanges_' . $hash->{VERSION},1,0); + CommandDeleteReading( undef, $_ . ' .ASC_AttrUpdateChanges_.*' ) + if ( + ReadingsVal( $_, '.ASC_AttrUpdateChanges_' . $hash->{VERSION}, + 'none' ) eq 'none' + ); + readingsSingleUpdate( $defs{$_}, + '.ASC_AttrUpdateChanges_' . $hash->{VERSION}, + 1, 0 ); # $attr{$_}{'ASC_Shading_MinMax_Elevation'} = # AttrVal( $_, 'ASC_Shading_Min_Elevation', 'none' ) # if ( AttrVal( $_, 'ASC_Shading_Min_Elevation', 'none' ) ne 'none' ); -# +# # delFromDevAttrList( $_, 'ASC_Shading_Min_Elevation' ) # ; # temporär muss später gelöscht werden ab Version 0.6.17 - } + } } } @@ -2672,7 +2694,9 @@ sub SunSetShuttersAfterTimerFn($) { $shutters->setLastDrive('privacy position'); ShuttersCommandSet( $hash, $shuttersDev, $shutters->getPrivacyDownPos ) - unless ( $shutters->getQueryShuttersPos($shutters->getPrivacyDownPos) ); + unless ( + $shutters->getQueryShuttersPos( $shutters->getPrivacyDownPos ) + ); } else { $shutters->setPrivacyDownStatus(0); @@ -3160,7 +3184,8 @@ sub ShuttersSunrise($$) { if ( $autoAstroMode eq 'HORIZON' ); } my $oldFuncHash = $shutters->getInTimerFuncHash; - my $shuttersSunriseUnixtime = computeAlignTime('24:00',sunrise('REAL', 0,'4:30','8:30')); + my $shuttersSunriseUnixtime = + computeAlignTime( '24:00', sunrise( 'REAL', 0, '4:30', '8:30' ) ); if ( $tm eq 'unix' ) { if ( $shutters->getUp eq 'astro' ) { @@ -3551,7 +3576,8 @@ sub ShuttersSunset($$) { if ( $autoAstroMode eq 'HORIZON' ); } my $oldFuncHash = $shutters->getInTimerFuncHash; - my $shuttersSunsetUnixtime = computeAlignTime('24:00',sunset('REAL', 0,'15:30','21:30')); + my $shuttersSunsetUnixtime = + computeAlignTime( '24:00', sunset( 'REAL', 0, '15:30', '21:30' ) ); if ( $tm eq 'unix' ) { if ( $shutters->getDown eq 'astro' ) { @@ -3786,7 +3812,7 @@ sub getShuttersDev { sub setAttrUpdateChanges { my ( $self, $attr, $value ) = @_; - + $self->{ $self->{shuttersDev} }{AttrUpdateChanges}{$attr} = $value; return 0; } @@ -4024,9 +4050,9 @@ sub getAttrUpdateChanges { my ( $self, $attr ) = @_; return $self->{ $self->{shuttersDev} }{AttrUpdateChanges}{$attr} - if( defined( $self->{ $self->{shuttersDev} }{AttrUpdateChanges} ) - and defined( $self->{ $self->{shuttersDev} }{AttrUpdateChanges}{$attr} ) - ); + if ( defined( $self->{ $self->{shuttersDev} }{AttrUpdateChanges} ) + and + defined( $self->{ $self->{shuttersDev} }{AttrUpdateChanges}{$attr} ) ); } sub getIsDay { @@ -4329,7 +4355,7 @@ sub getBrightnessAverage { my $self = shift; return &FHEM::AutoShuttersControl::_averageBrightness( - @{$self->{ $self->{shuttersDev} }->{BrightnessAverageArray}->{VAL}} ) + @{ $self->{ $self->{shuttersDev} }->{BrightnessAverageArray}->{VAL} } ) if ( scalar( @{