change attribut names and parts of code

This commit is contained in:
Marko Oldenburg 2019-09-19 13:46:42 +02:00
parent 7f78529215
commit 19ff67a6ce

View File

@ -219,13 +219,10 @@ my %userAttrList = (
'ASC_BlockingTime_beforNightClose' => '-', 'ASC_BlockingTime_beforNightClose' => '-',
'ASC_BlockingTime_beforDayOpen' => '-', 'ASC_BlockingTime_beforDayOpen' => '-',
'ASC_BrightnessSensor' => '-', 'ASC_BrightnessSensor' => '-',
'ASC_Shading_Direction' => '-',
'ASC_Shading_Pos:10,20,30,40,50,60,70,80,90,100' => [ '', 80, 20 ], 'ASC_Shading_Pos:10,20,30,40,50,60,70,80,90,100' => [ '', 80, 20 ],
'ASC_Shading_Mode:absent,always,off,home' => '-', 'ASC_Shading_Mode:absent,always,off,home' => '-',
'ASC_Shading_Angle_Left' => '-', 'ASC_Shading_InOutAzimuth' => '-',
'ASC_Shading_Angle_Right' => '-', 'ASC_Shading_StateChange_SunnyCloudy' => '-',
'ASC_Shading_StateChange_Sunny' => '-',
'ASC_Shading_StateChange_Cloudy' => '-',
'ASC_Shading_MinMax_Elevation' => '-', 'ASC_Shading_MinMax_Elevation' => '-',
'ASC_Shading_Min_OutsideTemperature' => '-', 'ASC_Shading_Min_OutsideTemperature' => '-',
'ASC_Shading_WaitingPeriod' => '-', 'ASC_Shading_WaitingPeriod' => '-',
@ -729,14 +726,6 @@ sub ShuttersDeviceScan($) {
delFromDevAttrList( $_, 'ASC_Self_Defense_Exclude' ); delFromDevAttrList( $_, 'ASC_Self_Defense_Exclude' );
} }
CommandAttr( undef,
$name
. ' ASC_shuttersDriveDelay '
. AttrVal( $name, 'ASC_shuttersDriveOffset', -1 ) )
if ( AttrVal( $name, 'ASC_shuttersDriveOffset', 'none' ) ne 'none' );
CommandDeleteAttr( undef, $name . ' ASC_shuttersDriveOffset' )
if ( AttrVal( $name, 'ASC_shuttersDriveOffset', 'none' ) ne 'none' );
#### ####
#### ####
@ -758,6 +747,17 @@ sub ShuttersDeviceScan($) {
if ( ReadingsVal( $_, 'ASC_Enable', 'none' ) eq 'none' ); if ( ReadingsVal( $_, 'ASC_Enable', 'none' ) eq 'none' );
} }
####
CommandAttr( undef,
$name
. ' ASC_shuttersDriveDelay '
. AttrVal( $name, 'ASC_shuttersDriveOffset', -1 ) )
if ( AttrVal( $name, 'ASC_shuttersDriveOffset', 'none' ) ne 'none' );
CommandDeleteAttr( undef, $name . ' ASC_shuttersDriveOffset' )
if ( AttrVal( $name, 'ASC_shuttersDriveOffset', 'none' ) ne 'none' );
####
$hash->{NOTIFYDEV} = "global," . $name . $shuttersList; $hash->{NOTIFYDEV} = "global," . $name . $shuttersList;
if ( $ascDev->getMonitoredDevs ne 'none' ) { if ( $ascDev->getMonitoredDevs ne 'none' ) {
@ -1938,9 +1938,8 @@ sub EventProcessingShadingBrightness($@) {
$ascDev->getAzimuth, $ascDev->getAzimuth,
$ascDev->getElevation, $ascDev->getElevation,
$outTemp, $outTemp,
$shutters->getDirection, $shutters->getShadingAzimuthLeft,
$shutters->getShadingAngleLeft, $shutters->getShadingAzimuthRight
$shutters->getShadingAngleRight
); );
ASC_Debug( 'EventProcessingShadingBrightness: ' ASC_Debug( 'EventProcessingShadingBrightness: '
@ -2010,9 +2009,8 @@ sub EventProcessingTwilightDevice($@) {
$azimuth, $azimuth,
$elevation, $elevation,
$outTemp, $outTemp,
$shutters->getDirection, $shutters->getShadingAzimuthLeft,
$shutters->getShadingAngleLeft, $shutters->getShadingAzimuthRight
$shutters->getShadingAngleRight
); );
ASC_Debug( 'EventProcessingTwilightDevice: ' ASC_Debug( 'EventProcessingTwilightDevice: '
@ -2025,11 +2023,11 @@ sub EventProcessingTwilightDevice($@) {
} }
sub ShadingProcessing($@) { sub ShadingProcessing($@) {
### angleMinus ist $shutters->getShadingAngleLeft ### angleMinus ist $shutters->getShadingAzimuthLeft
### anglePlus ist $shutters->getShadingAngleRight ### anglePlus ist $shutters->getShadingAzimuthRight
### winPos ist die Fensterposition $shutters->getDirection ### winPos ist die Fensterposition $shutters->getDirection
my ( $hash, $shuttersDev, $azimuth, $elevation, $outTemp, my ( $hash, $shuttersDev, $azimuth, $elevation, $outTemp,
$winPos, $angleMinus, $anglePlus ) $azimuthLeft, $azimuthRight )
= @_; = @_;
my $name = $hash->{NAME}; my $name = $hash->{NAME};
$shutters->setShuttersDev($shuttersDev); $shutters->setShuttersDev($shuttersDev);
@ -2046,12 +2044,10 @@ sub ShadingProcessing($@) {
. $brightness . $brightness
. ', OutTemp: ' . ', OutTemp: '
. $outTemp . $outTemp
. ', Fenster Position: ' . ', Azimut Beschattung: '
. $winPos . $azimuthLeft
. ', Winkel Links: ' . ', Azimut Endschattung: '
. $angleMinus . $azimuthRight
. ', Winkel Rechts: '
. $anglePlus
. ', Ist es nach der Zeitblockadezeit: ' . ', Ist es nach der Zeitblockadezeit: '
. ( IsAfterShuttersTimeBlocking($shuttersDev) ? 'JA' : 'NEIN' ) . ( IsAfterShuttersTimeBlocking($shuttersDev) ? 'JA' : 'NEIN' )
. ', Das Rollo ist in der Beschattung und wurde manuell gefahren: ' . ', Das Rollo ist in der Beschattung und wurde manuell gefahren: '
@ -2098,15 +2094,11 @@ sub ShadingProcessing($@) {
. ' - Alle Werte für die weitere Verarbeitung sind korrekt vorhanden und es wird nun mit der Beschattungsverarbeitung begonnen' . ' - Alle Werte für die weitere Verarbeitung sind korrekt vorhanden und es wird nun mit der Beschattungsverarbeitung begonnen'
); );
# 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 $winPosMax = $winPos + $anglePlus;
if ( if (
( (
$outTemp < $shutters->getShadingMinOutsideTemperature - 3 $outTemp < $shutters->getShadingMinOutsideTemperature - 3
or $azimuth < $winPosMin or $azimuth < $azimuthLeft
or $azimuth > $winPosMax or $azimuth > $azimuthRight
) )
and $shutters->getShadingStatus ne 'out' and $shutters->getShadingStatus ne 'out'
) )
@ -2123,8 +2115,8 @@ sub ShadingProcessing($@) {
"AutoShuttersControl ($name) - Shading Processing - Der Sonnenstand ist ausserhalb der Winkelangaben oder die Aussentemperatur unterhalb der Shading Temperatur " "AutoShuttersControl ($name) - Shading Processing - Der Sonnenstand ist ausserhalb der Winkelangaben oder die Aussentemperatur unterhalb der Shading Temperatur "
); );
} }
elsif ($azimuth < $winPosMin elsif ($azimuth < $azimuthLeft
or $azimuth > $winPosMax or $azimuth > $azimuthRight
or $elevation < $shutters->getShadingMinElevation or $elevation < $shutters->getShadingMinElevation
or $elevation > $shutters->getShadingMaxElevation or $elevation > $shutters->getShadingMaxElevation
or $brightness < $shutters->getShadingStateChangeCloudy or $brightness < $shutters->getShadingStateChangeCloudy
@ -2162,8 +2154,8 @@ sub ShadingProcessing($@) {
. ' Neuer Status: ' . ' Neuer Status: '
. $shutters->getShadingStatus ); . $shutters->getShadingStatus );
} }
elsif ( $azimuth > $winPosMin elsif ( $azimuth > $azimuthLeft
and $azimuth < $winPosMax and $azimuth < $azimuthRight
and $elevation > $shutters->getShadingMinElevation and $elevation > $shutters->getShadingMinElevation
and $elevation < $shutters->getShadingMaxElevation and $elevation < $shutters->getShadingMaxElevation
and $brightness > $shutters->getShadingStateChangeSunny and $brightness > $shutters->getShadingStateChangeSunny
@ -2649,6 +2641,27 @@ sub RenewSunRiseSetShuttersTimer($) {
if ( AttrVal( $_, 'ASC_Drive_OffsetStart', 'none' ) ne 'none' ); if ( AttrVal( $_, 'ASC_Drive_OffsetStart', 'none' ) ne 'none' );
delFromDevAttrList( $_, 'ASC_Drive_OffsetStart' ); delFromDevAttrList( $_, 'ASC_Drive_OffsetStart' );
$attr{$_}{ASC_Shading_StateChange_SunnyCloudy} =
AttrVal( $_, 'ASC_Shading_StateChange_Sunny', 'none' ) . ':'
. AttrVal( $_, 'ASC_Shading_StateChange_Cloudy', 'none' )
if ( AttrVal( $_, 'ASC_Shading_StateChange_Sunny', 'none' ) ne 'none'
and AttrVal( $_, 'ASC_Shading_StateChange_Cloudy', 'none' ) ne
'none' );
delFromDevAttrList( $_, 'ASC_Shading_StateChange_Sunny' );
delFromDevAttrList( $_, 'ASC_Shading_StateChange_Cloudy' );
$attr{$_}{ASC_Shading_InOutAzimuth} =
( AttrVal( $_, 'ASC_Shading_Direction', 180 ) -
AttrVal( $_, 'ASC_Shading_Angle_Left', 85 ) )
. ':'
. ( AttrVal( $_, 'ASC_Shading_Direction', 180 ) +
AttrVal( $_, 'ASC_Shading_Angle_Right', 85 ) )
if ( AttrVal( $_, 'ASC_Shading_Direction', 'none' ) ne 'none'
or AttrVal( $_, 'ASC_Shading_Angle_Left', 'none' ) ne 'none'
or AttrVal( $_, 'ASC_Shading_Angle_Right', 'none' ) ne 'none' );
delFromDevAttrList( $_, 'ASC_Shading_Direction' );
delFromDevAttrList( $_, 'ASC_Shading_Angle_Left' );
delFromDevAttrList( $_, 'ASC_Shading_Angle_Right' );
} }
} }
@ -4631,10 +4644,12 @@ sub getShadingPos {
[ AttrVal( $self->{shuttersDev}, 'ASC', 2 ) ] ); [ AttrVal( $self->{shuttersDev}, 'ASC', 2 ) ] );
} }
return ( $val =~ /^\d+(\.\d+)?$/ return (
$val =~ /^\d+(\.\d+)?$/
? $val ? $val
: $userAttrList{'ASC_Shading_Pos:10,20,30,40,50,60,70,80,90,100'} : $userAttrList{'ASC_Shading_Pos:10,20,30,40,50,60,70,80,90,100'}
[ AttrVal( $self->{shuttersDev}, 'ASC', 2 ) ] ); [ AttrVal( $self->{shuttersDev}, 'ASC', 2 ) ]
);
} }
sub getShadingMode { sub getShadingMode {
@ -4747,22 +4762,56 @@ sub getBrightnessReading {
); );
} }
sub getDirection { sub getShadingAzimuthLeft {
my $self = shift; my $self = shift;
return AttrVal( $self->{shuttersDev}, 'ASC_Shading_Direction', 180 ); return $self->{ $self->{shuttersDev} }->{ASC_Shading_InOutAzimuth}
->{leftVal}
if (
exists(
$self->{ $self->{shuttersDev} }->{ASC_Shading_InOutAzimuth}
->{LASTGETTIME}
)
and ( gettimeofday() -
$self->{ $self->{shuttersDev} }->{ASC_Shading_InOutAzimuth}
->{LASTGETTIME} ) < 2
);
$shutters->getShadingAzimuthRight;
return $self->{ $self->{shuttersDev} }->{ASC_Shading_InOutAzimuth}
->{leftVal};
} }
sub getShadingAngleLeft { sub getShadingAzimuthRight {
my $self = shift; my $self = shift;
return AttrVal( $self->{shuttersDev}, 'ASC_Shading_Angle_Left', 75 ); return $self->{ $self->{shuttersDev} }->{ASC_Shading_InOutAzimuth}
} ->{rightVal}
if (
exists(
$self->{ $self->{shuttersDev} }->{ASC_Shading_InOutAzimuth}
->{LASTGETTIME}
)
and ( gettimeofday() -
$self->{ $self->{shuttersDev} }->{ASC_Shading_InOutAzimuth}
->{LASTGETTIME} ) < 2
);
$self->{ $self->{shuttersDev} }->{ASC_Shading_InOutAzimuth}->{LASTGETTIME}
= int( gettimeofday() );
my ( $left, $right ) =
FHEM::AutoShuttersControl::GetAttrValues( $self->{shuttersDev},
'ASC_Shading_InOutAzimuth', '95:265' );
sub getShadingAngleRight { ### erwartetes Ergebnis
my $self = shift; # MIN:MAX
return AttrVal( $self->{shuttersDev}, 'ASC_Shading_Angle_Right', 75 ); $self->{ $self->{shuttersDev} }->{ASC_Shading_InOutAzimuth}->{leftVal} =
$left;
$self->{ $self->{shuttersDev} }->{ASC_Shading_InOutAzimuth}->{rightVal} =
$right;
return $self->{ $self->{shuttersDev} }->{ASC_Shading_InOutAzimuth}
->{rightVal};
} }
sub getShadingMinOutsideTemperature { sub getShadingMinOutsideTemperature {
@ -4827,15 +4876,54 @@ sub getShadingMaxElevation {
sub getShadingStateChangeSunny { sub getShadingStateChangeSunny {
my $self = shift; my $self = shift;
return AttrVal( $self->{shuttersDev}, 'ASC_Shading_StateChange_Sunny', return $self->{ $self->{shuttersDev} }
35000 ); ->{ASC_Shading_StateChange_SunnyCloudy}->{sunny}
if (
exists(
$self->{ $self->{shuttersDev} }
->{ASC_Shading_StateChange_SunnyCloudy}->{LASTGETTIME}
)
and ( gettimeofday() -
$self->{ $self->{shuttersDev} }
->{ASC_Shading_StateChange_SunnyCloudy}->{LASTGETTIME} ) < 2
);
$self->{ $self->{shuttersDev} }->{ASC_Shading_StateChange_SunnyCloudy}
->{LASTGETTIME} = int( gettimeofday() );
my ( $sunny, $cloudy ) =
FHEM::AutoShuttersControl::GetAttrValues( $self->{shuttersDev},
'ASC_Shading_StateChange_SunnyCloudy',
'35000:20000' );
### erwartetes Ergebnis
# SUNNY:CLOUDY
$self->{ $self->{shuttersDev} }->{ASC_Shading_StateChange_SunnyCloudy}
->{sunny} = $sunny;
$self->{ $self->{shuttersDev} }->{ASC_Shading_StateChange_SunnyCloudy}
->{cloudy} = $cloudy;
return $self->{ $self->{shuttersDev} }
->{ASC_Shading_StateChange_SunnyCloudy}->{sunny};
} }
sub getShadingStateChangeCloudy { sub getShadingStateChangeCloudy {
my $self = shift; my $self = shift;
return AttrVal( $self->{shuttersDev}, 'ASC_Shading_StateChange_Cloudy', return $self->{ $self->{shuttersDev} }
20000 ); ->{ASC_Shading_StateChange_SunnyCloudy}->{cloudy}
if (
exists(
$self->{ $self->{shuttersDev} }
->{ASC_Shading_StateChange_SunnyCloudy}->{LASTGETTIME}
)
and ( gettimeofday() -
$self->{ $self->{shuttersDev} }
->{ASC_Shading_StateChange_SunnyCloudy}->{LASTGETTIME} ) < 2
);
$shutters->getShadingStateChangeSunny;
return $self->{ $self->{shuttersDev} }
->{ASC_Shading_StateChange_SunnyCloudy}->{cloudy};
} }
sub getShadingWaitingPeriod { sub getShadingWaitingPeriod {
@ -4898,10 +4986,12 @@ sub getOpenPos {
[ AttrVal( $self->{shuttersDev}, 'ASC', 2 ) ] ); [ AttrVal( $self->{shuttersDev}, 'ASC', 2 ) ] );
} }
return ( $val =~ /^\d+(\.\d+)?$/ return (
$val =~ /^\d+(\.\d+)?$/
? $val ? $val
: $userAttrList{'ASC_Open_Pos:0,10,20,30,40,50,60,70,80,90,100'} : $userAttrList{'ASC_Open_Pos:0,10,20,30,40,50,60,70,80,90,100'}
[ AttrVal( $self->{shuttersDev}, 'ASC', 2 ) ] ); [ AttrVal( $self->{shuttersDev}, 'ASC', 2 ) ]
);
} }
sub getVentilatePos { sub getVentilatePos {
@ -4916,10 +5006,12 @@ sub getVentilatePos {
[ AttrVal( $self->{shuttersDev}, 'ASC', 2 ) ] ); [ AttrVal( $self->{shuttersDev}, 'ASC', 2 ) ] );
} }
return ( $val =~ /^\d+(\.\d+)?$/ return (
$val =~ /^\d+(\.\d+)?$/
? $val ? $val
: $userAttrList{'ASC_Ventilate_Pos:10,20,30,40,50,60,70,80,90,100'} : $userAttrList{'ASC_Ventilate_Pos:10,20,30,40,50,60,70,80,90,100'}
[ AttrVal( $self->{shuttersDev}, 'ASC', 2 ) ] ); [ AttrVal( $self->{shuttersDev}, 'ASC', 2 ) ]
);
} }
sub getVentilatePosAfterDayClosed { sub getVentilatePosAfterDayClosed {
@ -4979,10 +5071,12 @@ sub getComfortOpenPos {
[ AttrVal( $self->{shuttersDev}, 'ASC', 2 ) ] ); [ AttrVal( $self->{shuttersDev}, 'ASC', 2 ) ] );
} }
return ( $val =~ /^\d+(\.\d+)?$/ return (
$val =~ /^\d+(\.\d+)?$/
? $val ? $val
: $userAttrList{'ASC_ComfortOpen_Pos:0,10,20,30,40,50,60,70,80,90,100'} : $userAttrList{'ASC_ComfortOpen_Pos:0,10,20,30,40,50,60,70,80,90,100'}
[ AttrVal( $self->{shuttersDev}, 'ASC', 2 ) ] ); [ AttrVal( $self->{shuttersDev}, 'ASC', 2 ) ]
);
} }
sub getPartyMode { sub getPartyMode {
@ -5158,9 +5252,11 @@ sub getTimeUpEarly {
$val = FHEM::AutoShuttersControl::_perlCodeCheck( $val, '05:00' ); $val = FHEM::AutoShuttersControl::_perlCodeCheck( $val, '05:00' );
} }
return ( $val =~ /^(?:[01]\d|2[0-3]):(?:[0-5]\d)(:(?:[0-5]\d))?$/ return (
$val =~ /^(?:[01]\d|2[0-3]):(?:[0-5]\d)(:(?:[0-5]\d))?$/
? $val ? $val
: '05:00' ); : '05:00'
);
} }
sub getTimeUpLate { sub getTimeUpLate {
@ -5171,9 +5267,11 @@ sub getTimeUpLate {
$val = FHEM::AutoShuttersControl::_perlCodeCheck( $val, '08:30' ); $val = FHEM::AutoShuttersControl::_perlCodeCheck( $val, '08:30' );
} }
return ( $val =~ /^(?:[01]\d|2[0-3]):(?:[0-5]\d)(:(?:[0-5]\d))?$/ return (
$val =~ /^(?:[01]\d|2[0-3]):(?:[0-5]\d)(:(?:[0-5]\d))?$/
? $val ? $val
: '08:30' ); : '08:30'
);
} }
sub getTimeDownEarly { sub getTimeDownEarly {
@ -5184,9 +5282,11 @@ sub getTimeDownEarly {
$val = FHEM::AutoShuttersControl::_perlCodeCheck( $val, '16:00' ); $val = FHEM::AutoShuttersControl::_perlCodeCheck( $val, '16:00' );
} }
return ( $val =~ /^(?:[01]\d|2[0-3]):(?:[0-5]\d)(:(?:[0-5]\d))?$/ return (
$val =~ /^(?:[01]\d|2[0-3]):(?:[0-5]\d)(:(?:[0-5]\d))?$/
? $val ? $val
: '16:00' ); : '16:00'
);
} }
sub getTimeDownLate { sub getTimeDownLate {
@ -5197,9 +5297,11 @@ sub getTimeDownLate {
$val = FHEM::AutoShuttersControl::_perlCodeCheck( $val, '22:00' ); $val = FHEM::AutoShuttersControl::_perlCodeCheck( $val, '22:00' );
} }
return ( $val =~ /^(?:[01]\d|2[0-3]):(?:[0-5]\d)(:(?:[0-5]\d))?$/ return (
$val =~ /^(?:[01]\d|2[0-3]):(?:[0-5]\d)(:(?:[0-5]\d))?$/
? $val ? $val
: '22:00' ); : '22:00'
);
} }
sub getTimeUpWeHoliday { sub getTimeUpWeHoliday {
@ -5211,9 +5313,11 @@ sub getTimeUpWeHoliday {
$val = FHEM::AutoShuttersControl::_perlCodeCheck( $val, '08:00' ); $val = FHEM::AutoShuttersControl::_perlCodeCheck( $val, '08:00' );
} }
return ( $val =~ /^(?:[01]\d|2[0-3]):(?:[0-5]\d)(:(?:[0-5]\d))?$/ return (
$val =~ /^(?:[01]\d|2[0-3]):(?:[0-5]\d)(:(?:[0-5]\d))?$/
? $val ? $val
: '08:00' ); : '08:00'
);
} }
sub getBrightnessMinVal { sub getBrightnessMinVal {
@ -6378,19 +6482,8 @@ sub getblockAscDrivesAfterManual {
The following attributes are available: The following attributes are available:
</p> </p>
<ul> <ul>
<li><strong>ASC_Shading_Angle_Left</strong> - Minimal shading angle in relation to the window, <li><strong>ASC_Shading_InOutAzimuth</strong> - Azimuth value from which shading is to be used when shading is exceeded and shading when undershooting is required.
from when shade is applied. For example: Window is 180 &deg; (perpendicular) &minus; 85 &deg; set Defaults to 95:265.
for <em>ASC_Shading_Angle_Left</em> &rarr; shading starts if sun position is 95 &deg;.
Defaults to 75.
</li>
<li><strong>ASC_Shading_Angle_Right</strong> - Complements <em>ASC_Shading_Angle_Left</em> and
sets the maximum shading angle in relation to the window. For example: Window is 180 &deg;
(perpendicular) &plus; 85 &deg; set from <em>ASC_Shading_Angle_Right</em> &rarr; shading until
sun position of 265 &deg; is reached. Defaults to 75.
</li>
<li><strong>ASC_Shading_Direction</strong> - Compass point degrees for which the window resp. shutter
points. East is 90 &deg;, South 180 &deg;, West is 270 &deg; and North is 0 &deg;.
Defaults to South (180).
</li> </li>
<li><strong>ASC_Shading_MinMax_Elevation</strong> - Shading starts as min point of sun elevation is <li><strong>ASC_Shading_MinMax_Elevation</strong> - Shading starts as min point of sun elevation is
reached and end as max point of sun elevation is reached, depending also on other sensor values. Defaults to 25.0:100.0. reached and end as max point of sun elevation is reached, depending also on other sensor values. Defaults to 25.0:100.0.
@ -6405,8 +6498,8 @@ sub getblockAscDrivesAfterManual {
<li><strong>ASC_Shading_StateChange_Cloudy</strong> - Shading <strong>ends</strong> at this <li><strong>ASC_Shading_StateChange_Cloudy</strong> - Shading <strong>ends</strong> at this
outdoor brightness, depending also on other sensor values. Defaults to 20000. outdoor brightness, depending also on other sensor values. Defaults to 20000.
</li> </li>
<li><strong>ASC_Shading_StateChange_Sunny</strong> - Shading <strong>starts</strong> at this <li><strong>ASC_Shading_StateChange_SunnyCloudy</strong> - Shading <strong>starts/stops</strong> at this
outdoor brightness, depending also on other sensor values. Defaults to 35000. outdoor brightness, depending also on other sensor values. Defaults to 35000:20000.
</li> </li>
<li><strong>ASC_Shading_WaitingPeriod</strong> - Waiting time in seconds before additional sensor values <li><strong>ASC_Shading_WaitingPeriod</strong> - Waiting time in seconds before additional sensor values
to <em>ASC_Shading_StateChange_Sunny</em> or <em>ASC_Shading_StateChange_Cloudy</em> to <em>ASC_Shading_StateChange_Sunny</em> or <em>ASC_Shading_StateChange_Cloudy</em>
@ -6745,15 +6838,12 @@ sub getblockAscDrivesAfterManual {
</br><strong>Im ASC Device</strong> das Reading "controlShading" mit dem Wert on, sowie ein Astro/Twilight Device im Attribut "ASC_twilightDevice" und das Attribut "ASC_tempSensor". </br><strong>Im ASC Device</strong> das Reading "controlShading" mit dem Wert on, sowie ein Astro/Twilight Device im Attribut "ASC_twilightDevice" und das Attribut "ASC_tempSensor".
</br><strong>In den Rollladendevices</strong> ben&ouml;tigt ihr ein Helligkeitssensor als Attribut "ASC_BrightnessSensor", sofern noch nicht vorhanden. Findet der Sensor nur f&uuml;r die Beschattung Verwendung ist der Wert DEVICENAME[:READING] ausreichend. </br><strong>In den Rollladendevices</strong> ben&ouml;tigt ihr ein Helligkeitssensor als Attribut "ASC_BrightnessSensor", sofern noch nicht vorhanden. Findet der Sensor nur f&uuml;r die Beschattung Verwendung ist der Wert DEVICENAME[:READING] ausreichend.
</br>Alle weiteren Attribute sind optional und wenn nicht gesetzt mit Default-Werten belegt. Ihr solltet sie dennoch einmal anschauen und entsprechend Euren Gegebenheiten setzen. Die Werte f&uumlr; die Fensterposition und den Vor- Nachlaufwinkel sowie die Grenzwerte f&uuml;r die StateChange_Cloudy und StateChange_Sunny solltet ihr besondere Beachtung dabei schenken. </br>Alle weiteren Attribute sind optional und wenn nicht gesetzt mit Default-Werten belegt. Ihr solltet sie dennoch einmal anschauen und entsprechend Euren Gegebenheiten setzen. Die Werte f&uumlr; die Fensterposition und den Vor- Nachlaufwinkel sowie die Grenzwerte f&uuml;r die StateChange_Cloudy und StateChange_Sunny solltet ihr besondere Beachtung dabei schenken.
<li><strong>ASC_Shading_Angle_Left</strong> - Vorlaufwinkel im Bezug zum Fenster, ab wann abgeschattet wird. Beispiel: Fenster 180° - 85° ==> ab Sonnenpos. 95° wird abgeschattet (default: 75)</li> <li><strong>ASC_Shading_InOutAzimuth</strong> - Azimut Wert ab dem bei &Uuml;berschreiten Beschattet und bei Unterschreiten Endschattet werden soll. (default: 95:265)</li>
<li><strong>ASC_Shading_Angle_Right</strong> - Nachlaufwinkel im Bezug zum Fenster, bis wann abgeschattet wird. Beispiel: Fenster 180° + 85° ==> bis Sonnenpos. 265° wird abgeschattet (default: 75)</li>
<li><strong>ASC_Shading_Direction</strong> - Position in Grad, auf der das Fenster liegt - genau Osten w&auml;re 90, S&uuml;den 180 und Westen 270 (default: 180)</li>
<li><strong>ASC_Shading_MinMax_Elevation</strong> - ab welcher min H&ouml;he des Sonnenstandes soll beschattet und ab welcher max H&ouml;he wieder beendet werden, immer in Abh&auml;ngigkeit der anderen einbezogenen Sensorwerte (default: 25.0:100.0)</li> <li><strong>ASC_Shading_MinMax_Elevation</strong> - ab welcher min H&ouml;he des Sonnenstandes soll beschattet und ab welcher max H&ouml;he wieder beendet werden, immer in Abh&auml;ngigkeit der anderen einbezogenen Sensorwerte (default: 25.0:100.0)</li>
<li><strong>ASC_Shading_Min_OutsideTemperature</strong> - ab welcher Temperatur soll Beschattet werden, immer in Abh&auml;ngigkeit der anderen einbezogenen Sensorwerte (default: 18)</li> <li><strong>ASC_Shading_Min_OutsideTemperature</strong> - ab welcher Temperatur soll Beschattet werden, immer in Abh&auml;ngigkeit der anderen einbezogenen Sensorwerte (default: 18)</li>
<li><strong>ASC_Shading_Mode - absent,always,off,home</strong> / wann soll die Beschattung nur stattfinden. (default: off)</li> <li><strong>ASC_Shading_Mode - absent,always,off,home</strong> / wann soll die Beschattung nur stattfinden. (default: off)</li>
<li><strong>ASC_Shading_Pos</strong> - Position des Rollladens f&uuml;r die Beschattung (Default: ist abh&auml;ngig vom Attribut<em>ASC</em> 80/20) !!!Verwendung von Perlcode ist möglich, dieser muss in {} eingeschlossen sein. Rückgabewert muss eine positive Zahl/Dezimalzahl sein!!!</li> <li><strong>ASC_Shading_Pos</strong> - Position des Rollladens f&uuml;r die Beschattung (Default: ist abh&auml;ngig vom Attribut<em>ASC</em> 80/20) !!!Verwendung von Perlcode ist möglich, dieser muss in {} eingeschlossen sein. Rückgabewert muss eine positive Zahl/Dezimalzahl sein!!!</li>
<li><strong>ASC_Shading_StateChange_Cloudy</strong> - Brightness Wert ab welchen die Beschattung aufgehoben werden soll, immer in Abh&auml;ngigkeit der anderen einbezogenen Sensorwerte (default: 20000)</li> <li><strong>ASC_Shading_StateChange_SunnyCloudy</strong> - Brightness Wert ab welchen die Beschattung stattfinden und aufgehoben werden soll, immer in Abh&auml;ngigkeit der anderen einbezogenen Sensorwerte (default: 35000:20000)</li>
<li><strong>ASC_Shading_StateChange_Sunny</strong> - Brightness Wert ab welchen Beschattung stattfinden soll, immer in Abh&auml;ngigkeit der anderen einbezogenen Sensorwerte (default: 35000)</li>
<li><strong>ASC_Shading_WaitingPeriod</strong> - wie viele Sekunden soll gewartet werden bevor eine weitere Auswertung der Sensordaten f&uuml;r die Beschattung stattfinden soll (default: 1200)</li> <li><strong>ASC_Shading_WaitingPeriod</strong> - wie viele Sekunden soll gewartet werden bevor eine weitere Auswertung der Sensordaten f&uuml;r die Beschattung stattfinden soll (default: 1200)</li>
</ul> </ul>
<li><strong>ASC_ShuttersPlace - window/terrace</strong> - Wenn dieses Attribut auf terrace gesetzt ist, das Residence Device in den Status "gone" geht und SelfDefense aktiv ist (ohne das das Reading selfDefense gesetzt sein muss), wird das Rollo geschlossen (default: window)</li> <li><strong>ASC_ShuttersPlace - window/terrace</strong> - Wenn dieses Attribut auf terrace gesetzt ist, das Residence Device in den Status "gone" geht und SelfDefense aktiv ist (ohne das das Reading selfDefense gesetzt sein muss), wird das Rollo geschlossen (default: window)</li>
@ -6853,7 +6943,7 @@ sub getblockAscDrivesAfterManual {
], ],
"release_status": "under develop", "release_status": "under develop",
"license": "GPL_2", "license": "GPL_2",
"version": "v0.6.102", "version": "v0.6.103",
"author": [ "author": [
"Marko Oldenburg <leongaultier@gmail.com>" "Marko Oldenburg <leongaultier@gmail.com>"
], ],