first devel version with shading support

This commit is contained in:
Marko Oldenburg
2018-12-07 13:04:41 +01:00
parent 0bf225404e
commit c7181f449f

View File

@@ -150,10 +150,10 @@ my %userAttrList = (
'ASC_Up:time,astro,brightness' => 'astro', 'ASC_Up:time,astro,brightness' => 'astro',
'ASC_Down:time,astro,brightness' => 'astro', 'ASC_Down:time,astro,brightness' => 'astro',
'ASC_AutoAstroModeMorning:REAL,CIVIL,NAUTIC,ASTRONOMIC,HORIZON' => 'none', 'ASC_AutoAstroModeMorning:REAL,CIVIL,NAUTIC,ASTRONOMIC,HORIZON' => 'none',
'ASC_AutoAstroModeMorningHorizon:-9,-8,-7,-6,-5,-4,-3,-2,-1,0,1,2,3,4,5,6,7,8,9' 'ASC_AutoAstroModeMorningHorizon:-9,-8,-7,-6,-5,-4,-3,-2,-1,0,1,2,3,4,5,6,7,8,9'
=> 'none', => 'none',
'ASC_AutoAstroModeEvening:REAL,CIVIL,NAUTIC,ASTRONOMIC,HORIZON' => 'none', 'ASC_AutoAstroModeEvening:REAL,CIVIL,NAUTIC,ASTRONOMIC,HORIZON' => 'none',
'ASC_AutoAstroModeEveningHorizon:-9,-8,-7,-6,-5,-4,-3,-2,-1,0,1,2,3,4,5,6,7,8,9' 'ASC_AutoAstroModeEveningHorizon:-9,-8,-7,-6,-5,-4,-3,-2,-1,0,1,2,3,4,5,6,7,8,9'
=> 'none', => 'none',
'ASC_Open_Pos:0,10,20,30,40,50,60,70,80,90,100' => [ '', 0, 100 ], 'ASC_Open_Pos:0,10,20,30,40,50,60,70,80,90,100' => [ '', 0, 100 ],
'ASC_Closed_Pos:0,10,20,30,40,50,60,70,80,90,100' => [ '', 100, 0 ], 'ASC_Closed_Pos:0,10,20,30,40,50,60,70,80,90,100' => [ '', 100, 0 ],
@@ -182,8 +182,9 @@ my %userAttrList = (
'ASC_Shading_Min_Elevation' => 25.0, 'ASC_Shading_Min_Elevation' => 25.0,
'ASC_Shading_Min_OutsideTemperature' => 18, 'ASC_Shading_Min_OutsideTemperature' => 18,
'ASC_Shading_WaitingPeriod' => 1200, 'ASC_Shading_WaitingPeriod' => 1200,
# 'ASC_Shading_Fast_Open:on,off' => 'none',
# 'ASC_Shading_Fast_Close:on,off' => 'none', # 'ASC_Shading_Fast_Open:on,off' => 'none',
# 'ASC_Shading_Fast_Close:on,off' => 'none',
'ASC_Drive_Offset' => -1, 'ASC_Drive_Offset' => -1,
'ASC_WindowRec_subType:twostate,threestate' => 'twostate', 'ASC_WindowRec_subType:twostate,threestate' => 'twostate',
'ASC_ShuttersPlace:window,terrace' => 'window', 'ASC_ShuttersPlace:window,terrace' => 'window',
@@ -191,7 +192,7 @@ my %userAttrList = (
'ASC_ComfortOpen_Pos:0,10,20,30,40,50,60,70,80,90,100' => [ '', 20, 80 ], 'ASC_ComfortOpen_Pos:0,10,20,30,40,50,60,70,80,90,100' => [ '', 20, 80 ],
'ASC_GuestRoom:on,off' => 'none', 'ASC_GuestRoom:on,off' => 'none',
'ASC_Antifreeze:off,soft,hard,am,pm' => 'off', 'ASC_Antifreeze:off,soft,hard,am,pm' => 'off',
'ASC_Antifreeze_Pos:5,10,15,20,25,30,35,40,45,50,55,60,65,70,75,80,85,90,95,100' 'ASC_Antifreeze_Pos:5,10,15,20,25,30,35,40,45,50,55,60,65,70,75,80,85,90,95,100'
=> [ '', 85, 15 ], => [ '', 85, 15 ],
'ASC_Partymode:on,off' => 'off', 'ASC_Partymode:on,off' => 'off',
'ASC_Roommate_Device' => 'none', 'ASC_Roommate_Device' => 'none',
@@ -270,7 +271,8 @@ sub Define($$) {
) if ( AttrVal( $name, 'devStateIcon', 'none' ) eq 'none' ); ) if ( AttrVal( $name, 'devStateIcon', 'none' ) eq 'none' );
CommandDeleteReading( undef, $name . ' lockOut' ) CommandDeleteReading( undef, $name . ' lockOut' )
if ( ReadingsVal($name,'lockOut','none') ne 'none' ); # temporär ab Version 0.2.2 if ( ReadingsVal( $name, 'lockOut', 'none' ) ne 'none' )
; # temporär ab Version 0.2.2
addToAttrList('ASC:0,1,2'); addToAttrList('ASC:0,1,2');
@@ -821,7 +823,7 @@ sub EventProcessingWindowRec($@) {
ShuttersCommandSet( $hash, $shuttersDev, $shutters->getDelayCmd ); ShuttersCommandSet( $hash, $shuttersDev, $shutters->getDelayCmd );
} }
elsif ( $1 eq 'closed' elsif ( $1 eq 'closed'
and IsAfterShuttersTimeBlocking($hash,$shuttersDev) and IsAfterShuttersTimeBlocking( $hash, $shuttersDev )
) # wenn nicht dann wird entsprechend dem Fensterkontakt Event der Rolladen geschlossen ) # wenn nicht dann wird entsprechend dem Fensterkontakt Event der Rolladen geschlossen
{ {
if ( $shutters->getStatus == $shutters->getVentilatePos if ( $shutters->getStatus == $shutters->getVentilatePos
@@ -914,7 +916,7 @@ sub EventProcessingRoommate($@) {
or $shutters->getRoommatesLastStatus eq 'awoken' or $shutters->getRoommatesLastStatus eq 'awoken'
) )
and IsDay( $hash, $shuttersDev ) and IsDay( $hash, $shuttersDev )
and IsAfterShuttersTimeBlocking($hash,$shuttersDev) and IsAfterShuttersTimeBlocking( $hash, $shuttersDev )
) )
{ {
Log3( $name, 4, Log3( $name, 4,
@@ -939,7 +941,7 @@ sub EventProcessingRoommate($@) {
) )
{ {
if ( not IsDay( $hash, $shuttersDev ) if ( not IsDay( $hash, $shuttersDev )
and IsAfterShuttersTimeBlocking($hash,$shuttersDev) ) and IsAfterShuttersTimeBlocking( $hash, $shuttersDev ) )
{ {
my $position; my $position;
$shutters->setLastDrive('roommate home'); $shutters->setLastDrive('roommate home');
@@ -959,7 +961,7 @@ sub EventProcessingRoommate($@) {
} }
elsif ( IsDay( $hash, $shuttersDev ) elsif ( IsDay( $hash, $shuttersDev )
and $shutters->getStatus == $shutters->getClosedPos and $shutters->getStatus == $shutters->getClosedPos
and IsAfterShuttersTimeBlocking($hash,$shuttersDev) ) and IsAfterShuttersTimeBlocking( $hash, $shuttersDev ) )
{ {
$shutters->setLastDrive('roommate home'); $shutters->setLastDrive('roommate home');
ShuttersCommandSet( $hash, $shuttersDev, ShuttersCommandSet( $hash, $shuttersDev,
@@ -1022,7 +1024,7 @@ sub EventProcessingResidents($@) {
or $shutters->getModeDown eq 'always' or $shutters->getModeDown eq 'always'
) )
and not IsDay( $hash, $shuttersDev ) and not IsDay( $hash, $shuttersDev )
and IsAfterShuttersTimeBlocking($hash,$shuttersDev) and IsAfterShuttersTimeBlocking( $hash, $shuttersDev )
) )
) )
{ {
@@ -1069,7 +1071,7 @@ sub EventProcessingResidents($@) {
or $shutters->getModeDown eq 'always' ) or $shutters->getModeDown eq 'always' )
and ( $ascDev->getResidentsLastStatus ne 'asleep' and ( $ascDev->getResidentsLastStatus ne 'asleep'
or $ascDev->getResidentsLastStatus ne 'awoken' ) or $ascDev->getResidentsLastStatus ne 'awoken' )
and IsAfterShuttersTimeBlocking($hash,$shuttersDev) and IsAfterShuttersTimeBlocking( $hash, $shuttersDev )
) )
{ {
$shutters->setLastDrive('residents home'); $shutters->setLastDrive('residents home');
@@ -1097,7 +1099,7 @@ sub EventProcessingResidents($@) {
and $shutters->getRoommatesStatus eq 'none' and $shutters->getRoommatesStatus eq 'none'
and ( $shutters->getModeUp eq 'home' and ( $shutters->getModeUp eq 'home'
or $shutters->getModeUp eq 'always' ) or $shutters->getModeUp eq 'always' )
and IsAfterShuttersTimeBlocking($hash,$shuttersDev) and IsAfterShuttersTimeBlocking( $hash, $shuttersDev )
) )
{ {
if ( $ascDev->getResidentsLastStatus eq 'asleep' if ( $ascDev->getResidentsLastStatus eq 'asleep'
@@ -1277,22 +1279,26 @@ sub EventProcessingShadingBrightness($@) {
$shutters->getDirection, $shutters->getShadingAngleLeft, $shutters->getDirection, $shutters->getShadingAngleLeft,
$shutters->getShadingAngleRight $shutters->getShadingAngleRight
) )
if ( ( $shutters->getShadingMode eq 'on' if (
or $shutters->getShadingMode eq $homemode) (
and IsDay( $hash, $shuttersDev ) ); $shutters->getShadingMode eq 'on'
or $shutters->getShadingMode eq $homemode
)
and IsDay( $hash, $shuttersDev )
);
} }
} }
sub EventProcessingTwilightDevice($@) { sub EventProcessingTwilightDevice($@) {
my ( $hash, $device, $events ) = @_; my ( $hash, $device, $events ) = @_;
# Twilight # Twilight
# azimuth = azimuth = Sonnenwinkel # azimuth = azimuth = Sonnenwinkel
# elevation = elevation = Sonnenhöhe # elevation = elevation = Sonnenhöhe
# #
# Astro # Astro
# SunAz = azimuth = Sonnenwinkel # SunAz = azimuth = Sonnenwinkel
# SunAlt = evaluation = Sonnenhöhe # SunAlt = evaluation = Sonnenhöhe
if ( $events =~ m#(azimuth|evaluation|SunAz|SunAlt):\s(\d+.\d+)# ) { if ( $events =~ m#(azimuth|evaluation|SunAz|SunAlt):\s(\d+.\d+)# ) {
my $name = $device; my $name = $device;
@@ -1339,21 +1345,26 @@ sub ShadingProcessing($@) {
### anglePlus ist $shutters->getShadingAngleRight ### anglePlus ist $shutters->getShadingAngleRight
### winPos ist die Fensterposition $shutters->getDirection ### winPos ist die Fensterposition $shutters->getDirection
my ( my (
$hash, $shuttersDev, $hash, $shuttersDev, $azimuth, $elevation, $brightness,
$azimuth, $elevation, $outTemp, $winPos, $angleMinus, $anglePlus
$brightness, $outTemp,
$winPos, $angleMinus,
$anglePlus
) = @_; ) = @_;
my $name = $hash->{NAME}; my $name = $hash->{NAME};
$shutters->setShuttersDev($shuttersDev); $shutters->setShuttersDev($shuttersDev);
$shutters->setShading('out') $shutters->setShading('out')
if ( not IsDay($hash,$shuttersDev) if ( not IsDay( $hash, $shuttersDev )
and $shutters->getShading ne 'out' ); and $shutters->getShading ne 'out' );
Log3( $name, 1, Log3( $name, 1,
"AutoShuttersControl ($name) - Shading Processing, Rollladen: " . $shuttersDev . " Azimuth: " . $azimuth . " Elevation: " . $elevation . " Brightness: " . $brightness . " OutTemp: " . $outTemp "AutoShuttersControl ($name) - Shading Processing, Rollladen: "
); . $shuttersDev
. " Azimuth: "
. $azimuth
. " Elevation: "
. $elevation
. " Brightness: "
. $brightness
. " OutTemp: "
. $outTemp );
return return
if ( $azimuth == -1 if ( $azimuth == -1
@@ -1361,15 +1372,17 @@ sub ShadingProcessing($@) {
or $brightness == -1 or $brightness == -1
or $outTemp == -100 or $outTemp == -100
or $outTemp < $shutters->getShadingMinOutsideTemperature or $outTemp < $shutters->getShadingMinOutsideTemperature
or not IsDay($hash,$shuttersDev) or not IsDay( $hash, $shuttersDev )
or (int(gettimeofday()) - $shutters->getShadingTimestamp) < ($shutters->getShadingWaitingPeriod / 2) or ( int( gettimeofday() ) - $shutters->getShadingTimestamp ) <
or not IsAfterShuttersTimeBlocking($hash,$shuttersDev) ( $shutters->getShadingWaitingPeriod / 2 )
); or not IsAfterShuttersTimeBlocking( $hash, $shuttersDev ) );
Log3( $name, 1, Log3( $name, 1,
"AutoShuttersControl ($name) - Shading Processing, Rollladen: " . $shuttersDev . " Nach dem return"); "AutoShuttersControl ($name) - Shading Processing, Rollladen: "
. $shuttersDev
. " Nach dem return" );
# minimalen und maximalen Winkel des Fensters bestimmen. wenn die aktuelle Sonnenposition z.B. bei 205° läge und der Wert für angleMin/Max 85° wäre, dann würden zwischen 120° und 290° beschattet. # minimalen und maximalen Winkel des Fensters bestimmen. wenn die aktuelle Sonnenposition z.B. bei 205° läge und der Wert für angleMin/Max 85° wäre, dann würden zwischen 120° und 290° beschattet.
my $winPosMin = $winPos - $angleMinus; my $winPosMin = $winPos - $angleMinus;
my $winPosMax = $winPos + $anglePlus; my $winPosMax = $winPos + $anglePlus;
@@ -1384,9 +1397,15 @@ sub ShadingProcessing($@) {
$shutters->setShading('out') $shutters->setShading('out')
if ( $shutters->getShading eq 'out reserved' if ( $shutters->getShading eq 'out reserved'
and (int(gettimeofday()) - $shutters->getShadingTimestamp) >= $shutters->getShadingWaitingPeriod ); and ( int( gettimeofday() ) - $shutters->getShadingTimestamp ) >=
$shutters->getShadingWaitingPeriod );
Log3( $name, 1, Log3( $name, 1,
"AutoShuttersControl ($name) - Shading Processing, Rollladen: " . $shuttersDev . " In der Out Abfrage, Shadingwert: " . $shutters->getShading . ", Zeitstempel: " . $shutters->getShadingTimestamp); "AutoShuttersControl ($name) - Shading Processing, Rollladen: "
. $shuttersDev
. " In der Out Abfrage, Shadingwert: "
. $shutters->getShading
. ", Zeitstempel: "
. $shutters->getShadingTimestamp );
} }
elsif ( $azimuth >= $winPosMin elsif ( $azimuth >= $winPosMin
and $azimuth <= $winPosMax and $azimuth <= $winPosMax
@@ -1395,18 +1414,25 @@ sub ShadingProcessing($@) {
{ {
$shutters->setShading('in reserved') $shutters->setShading('in reserved')
if ( $shutters->getShading eq 'out' if ( $shutters->getShading eq 'out'
or $shutters->getShading eq 'out reserved'); or $shutters->getShading eq 'out reserved' );
$shutters->setShading('in') $shutters->setShading('in')
if ( $shutters->getShading eq 'in reserved' if ( $shutters->getShading eq 'in reserved'
and (int(gettimeofday()) - $shutters->getShadingTimestamp) >= ($shutters->getShadingWaitingPeriod / 2) ); and ( int( gettimeofday() ) - $shutters->getShadingTimestamp ) >=
( $shutters->getShadingWaitingPeriod / 2 ) );
Log3( $name, 1, Log3( $name, 1,
"AutoShuttersControl ($name) - Shading Processing, Rollladen: " . $shuttersDev . " In der In Abfrage, Shadingwert: " . $shutters->getShading . ", Zeitstempel: " . $shutters->getShadingTimestamp); "AutoShuttersControl ($name) - Shading Processing, Rollladen: "
. $shuttersDev
. " In der In Abfrage, Shadingwert: "
. $shutters->getShading
. ", Zeitstempel: "
. $shutters->getShadingTimestamp );
} }
if ( $shutters->getShading eq 'out' or $shutters->getShading eq 'in' ) { if ( $shutters->getShading eq 'out' or $shutters->getShading eq 'in' ) {
$shutters->setShading($shutters->getShading) $shutters->setShading( $shutters->getShading )
if ( (int(gettimeofday()) - $shutters->getShadingTimestamp) >= ($shutters->getShadingWaitingPeriod / 2) ); if ( ( int( gettimeofday() ) - $shutters->getShadingTimestamp ) >=
( $shutters->getShadingWaitingPeriod / 2 ) );
if ( $shutters->getShading eq 'in' if ( $shutters->getShading eq 'in'
and $shutters->getShadingPos != $shutters->getStatus ) and $shutters->getShadingPos != $shutters->getStatus )
@@ -1421,17 +1447,19 @@ sub ShadingProcessing($@) {
ShuttersCommandSet( $hash, $shuttersDev, $shutters->getShadingPos ) ShuttersCommandSet( $hash, $shuttersDev, $shutters->getShadingPos )
if ( not $queryShuttersShadingPos ); if ( not $queryShuttersShadingPos );
} }
elsif( $shutters->getShading eq 'out' elsif ( $shutters->getShading eq 'out'
and $shutters->getShadingPos == $shutters->getStatus ) and $shutters->getShadingPos == $shutters->getStatus )
{ {
$shutters->setLastDrive('shading out'); $shutters->setLastDrive('shading out');
ShuttersCommandSet( $hash, $shuttersDev, $shutters->getLastPos ); ShuttersCommandSet( $hash, $shuttersDev, $shutters->getLastPos );
Log3( $name, 1, Log3( $name, 1,
"AutoShuttersControl ($name) - Shading Processing - shading out läuft" ); "AutoShuttersControl ($name) - Shading Processing - shading out läuft"
);
} }
Log3( $name, 1, Log3( $name, 1,
"AutoShuttersControl ($name) - Shading Processing - In der Routine zum fahren der Rollläden, Shading Wert: " . $shutters->getShading ); "AutoShuttersControl ($name) - Shading Processing - In der Routine zum fahren der Rollläden, Shading Wert: "
. $shutters->getShading );
} }
} }
@@ -1502,8 +1530,11 @@ sub ShuttersCommandSet($$$) {
: $shutters->getStatus < $posValue : $shutters->getStatus < $posValue
); );
if ( ($posValue != $shutters->getShadingPos if (
and ( $shutters->getPartyMode eq 'on' and $ascDev->getPartyMode eq 'on' ) (
$posValue != $shutters->getShadingPos
and ( $shutters->getPartyMode eq 'on'
and $ascDev->getPartyMode eq 'on' )
or ( CheckIfShuttersWindowRecOpen($shuttersDev) == 2 or ( CheckIfShuttersWindowRecOpen($shuttersDev) == 2
and $shutters->getSubTyp eq 'threestate' and $shutters->getSubTyp eq 'threestate'
and $ascDev->getAutoShuttersControlComfort eq 'off' and $ascDev->getAutoShuttersControlComfort eq 'off'
@@ -1771,11 +1802,9 @@ sub CreateNewNotifyDev($) {
AddNotifyDev( $hash, AttrVal( $_, 'ASC_WindowRec', 'none' ), AddNotifyDev( $hash, AttrVal( $_, 'ASC_WindowRec', 'none' ),
$_, 'ASC_WindowRec' ) $_, 'ASC_WindowRec' )
if ( AttrVal( $_, 'ASC_WindowRec', 'none' ) ne 'none' ); if ( AttrVal( $_, 'ASC_WindowRec', 'none' ) ne 'none' );
AddNotifyDev( $hash, AddNotifyDev( $hash, AttrVal( $_, 'ASC_Brightness_Sensor', 'none' ),
AttrVal( $_, 'ASC_Brightness_Sensor', 'none' ),
$_, 'ASC_Brightness_Sensor' ) $_, 'ASC_Brightness_Sensor' )
if ( if ( AttrVal( $_, 'ASC_Brightness_Sensor', 'none' ) ne 'none' );
AttrVal( $_, 'ASC_Brightness_Sensor', 'none' ) ne 'none' );
$shuttersList = $shuttersList . ',' . $_; $shuttersList = $shuttersList . ',' . $_;
} }
AddNotifyDev( $hash, AttrVal( $name, 'ASC_residentsDevice', 'none' ), AddNotifyDev( $hash, AttrVal( $name, 'ASC_residentsDevice', 'none' ),
@@ -2190,17 +2219,22 @@ sub ShuttersSunrise($$$) {
} }
sub IsAfterShuttersTimeBlocking($$) { sub IsAfterShuttersTimeBlocking($$) {
my ($hash, $shuttersDev) = @_; my ( $hash, $shuttersDev ) = @_;
$shutters->setShuttersDev($shuttersDev); $shutters->setShuttersDev($shuttersDev);
if ( if (
( int(gettimeofday()) - $shutters->getLastManPosTimestamp) < $shutters->getBlockingTimeAfterManual ( int( gettimeofday() ) - $shutters->getLastManPosTimestamp ) <
or ( not IsDay($hash,$shuttersDev) $shutters->getBlockingTimeAfterManual
and $shutters->getSunriseUnixTime - (int(gettimeofday())) < $shutters->getBlockingTimeBeforDayOpen) or ( not IsDay( $hash, $shuttersDev )
or ( IsDay($hash,$shuttersDev) and $shutters->getSunriseUnixTime - ( int( gettimeofday() ) ) <
and $shutters->getSunsetUnixTime - (int(gettimeofday())) < $shutters->getBlockingTimeBeforNightClose) $shutters->getBlockingTimeBeforDayOpen )
or ( IsDay( $hash, $shuttersDev )
and $shutters->getSunsetUnixTime - ( int( gettimeofday() ) ) <
$shutters->getBlockingTimeBeforNightClose )
) )
{ return 0 } {
return 0;
}
else { return 1 } else { return 1 }
} }
@@ -2566,10 +2600,11 @@ sub setLastManPos {
if ( defined($position) ); if ( defined($position) );
$self->{ $self->{shuttersDev} }{lastManPos}{TIME} = int( gettimeofday() ) $self->{ $self->{shuttersDev} }{lastManPos}{TIME} = int( gettimeofday() )
if ( defined( $self->{ $self->{shuttersDev} }{lastManPos} ) if ( defined( $self->{ $self->{shuttersDev} }{lastManPos} )
and defined($self->{ $self->{shuttersDev} }{lastManPos}{TIME}) ); and defined( $self->{ $self->{shuttersDev} }{lastManPos}{TIME} ) );
$self->{ $self->{shuttersDev} }{lastManPos}{TIME} = int( gettimeofday() ) - 86400 $self->{ $self->{shuttersDev} }{lastManPos}{TIME} =
int( gettimeofday() ) - 86400
if ( defined( $self->{ $self->{shuttersDev} }{lastManPos} ) if ( defined( $self->{ $self->{shuttersDev} }{lastManPos} )
and not defined($self->{ $self->{shuttersDev} }{lastManPos}{TIME}) ); and not defined( $self->{ $self->{shuttersDev} }{lastManPos}{TIME} ) );
return 0; return 0;
} }
@@ -2767,8 +2802,7 @@ sub setShading {
return 0; return 0;
} }
sub getShading sub getShading { # Werte für value = in, out, in reserved, out reserved
{ # Werte für value = in, out, in reserved, out reserved
my $self = shift; my $self = shift;
return $self->{ $self->{shuttersDev} }{Shading}{VAL} return $self->{ $self->{shuttersDev} }{Shading}{VAL}
@@ -2855,8 +2889,7 @@ sub _getBrightnessSensor {
my $default = $self->{defaultarg}; my $default = $self->{defaultarg};
$default = 'none' if ( not defined($default) ); $default = 'none' if ( not defined($default) );
return AttrVal( $self->{shuttersDev}, 'ASC_Brightness_Sensor', return AttrVal( $self->{shuttersDev}, 'ASC_Brightness_Sensor', $default );
$default );
} }
sub getBrightnessReading { sub getBrightnessReading {
@@ -2864,8 +2897,7 @@ sub getBrightnessReading {
my $default = $self->{defaultarg}; my $default = $self->{defaultarg};
$default = 'brightness' if ( not defined($default) ); $default = 'brightness' if ( not defined($default) );
return AttrVal( $self->{shuttersDev}, 'ASC_Brightness_Reading', return AttrVal( $self->{shuttersDev}, 'ASC_Brightness_Reading', $default );
$default );
} }
sub getDirection { sub getDirection {
@@ -2889,7 +2921,8 @@ sub getShadingAngleRight {
sub getShadingMinOutsideTemperature { sub getShadingMinOutsideTemperature {
my $self = shift; my $self = shift;
return AttrVal( $self->{shuttersDev}, 'ASC_Shading_Min_OutsideTemperature', 2 ); return AttrVal( $self->{shuttersDev}, 'ASC_Shading_Min_OutsideTemperature',
2 );
} }
sub getShadingMinElevation { sub getShadingMinElevation {
@@ -2901,13 +2934,15 @@ sub getShadingMinElevation {
sub getShadingStateChangeSunny { sub getShadingStateChangeSunny {
my $self = shift; my $self = shift;
return AttrVal( $self->{shuttersDev}, 'ASC_Shading_StateChange_Sunny', 5000 ); return AttrVal( $self->{shuttersDev}, 'ASC_Shading_StateChange_Sunny',
5000 );
} }
sub getShadingStateChangeCloudy { sub getShadingStateChangeCloudy {
my $self = shift; my $self = shift;
return AttrVal( $self->{shuttersDev}, 'ASC_Shading_StateChange_Cloudy', 2000 ); return AttrVal( $self->{shuttersDev}, 'ASC_Shading_StateChange_Cloudy',
2000 );
} }
sub getShadingWaitingPeriod { sub getShadingWaitingPeriod {
@@ -2926,19 +2961,22 @@ sub getOffset {
sub getBlockingTimeAfterManual { sub getBlockingTimeAfterManual {
my $self = shift; my $self = shift;
return AttrVal( $self->{shuttersDev}, 'ASC_BlockingTime_afterManual', 1200 ); return AttrVal( $self->{shuttersDev}, 'ASC_BlockingTime_afterManual',
1200 );
} }
sub getBlockingTimeBeforNightClose { sub getBlockingTimeBeforNightClose {
my $self = shift; my $self = shift;
return AttrVal( $self->{shuttersDev}, 'ASC_BlockingTime_beforNightClose', 3600 ); return AttrVal( $self->{shuttersDev}, 'ASC_BlockingTime_beforNightClose',
3600 );
} }
sub getBlockingTimeBeforDayOpen { sub getBlockingTimeBeforDayOpen {
my $self = shift; my $self = shift;
return AttrVal( $self->{shuttersDev}, 'ASC_BlockingTime_beforDayOpen', 3600 ); return AttrVal( $self->{shuttersDev}, 'ASC_BlockingTime_beforDayOpen',
3600 );
} }
sub getPosCmd { sub getPosCmd {