2
0
mirror of https://github.com/fhem/fhem-mirror.git synced 2025-04-07 19:04:20 +00:00

73_AutoShuttersControl: fix little Shading bugs and Window clsed with shading state

git-svn-id: https://svn.fhem.de/fhem/trunk@21640 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
LeonGaultier 2020-04-11 13:56:45 +00:00
parent bb2e47130e
commit 138156bfff

View File

@ -1117,8 +1117,11 @@ sub EventProcessingWindowRec {
$shutters->setNoDelay(1); $shutters->setNoDelay(1);
$shutters->setDriveCmd( $shutters->getShadingPos ); $shutters->setDriveCmd( $shutters->getShadingPos );
} }
elsif ($shutters->getStatus != $shutters->getOpenPos elsif (
|| $shutters->getStatus != $shutters->getLastManPos ) !$shutters->getIfInShading
&& ( $shutters->getStatus != $shutters->getOpenPos
|| $shutters->getStatus != $shutters->getLastManPos )
)
{ {
if ( $shutters->getPrivacyDownStatus == 2 ) { if ( $shutters->getPrivacyDownStatus == 2 ) {
$shutters->setLastDrive( $shutters->setLastDrive(
@ -1210,15 +1213,7 @@ sub EventProcessingWindowRec {
if ( defined($posValue) && $posValue ) { if ( defined($posValue) && $posValue ) {
$shutters->setLastDrive($setLastDrive); $shutters->setLastDrive($setLastDrive);
$shutters->setNoDelay(1); $shutters->setNoDelay(1);
$shutters->setDriveCmd( $shutters->setDriveCmd($posValue);
# (
# $shutters->getShuttersPlace eq 'terrace'
# ? $shutters->getOpenPos
$posValue
# )
);
} }
} }
} }
@ -2404,14 +2399,7 @@ sub ShadingProcessing {
if ( $shutters->getShadingStatus eq 'in' if ( $shutters->getShadingStatus eq 'in'
|| $shutters->getShadingStatus eq 'in reserved' ); || $shutters->getShadingStatus eq 'in reserved' );
if ( if ( $shutters->getShadingStatus eq 'out reserved' ) {
(
$shutters->getShadingStatus eq 'out reserved'
and
( int( gettimeofday() ) - $shutters->getShadingStatusTimestamp )
) > $shutters->getShadingWaitingPeriod
)
{
$shutters->setShadingStatus('out'); $shutters->setShadingStatus('out');
$shutters->setShadingLastStatus('in') $shutters->setShadingLastStatus('in')
if ( $shutters->getShadingLastStatus eq 'out' ); if ( $shutters->getShadingLastStatus eq 'out' );
@ -2443,11 +2431,7 @@ sub ShadingProcessing {
if ( $shutters->getShadingStatus eq 'out' if ( $shutters->getShadingStatus eq 'out'
|| $shutters->getShadingStatus eq 'out reserved' ); || $shutters->getShadingStatus eq 'out reserved' );
if ( $shutters->getShadingStatus eq 'in reserved' if ( $shutters->getShadingStatus eq 'in reserved' ) {
and
( int( gettimeofday() ) - $shutters->getShadingStatusTimestamp ) >
( $shutters->getShadingWaitingPeriod / 2 ) )
{
$shutters->setShadingStatus('in'); $shutters->setShadingStatus('in');
$shutters->setShadingLastStatus('out') $shutters->setShadingLastStatus('out')
if ( $shutters->getShadingLastStatus eq 'in' ); if ( $shutters->getShadingLastStatus eq 'in' );
@ -2481,6 +2465,8 @@ sub ShadingProcessing {
|| ( $shutters->getShadingStatus eq 'in' || ( $shutters->getShadingStatus eq 'in'
&& $shutters->getShadingLastStatus eq 'out' ) && $shutters->getShadingLastStatus eq 'out' )
) )
&& $shutters->getRoommatesStatus ne 'asleep'
&& $shutters->getRoommatesStatus ne 'gotosleep'
); );
return; return;
@ -2502,32 +2488,25 @@ sub ShadingProcessingDriveCommand {
if ( $shutters->getShadingMode eq 'always' if ( $shutters->getShadingMode eq 'always'
|| $shutters->getShadingMode eq $homemode ) || $shutters->getShadingMode eq $homemode )
{ {
$shutters->setShadingStatus( $shutters->getShadingStatus ) $shutters->setShadingStatus( $shutters->getShadingStatus );
if (
( int( gettimeofday() ) - $shutters->getShadingStatusTimestamp ) >
( $shutters->getShadingWaitingPeriod / 2 ) );
if ( $shutters->getShadingStatus eq 'in' if (
&& $getShadingPos != $getStatus ) $shutters->getShadingStatus eq 'in'
&& $getShadingPos != $getStatus
&& ( CheckIfShuttersWindowRecOpen($shuttersDev) != 2
|| $shutters->getShuttersPlace ne 'terrace' )
)
{ {
if ( $shutters->setLastDrive('shading in');
!( ShuttersCommandSet( $hash, $shuttersDev, $getShadingPos );
CheckIfShuttersWindowRecOpen($shuttersDev) == 2
&& $shutters->getShuttersPlace eq 'terrace'
)
)
{
$shutters->setLastDrive('shading in');
ShuttersCommandSet( $hash, $shuttersDev, $getShadingPos );
ASC_Debug( 'ShadingProcessingDriveCommand: ' ASC_Debug( 'ShadingProcessingDriveCommand: '
. $shutters->getShuttersDev . $shutters->getShuttersDev
. ' - Der aktuelle Beschattungsstatus ist: ' . ' - Der aktuelle Beschattungsstatus ist: '
. $shutters->getShadingStatus . $shutters->getShadingStatus
. ' und somit wird nun in die Position: ' . ' und somit wird nun in die Position: '
. $getShadingPos . $getShadingPos
. ' zum Beschatten gefahren' ); . ' zum Beschatten gefahren' );
}
} }
elsif ($shutters->getShadingStatus eq 'out' elsif ($shutters->getShadingStatus eq 'out'
&& $getShadingPos == $getStatus ) && $getShadingPos == $getStatus )
@ -2796,14 +2775,12 @@ sub ShuttersCommandSet {
if ( if (
( (
$posValue == $shutters->getShadingPos $posValue == $shutters->getShadingPos
&& ( && CheckIfShuttersWindowRecOpen($shuttersDev) == 2
CheckIfShuttersWindowRecOpen($shuttersDev) == 2 && $shutters->getShuttersPlace eq 'terrace'
&& $shutters->getShuttersPlace eq 'terrace' && ( $shutters->getLockOut eq 'soft'
&& ( $shutters->getLockOut eq 'soft' || $shutters->getLockOut eq 'hard' )
|| $shutters->getLockOut eq 'hard' ) && !$shutters->getQueryShuttersPos($posValue)
&& !$shutters->getQueryShuttersPos($posValue)
)
) )
|| ( || (
$posValue != $shutters->getShadingPos $posValue != $shutters->getShadingPos