change attribut names and parts of code
This commit is contained in:
parent
7f78529215
commit
19ff67a6ce
@ -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 ° (perpendicular) − 85 ° set
|
Defaults to 95:265.
|
||||||
for <em>ASC_Shading_Angle_Left</em> → shading starts if sun position is 95 °.
|
|
||||||
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 °
|
|
||||||
(perpendicular) + 85 ° set from <em>ASC_Shading_Angle_Right</em> → shading until
|
|
||||||
sun position of 265 ° 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 °, South 180 °, West is 270 ° and North is 0 °.
|
|
||||||
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ötigt ihr ein Helligkeitssensor als Attribut "ASC_BrightnessSensor", sofern noch nicht vorhanden. Findet der Sensor nur für die Beschattung Verwendung ist der Wert DEVICENAME[:READING] ausreichend.
|
</br><strong>In den Rollladendevices</strong> benötigt ihr ein Helligkeitssensor als Attribut "ASC_BrightnessSensor", sofern noch nicht vorhanden. Findet der Sensor nur fü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ür; die Fensterposition und den Vor- Nachlaufwinkel sowie die Grenzwerte fü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ür; die Fensterposition und den Vor- Nachlaufwinkel sowie die Grenzwerte fü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 Ü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äre 90, Süden 180 und Westen 270 (default: 180)</li>
|
|
||||||
<li><strong>ASC_Shading_MinMax_Elevation</strong> - ab welcher min Höhe des Sonnenstandes soll beschattet und ab welcher max Höhe wieder beendet werden, immer in Abhängigkeit der anderen einbezogenen Sensorwerte (default: 25.0:100.0)</li>
|
<li><strong>ASC_Shading_MinMax_Elevation</strong> - ab welcher min Höhe des Sonnenstandes soll beschattet und ab welcher max Höhe wieder beendet werden, immer in Abhä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ängigkeit der anderen einbezogenen Sensorwerte (default: 18)</li>
|
<li><strong>ASC_Shading_Min_OutsideTemperature</strong> - ab welcher Temperatur soll Beschattet werden, immer in Abhä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ür die Beschattung (Default: ist abhä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ür die Beschattung (Default: ist abhä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ä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ä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ä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ü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ü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>"
|
||||||
],
|
],
|
||||||
|
Loading…
x
Reference in New Issue
Block a user