add more Positions for Slat Support
This commit is contained in:
parent
f50f20f197
commit
1f99f0fbd7
@ -202,7 +202,7 @@ my %userAttrList = (
|
|||||||
=> '-',
|
=> '-',
|
||||||
'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 ],
|
||||||
'ASC_Sleep_Pos:0,10,20,30,40,50,60,70,80,90,100' => '-',
|
'ASC_Sleep_Pos:0,10,20,30,40,50,60,70,80,90,100' => [ '', 75, 25 ],
|
||||||
'ASC_Pos_Reading' => [ '', 'position', 'pct' ],
|
'ASC_Pos_Reading' => [ '', 'position', 'pct' ],
|
||||||
'ASC_Time_Up_Early' => '-',
|
'ASC_Time_Up_Early' => '-',
|
||||||
'ASC_Time_Up_Late' => '-',
|
'ASC_Time_Up_Late' => '-',
|
||||||
@ -252,7 +252,8 @@ my %userAttrList = (
|
|||||||
'ASC_WindProtection:on,off' => '-',
|
'ASC_WindProtection:on,off' => '-',
|
||||||
'ASC_RainProtection:on,off' => '-',
|
'ASC_RainProtection:on,off' => '-',
|
||||||
'ASC_ExternalTrigger' => '-',
|
'ASC_ExternalTrigger' => '-',
|
||||||
'ASC_Adv:on,off' => '-'
|
'ASC_Adv:on,off' => '-',
|
||||||
|
'ASC_SlatPosCmd_SlatDevice' => '-',
|
||||||
);
|
);
|
||||||
|
|
||||||
my %posSetCmds = (
|
my %posSetCmds = (
|
||||||
@ -779,9 +780,10 @@ sub ShuttersDeviceScan {
|
|||||||
$shutters->setShadingStatus(
|
$shutters->setShadingStatus(
|
||||||
( $shutters->getStatus != $shutters->getShadingPos ? 'out' : 'in' )
|
( $shutters->getStatus != $shutters->getShadingPos ? 'out' : 'in' )
|
||||||
);
|
);
|
||||||
$shutters->setShadingLastStatus(
|
|
||||||
( $shutters->getStatus != $shutters->getShadingPos ? 'in' : 'out' )
|
# $shutters->setShadingLastStatus(
|
||||||
);
|
# ( $shutters->getStatus != $shutters->getShadingPos ? 'in' : 'out' )
|
||||||
|
# );
|
||||||
$shutters->setPushBrightnessInArray( $shutters->getBrightness );
|
$shutters->setPushBrightnessInArray( $shutters->getBrightness );
|
||||||
readingsSingleUpdate( $defs{$_}, 'ASC_Enable', 'on', 0 )
|
readingsSingleUpdate( $defs{$_}, 'ASC_Enable', 'on', 0 )
|
||||||
if ( ReadingsVal( $_, 'ASC_Enable', 'none' ) eq 'none' );
|
if ( ReadingsVal( $_, 'ASC_Enable', 'none' ) eq 'none' );
|
||||||
@ -2344,6 +2346,9 @@ sub ShadingProcessing {
|
|||||||
my $getStatus = $shutters->getStatus;
|
my $getStatus = $shutters->getStatus;
|
||||||
my $oldShadingStatus = $shutters->getShadingStatus;
|
my $oldShadingStatus = $shutters->getShadingStatus;
|
||||||
|
|
||||||
|
my $getModeUp = $shutters->getModeUp;
|
||||||
|
my $homemode = $shutters->getHomemode;
|
||||||
|
|
||||||
ASC_Debug( 'ShadingProcessing: '
|
ASC_Debug( 'ShadingProcessing: '
|
||||||
. $shutters->getShuttersDev
|
. $shutters->getShuttersDev
|
||||||
. ' - 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'
|
||||||
@ -2359,7 +2364,7 @@ sub ShadingProcessing {
|
|||||||
&& $shutters->getShadingStatus ne 'out'
|
&& $shutters->getShadingStatus ne 'out'
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
$shutters->setShadingLastStatus('in');
|
# $shutters->setShadingLastStatus('in');
|
||||||
$shutters->setShadingStatus('out');
|
$shutters->setShadingStatus('out');
|
||||||
|
|
||||||
ASC_Debug( 'ShadingProcessing: '
|
ASC_Debug( 'ShadingProcessing: '
|
||||||
@ -2391,8 +2396,9 @@ sub ShadingProcessing {
|
|||||||
)
|
)
|
||||||
{
|
{
|
||||||
$shutters->setShadingStatus('out');
|
$shutters->setShadingStatus('out');
|
||||||
$shutters->setShadingLastStatus('in')
|
|
||||||
if ( $shutters->getShadingLastStatus eq 'out' );
|
# $shutters->setShadingLastStatus('in')
|
||||||
|
# if ( $shutters->getShadingLastStatus eq 'out' );
|
||||||
}
|
}
|
||||||
|
|
||||||
Log3( $name, 4,
|
Log3( $name, 4,
|
||||||
@ -2427,8 +2433,9 @@ sub ShadingProcessing {
|
|||||||
( $shutters->getShadingWaitingPeriod / 2 ) )
|
( $shutters->getShadingWaitingPeriod / 2 ) )
|
||||||
{
|
{
|
||||||
$shutters->setShadingStatus('in');
|
$shutters->setShadingStatus('in');
|
||||||
$shutters->setShadingLastStatus('out')
|
|
||||||
if ( $shutters->getShadingLastStatus eq 'in' );
|
# $shutters->setShadingLastStatus('out')
|
||||||
|
# if ( $shutters->getShadingLastStatus eq 'in' );
|
||||||
}
|
}
|
||||||
|
|
||||||
Log3( $name, 4,
|
Log3( $name, 4,
|
||||||
@ -2459,8 +2466,10 @@ sub ShadingProcessing {
|
|||||||
|| ( $shutters->getShadingStatus eq 'in'
|
|| ( $shutters->getShadingStatus eq 'in'
|
||||||
&& $shutters->getShadingLastStatus eq 'out' )
|
&& $shutters->getShadingLastStatus eq 'out' )
|
||||||
)
|
)
|
||||||
&& $shutters->getRoommatesStatus ne 'asleep'
|
&& ( $shutters->getShadingMode eq 'always'
|
||||||
&& $shutters->getRoommatesStatus ne 'gotosleep'
|
|| $shutters->getShadingMode eq $homemode )
|
||||||
|
&& ( $shutters->getModeUp eq 'always'
|
||||||
|
|| $shutters->getModeUp eq $homemode )
|
||||||
&& ( int( gettimeofday() ) - $shutters->getShadingStatusTimestamp ) < 2
|
&& ( int( gettimeofday() ) - $shutters->getShadingStatusTimestamp ) < 2
|
||||||
);
|
);
|
||||||
|
|
||||||
@ -2477,79 +2486,72 @@ sub ShadingProcessingDriveCommand {
|
|||||||
my $getShadingPos = $shutters->getShadingPos;
|
my $getShadingPos = $shutters->getShadingPos;
|
||||||
my $getStatus = $shutters->getStatus;
|
my $getStatus = $shutters->getStatus;
|
||||||
|
|
||||||
my $homemode = $shutters->getRoommatesStatus;
|
$shutters->setShadingStatus( $shutters->getShadingStatus );
|
||||||
$homemode = $ascDev->getResidentsStatus if ( $homemode eq 'none' );
|
|
||||||
|
|
||||||
if ( $shutters->getShadingMode eq 'always'
|
if (
|
||||||
|| $shutters->getShadingMode eq $homemode )
|
$shutters->getShadingStatus eq 'in'
|
||||||
|
&& $getShadingPos != $getStatus
|
||||||
|
&& ( CheckIfShuttersWindowRecOpen($shuttersDev) != 2
|
||||||
|
|| $shutters->getShuttersPlace ne 'terrace' )
|
||||||
|
)
|
||||||
{
|
{
|
||||||
$shutters->setShadingStatus( $shutters->getShadingStatus );
|
$shutters->setLastDrive('shading in');
|
||||||
|
ShuttersCommandSet( $hash, $shuttersDev, $getShadingPos );
|
||||||
|
|
||||||
if (
|
ASC_Debug( 'ShadingProcessingDriveCommand: '
|
||||||
$shutters->getShadingStatus eq 'in'
|
|
||||||
&& $getShadingPos != $getStatus
|
|
||||||
&& ( CheckIfShuttersWindowRecOpen($shuttersDev) != 2
|
|
||||||
|| $shutters->getShuttersPlace ne 'terrace' )
|
|
||||||
)
|
|
||||||
{
|
|
||||||
$shutters->setLastDrive('shading in');
|
|
||||||
ShuttersCommandSet( $hash, $shuttersDev, $getShadingPos );
|
|
||||||
|
|
||||||
ASC_Debug( 'ShadingProcessingDriveCommand: '
|
|
||||||
. $shutters->getShuttersDev
|
|
||||||
. ' - Der aktuelle Beschattungsstatus ist: '
|
|
||||||
. $shutters->getShadingStatus
|
|
||||||
. ' und somit wird nun in die Position: '
|
|
||||||
. $getShadingPos
|
|
||||||
. ' zum Beschatten gefahren' );
|
|
||||||
}
|
|
||||||
elsif ($shutters->getShadingStatus eq 'out'
|
|
||||||
&& $getShadingPos == $getStatus )
|
|
||||||
{
|
|
||||||
$shutters->setLastDrive('shading out');
|
|
||||||
|
|
||||||
ShuttersCommandSet(
|
|
||||||
$hash,
|
|
||||||
$shuttersDev,
|
|
||||||
(
|
|
||||||
$getShadingPos == $shutters->getLastPos
|
|
||||||
? $shutters->getOpenPos
|
|
||||||
: (
|
|
||||||
$shutters->getQueryShuttersPos( $shutters->getLastPos )
|
|
||||||
? (
|
|
||||||
$shutters->getLastPos == $shutters->getSleepPos
|
|
||||||
? $shutters->getOpenPos
|
|
||||||
: $shutters->getLastPos
|
|
||||||
)
|
|
||||||
: $shutters->getOpenPos
|
|
||||||
)
|
|
||||||
)
|
|
||||||
);
|
|
||||||
|
|
||||||
ASC_Debug( 'ShadingProcessingDriveCommand: '
|
|
||||||
. $shutters->getShuttersDev
|
|
||||||
. ' - Der aktuelle Beschattungsstatus ist: '
|
|
||||||
. $shutters->getShadingStatus
|
|
||||||
. ' und somit wird nun in die Position: '
|
|
||||||
. $getShadingPos
|
|
||||||
. ' zum beenden der Beschattung gefahren' );
|
|
||||||
}
|
|
||||||
|
|
||||||
Log3( $name, 4,
|
|
||||||
"AutoShuttersControl ($name) - Shading Processing - In der Routine zum fahren der Rollläden, Shading Wert: "
|
|
||||||
. $shutters->getShadingStatus );
|
|
||||||
|
|
||||||
ASC_Debug(
|
|
||||||
'ShadingProcessingDriveCommand: '
|
|
||||||
. $shutters->getShuttersDev
|
. $shutters->getShuttersDev
|
||||||
. ' - Der aktuelle Beschattungsstatus ist: '
|
. ' - Der aktuelle Beschattungsstatus ist: '
|
||||||
. $shutters->getShadingStatus
|
. $shutters->getShadingStatus
|
||||||
. ', Beschattungsstatus Zeitstempel: '
|
. ' und somit wird nun in die Position: '
|
||||||
. strftime(
|
. $getShadingPos
|
||||||
"%Y.%m.%e %T", localtime( $shutters->getShadingStatusTimestamp )
|
. ' zum Beschatten gefahren' );
|
||||||
)
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
|
elsif ($shutters->getShadingStatus eq 'out'
|
||||||
|
&& $getShadingPos == $getStatus )
|
||||||
|
{
|
||||||
|
$shutters->setLastDrive('shading out');
|
||||||
|
|
||||||
|
ShuttersCommandSet(
|
||||||
|
$hash,
|
||||||
|
$shuttersDev,
|
||||||
|
(
|
||||||
|
$getShadingPos == $shutters->getLastPos
|
||||||
|
? $shutters->getOpenPos
|
||||||
|
: (
|
||||||
|
$shutters->getQueryShuttersPos( $shutters->getLastPos )
|
||||||
|
? (
|
||||||
|
$shutters->getLastPos == $shutters->getSleepPos
|
||||||
|
? $shutters->getOpenPos
|
||||||
|
: $shutters->getLastPos
|
||||||
|
)
|
||||||
|
: $shutters->getOpenPos
|
||||||
|
)
|
||||||
|
)
|
||||||
|
);
|
||||||
|
|
||||||
|
ASC_Debug( 'ShadingProcessingDriveCommand: '
|
||||||
|
. $shutters->getShuttersDev
|
||||||
|
. ' - Der aktuelle Beschattungsstatus ist: '
|
||||||
|
. $shutters->getShadingStatus
|
||||||
|
. ' und somit wird nun in die Position: '
|
||||||
|
. $getShadingPos
|
||||||
|
. ' zum beenden der Beschattung gefahren' );
|
||||||
|
}
|
||||||
|
|
||||||
|
Log3( $name, 4,
|
||||||
|
"AutoShuttersControl ($name) - Shading Processing - In der Routine zum fahren der Rollläden, Shading Wert: "
|
||||||
|
. $shutters->getShadingStatus );
|
||||||
|
|
||||||
|
ASC_Debug(
|
||||||
|
'ShadingProcessingDriveCommand: '
|
||||||
|
. $shutters->getShuttersDev
|
||||||
|
. ' - Der aktuelle Beschattungsstatus ist: '
|
||||||
|
. $shutters->getShadingStatus
|
||||||
|
. ', Beschattungsstatus Zeitstempel: '
|
||||||
|
. strftime(
|
||||||
|
"%Y.%m.%e %T", localtime( $shutters->getShadingStatusTimestamp )
|
||||||
|
)
|
||||||
|
);
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -4338,6 +4340,25 @@ sub IsWe {
|
|||||||
return main::IsWe( shift, shift );
|
return main::IsWe( shift, shift );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
sub _DetermineSlatCmd {
|
||||||
|
my $value = shift;
|
||||||
|
my $posValue = shift;
|
||||||
|
|
||||||
|
return $posValue == $shutters->getShadingPos
|
||||||
|
&& $shutters->getShadingPositionAssignment ne 'none' ? $shutters->getShadingPositionAssignment
|
||||||
|
: $posValue == $shutters->getVentilatePos
|
||||||
|
&& $shutters->getVentilatePositionAssignment ne 'none' ? $shutters->getVentilatePositionAssignment
|
||||||
|
: $posValue == $shutters->getOpenPos
|
||||||
|
&& $shutters->getOpenPositionAssignment ne 'none' ? $shutters->getOpenPositionAssignment
|
||||||
|
: $posValue == $shutters->getClosedPos
|
||||||
|
&& $shutters->getClosedPositionAssignment ne 'none' ? $shutters->getClosedPositionAssignment
|
||||||
|
: $posValue == $shutters->getSleepPos
|
||||||
|
&& $shutters->getSleepPositionAssignment ne 'none' ? $shutters->getSleepPositionAssignment
|
||||||
|
: $posValue == $shutters->getComfortOpenPos
|
||||||
|
&& $shutters->getComfortOpenPositionAssignment ne 'none' ? $shutters->getComfortOpenPositionAssignment
|
||||||
|
: $value;
|
||||||
|
}
|
||||||
|
|
||||||
sub _SetCmdFn {
|
sub _SetCmdFn {
|
||||||
my $h = shift;
|
my $h = shift;
|
||||||
|
|
||||||
@ -4382,12 +4403,53 @@ sub _SetCmdFn {
|
|||||||
. '. Grund der Fahrt: '
|
. '. Grund der Fahrt: '
|
||||||
. $shutters->getLastDrive );
|
. $shutters->getLastDrive );
|
||||||
|
|
||||||
my $driveCommand =
|
my $driveCommand = $shutters->getPosSetCmd . ' ' . $posValue;
|
||||||
$posValue == $shutters->getShadingPos
|
my $slatPos = undef;
|
||||||
&& $shutters->getShadingPositionAssignment ne 'none' ? $shutters->getShadingPositionAssignment
|
|
||||||
: $posValue == $shutters->getVentilatePos
|
if ( $shutters->getShadingPositionAssignment ne 'none'
|
||||||
&& $shutters->getVentilatePositionAssignment ne 'none' ? $shutters->getVentilatePositionAssignment
|
&& $shutters->getShadingPositionAssignment =~ m{\A[a-zA-Z]+\z}xms )
|
||||||
: $shutters->getPosSetCmd . ' ' . $posValue;
|
{
|
||||||
|
$driveCommand = _DetermineSlatCmd( $driveCommand, $posValue );
|
||||||
|
|
||||||
|
# $driveCommand =
|
||||||
|
# $posValue == $shutters->getShadingPos
|
||||||
|
# && $shutters->getShadingPositionAssignment ne 'none' ? $shutters->getShadingPositionAssignment
|
||||||
|
# : $posValue == $shutters->getVentilatePos
|
||||||
|
# && $shutters->getVentilatePositionAssignment ne 'none' ? $shutters->getVentilatePositionAssignment
|
||||||
|
# : $posValue == $shutters->getOpenPos
|
||||||
|
# && $shutters->getOpenPositionAssignment ne 'none' ? $shutters->getOpenPositionAssignment
|
||||||
|
# : $posValue == $shutters->getClosedPos
|
||||||
|
# && $shutters->getClosedPositionAssignment ne 'none' ? $shutters->getClosedPositionAssignment
|
||||||
|
# : $posValue == $shutters->getSleepPos
|
||||||
|
# && $shutters->getSleepPositionAssignment ne 'none' ? $shutters->getSleepPositionAssignment
|
||||||
|
# : $posValue == $shutters->getComfortOpenPos
|
||||||
|
# && $shutters->getComfortOpenPositionAssignment ne 'none' ? $shutters->getComfortOpenPositionAssignment
|
||||||
|
# : $posValue == $shutters->getAntiFreezePos
|
||||||
|
# && $shutters->getAntiFreezePosAssignment ne 'none' ? $shutters->getAntiFreezePosAssignment
|
||||||
|
# : $driveCommand;
|
||||||
|
}
|
||||||
|
elsif ($shutters->getShadingPositionAssignment ne 'none'
|
||||||
|
&& $shutters->getShadingPositionAssignment =~ m{\A\d{1,3}\z}xms )
|
||||||
|
{
|
||||||
|
$slatPos = _DetermineSlatCmd( $slatPos, $posValue );
|
||||||
|
|
||||||
|
# $slatPos =
|
||||||
|
# $posValue == $shutters->getShadingPos
|
||||||
|
# && $shutters->getShadingPositionAssignment ne 'none' ? $shutters->getShadingPositionAssignment
|
||||||
|
# : $posValue == $shutters->getVentilatePos
|
||||||
|
# && $shutters->getVentilatePositionAssignment ne 'none' ? $shutters->getVentilatePositionAssignment
|
||||||
|
# : $posValue == $shutters->getOpenPos
|
||||||
|
# && $shutters->getOpenPositionAssignment ne 'none' ? $shutters->getOpenPositionAssignment
|
||||||
|
# : $posValue == $shutters->getClosedPos
|
||||||
|
# && $shutters->getClosedPositionAssignment ne 'none' ? $shutters->getClosedPositionAssignment
|
||||||
|
# : $posValue == $shutters->getSleepPos
|
||||||
|
# && $shutters->getSleepPositionAssignment ne 'none' ? $shutters->getSleepPositionAssignment
|
||||||
|
# : $posValue == $shutters->getComfortOpenPos
|
||||||
|
# && $shutters->getComfortOpenPositionAssignment ne 'none' ? $shutters->getComfortOpenPositionAssignment
|
||||||
|
# : $posValue == $shutters->getAntiFreezePos
|
||||||
|
# && $shutters->getAntiFreezePosAssignment ne 'none' ? $shutters->getAntiFreezePosAssignment
|
||||||
|
# : $slatPos;
|
||||||
|
}
|
||||||
|
|
||||||
CommandSet( undef,
|
CommandSet( undef,
|
||||||
$shuttersDev
|
$shuttersDev
|
||||||
@ -4396,6 +4458,21 @@ sub _SetCmdFn {
|
|||||||
. $posValue . ' '
|
. $posValue . ' '
|
||||||
. $driveCommand );
|
. $driveCommand );
|
||||||
|
|
||||||
|
CommandSet(
|
||||||
|
undef,
|
||||||
|
(
|
||||||
|
$shutters->getSlatDevice ne 'none' ? $shutters->getSlatDevice
|
||||||
|
: $shuttersDev
|
||||||
|
)
|
||||||
|
. ' '
|
||||||
|
. (
|
||||||
|
$shutters->getSlatPosCmd ne 'none' ? $shutters->getSlatPosCmd
|
||||||
|
: $shutters->getPosCmd
|
||||||
|
)
|
||||||
|
. ' '
|
||||||
|
. $slatPos
|
||||||
|
) if ( defined($slatPos) );
|
||||||
|
|
||||||
$shutters->setSelfDefenseAbsent( 0, 0 )
|
$shutters->setSelfDefenseAbsent( 0, 0 )
|
||||||
if (!$shutters->getSelfDefenseAbsent
|
if (!$shutters->getSelfDefenseAbsent
|
||||||
&& $shutters->getSelfDefenseAbsentTimerrun );
|
&& $shutters->getSelfDefenseAbsentTimerrun );
|
||||||
@ -4979,6 +5056,15 @@ sub setAdvDelay {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
sub getHomemode {
|
||||||
|
my $self = shift;
|
||||||
|
|
||||||
|
my $homemode = $shutters->getRoommatesStatus;
|
||||||
|
$homemode = $ascDev->getResidentsStatus
|
||||||
|
if ( $homemode eq 'none' );
|
||||||
|
return $homemode;
|
||||||
|
}
|
||||||
|
|
||||||
sub getAdvDelay {
|
sub getAdvDelay {
|
||||||
my $self = shift;
|
my $self = shift;
|
||||||
|
|
||||||
@ -5297,6 +5383,10 @@ sub setShadingStatus {
|
|||||||
&& exists( $self->{ $self->{shuttersDev} }{ShadingStatus}{VAL} )
|
&& exists( $self->{ $self->{shuttersDev} }{ShadingStatus}{VAL} )
|
||||||
&& $self->{ $self->{shuttersDev} }{ShadingStatus}{VAL} eq $value );
|
&& $self->{ $self->{shuttersDev} }{ShadingStatus}{VAL} eq $value );
|
||||||
|
|
||||||
|
$shutters->setShadingLastStatus( ( $value eq 'in' ? 'out' : 'in' ) )
|
||||||
|
if ( $value eq 'in'
|
||||||
|
|| $value eq 'out' );
|
||||||
|
|
||||||
$self->{ $self->{shuttersDev} }{ShadingStatus}{VAL} = $value
|
$self->{ $self->{shuttersDev} }{ShadingStatus}{VAL} = $value
|
||||||
if ( defined($value) );
|
if ( defined($value) );
|
||||||
$self->{ $self->{shuttersDev} }{ShadingStatus}{TIME} = int( gettimeofday() )
|
$self->{ $self->{shuttersDev} }{ShadingStatus}{TIME} = int( gettimeofday() )
|
||||||
@ -5593,23 +5683,16 @@ sub _getPositionAssignment {
|
|||||||
sub getAntiFreezePos {
|
sub getAntiFreezePos {
|
||||||
my $self = shift;
|
my $self = shift;
|
||||||
|
|
||||||
my $val = AttrVal(
|
return $shutters->_getPosition( 'ASC_Antifreeze_Pos',
|
||||||
$self->{shuttersDev},
|
|
||||||
'ASC_Antifreeze_Pos',
|
|
||||||
$userAttrList{
|
|
||||||
'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'
|
||||||
}[ AttrVal( $self->{shuttersDev}, 'ASC', 2 ) ]
|
|
||||||
);
|
);
|
||||||
|
}
|
||||||
|
|
||||||
if ( defined( FHEM::AutoShuttersControl::_perlCodeCheck($val) ) ) {
|
sub getAntiFreezePosAssignment {
|
||||||
$val = FHEM::AutoShuttersControl::_perlCodeCheck($val);
|
my $self = shift;
|
||||||
}
|
|
||||||
|
|
||||||
return (
|
return $shutters->_getPositionAssignment( 'ASC_Antifreeze_Pos',
|
||||||
$val =~ m{^\d+(\.\d+)?$}xms ? $val : $userAttrList{
|
'getAntiFreezePos' );
|
||||||
'ASC_Antifreeze_Pos:5,10,15,20,25,30,35,40,45,50,55,60,65,70,75,80,85,90,95,100'
|
|
||||||
}[ AttrVal( $self->{shuttersDev}, 'ASC', 2 ) ]
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
sub getShuttersPlace {
|
sub getShuttersPlace {
|
||||||
@ -5618,6 +5701,57 @@ sub getShuttersPlace {
|
|||||||
return AttrVal( $self->{shuttersDev}, 'ASC_ShuttersPlace', 'window' );
|
return AttrVal( $self->{shuttersDev}, 'ASC_ShuttersPlace', 'window' );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
sub getSlatPosCmd {
|
||||||
|
my $self = shift;
|
||||||
|
|
||||||
|
return $self->{ $self->{shuttersDev} }->{ASC_SlatPosCmd_SlatDevice}
|
||||||
|
->{uptime}
|
||||||
|
if (
|
||||||
|
exists(
|
||||||
|
$self->{ $self->{shuttersDev} }->{ASC_SlatPosCmd_SlatDevice}
|
||||||
|
->{LASTGETTIME}
|
||||||
|
)
|
||||||
|
&& ( gettimeofday() -
|
||||||
|
$self->{ $self->{shuttersDev} }->{ASC_SlatPosCmd_SlatDevice}
|
||||||
|
->{LASTGETTIME} ) < 2
|
||||||
|
);
|
||||||
|
$self->{ $self->{shuttersDev} }->{ASC_SlatPosCmd_SlatDevice}->{LASTGETTIME}
|
||||||
|
= int( gettimeofday() );
|
||||||
|
my ( $slatPosCmd, $slatDevice ) =
|
||||||
|
FHEM::AutoShuttersControl::GetAttrValues( $self->{shuttersDev},
|
||||||
|
'ASC_SlatPosCmd_SlatDevice', 'none:none' );
|
||||||
|
|
||||||
|
## Erwartetes Ergebnis
|
||||||
|
# upTime:upBrightnessVal
|
||||||
|
|
||||||
|
$self->{ $self->{shuttersDev} }->{ASC_SlatPosCmd_SlatDevice}->{poscmd} =
|
||||||
|
$slatPosCmd;
|
||||||
|
$self->{ $self->{shuttersDev} }->{ASC_SlatPosCmd_SlatDevice}->{device} =
|
||||||
|
$slatDevice;
|
||||||
|
|
||||||
|
return $self->{ $self->{shuttersDev} }->{ASC_SlatPosCmd_SlatDevice}
|
||||||
|
->{poscmd};
|
||||||
|
}
|
||||||
|
|
||||||
|
sub getSlatDevice {
|
||||||
|
my $self = shift;
|
||||||
|
|
||||||
|
return $self->{ $self->{shuttersDev} }->{ASC_SlatPosCmd_SlatDevice}
|
||||||
|
->{device}
|
||||||
|
if (
|
||||||
|
exists(
|
||||||
|
$self->{ $self->{shuttersDev} }->{ASC_SlatPosCmd_SlatDevice}
|
||||||
|
->{LASTGETTIME}
|
||||||
|
)
|
||||||
|
&& ( gettimeofday() -
|
||||||
|
$self->{ $self->{shuttersDev} }->{ASC_SlatPosCmd_SlatDevice}
|
||||||
|
->{LASTGETTIME} ) < 2
|
||||||
|
);
|
||||||
|
$shutters->getSlatPosCmd;
|
||||||
|
|
||||||
|
return ( $self->{ $self->{shuttersDev} }->{ASC_SlatPosCmd_SlatDevice} );
|
||||||
|
}
|
||||||
|
|
||||||
sub getPrivacyUpTime {
|
sub getPrivacyUpTime {
|
||||||
my $self = shift;
|
my $self = shift;
|
||||||
|
|
||||||
@ -6414,9 +6548,14 @@ sub getPosCmd {
|
|||||||
sub getOpenPos {
|
sub getOpenPos {
|
||||||
my $self = shift;
|
my $self = shift;
|
||||||
|
|
||||||
return AttrVal( $self->{shuttersDev}, 'ASC_Open_Pos',
|
return $shutters->_getPosition( 'ASC_Open_Pos',
|
||||||
$userAttrList{'ASC_Open_Pos:0,10,20,30,40,50,60,70,80,90,100'}
|
'ASC_Open_Pos:0,10,20,30,40,50,60,70,80,90,100' );
|
||||||
[ AttrVal( $self->{shuttersDev}, 'ASC', 2 ) ] );
|
}
|
||||||
|
|
||||||
|
sub getOpenPositionAssignment {
|
||||||
|
my $self = shift;
|
||||||
|
|
||||||
|
return $shutters->_getPositionAssignment( 'ASC_Open_Pos', 'getOpenPos' );
|
||||||
}
|
}
|
||||||
|
|
||||||
sub getVentilatePos {
|
sub getVentilatePos {
|
||||||
@ -6443,21 +6582,28 @@ sub getVentilatePosAfterDayClosed {
|
|||||||
sub getClosedPos {
|
sub getClosedPos {
|
||||||
my $self = shift;
|
my $self = shift;
|
||||||
|
|
||||||
return AttrVal( $self->{shuttersDev}, 'ASC_Closed_Pos',
|
return $shutters->_getPosition( 'ASC_Closed_Pos',
|
||||||
$userAttrList{'ASC_Closed_Pos:0,10,20,30,40,50,60,70,80,90,100'}
|
'ASC_Closed_Pos:0,10,20,30,40,50,60,70,80,90,100' );
|
||||||
[ AttrVal( $self->{shuttersDev}, 'ASC', 2 ) ] );
|
}
|
||||||
|
|
||||||
|
sub getClosedPositionAssignment {
|
||||||
|
my $self = shift;
|
||||||
|
|
||||||
|
return $shutters->_getPositionAssignment( 'ASC_Closed_Pos',
|
||||||
|
'getClosedPos' );
|
||||||
}
|
}
|
||||||
|
|
||||||
sub getSleepPos {
|
sub getSleepPos {
|
||||||
my $self = shift;
|
my $self = shift;
|
||||||
|
|
||||||
my $val = AttrVal( $self->{shuttersDev}, 'ASC_Sleep_Pos', -1 );
|
return $shutters->_getPosition( 'ASC_Sleep_Pos',
|
||||||
|
'ASC_Sleep_Pos:0,10,20,30,40,50,60,70,80,90,100' );
|
||||||
|
}
|
||||||
|
|
||||||
if ( defined( FHEM::AutoShuttersControl::_perlCodeCheck($val) ) ) {
|
sub getSleepPositionAssignment {
|
||||||
$val = FHEM::AutoShuttersControl::_perlCodeCheck($val);
|
my $self = shift;
|
||||||
}
|
|
||||||
|
|
||||||
return ( $val =~ m{^\d+(\.\d+)?$}xms ? $val : -1 );
|
return $shutters->_getPositionAssignment( 'ASC_Sleep_Pos', 'getSleepPos' );
|
||||||
}
|
}
|
||||||
|
|
||||||
sub getVentilateOpen {
|
sub getVentilateOpen {
|
||||||
@ -6468,20 +6614,16 @@ sub getVentilateOpen {
|
|||||||
|
|
||||||
sub getComfortOpenPos {
|
sub getComfortOpenPos {
|
||||||
my $self = shift;
|
my $self = shift;
|
||||||
my $val = AttrVal( $self->{shuttersDev}, 'ASC_ComfortOpen_Pos',
|
|
||||||
$userAttrList{'ASC_ComfortOpen_Pos:0,10,20,30,40,50,60,70,80,90,100'}
|
|
||||||
[ AttrVal( $self->{shuttersDev}, 'ASC', 2 ) ] );
|
|
||||||
|
|
||||||
if ( defined( FHEM::AutoShuttersControl::_perlCodeCheck($val) ) ) {
|
return $shutters->_getPosition( 'ASC_ComfortOpen_Pos',
|
||||||
$val = FHEM::AutoShuttersControl::_perlCodeCheck($val);
|
'ASC_ComfortOpen_Pos:0,10,20,30,40,50,60,70,80,90,100' );
|
||||||
}
|
}
|
||||||
|
|
||||||
return (
|
sub getComfortOpenPositionAssignment {
|
||||||
$val =~ m{^\d+(\.\d+)?$}xms
|
my $self = shift;
|
||||||
? $val
|
|
||||||
: $userAttrList{'ASC_ComfortOpen_Pos:0,10,20,30,40,50,60,70,80,90,100'}
|
return $shutters->_getPositionAssignment( 'ASC_ComfortOpen_Pos',
|
||||||
[ AttrVal( $self->{shuttersDev}, 'ASC', 2 ) ]
|
'getComfortOpenPos' );
|
||||||
);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
sub getPartyMode {
|
sub getPartyMode {
|
||||||
@ -8478,7 +8620,7 @@ sub getBlockAscDrivesAfterManual {
|
|||||||
],
|
],
|
||||||
"release_status": "testing",
|
"release_status": "testing",
|
||||||
"license": "GPL_2",
|
"license": "GPL_2",
|
||||||
"version": "v0.9.1",
|
"version": "v0.9.3",
|
||||||
"author": [
|
"author": [
|
||||||
"Marko Oldenburg <leongaultier@gmail.com>"
|
"Marko Oldenburg <leongaultier@gmail.com>"
|
||||||
],
|
],
|
||||||
|
Loading…
x
Reference in New Issue
Block a user