fix winrec open and drive to shading position then place is terrace

This commit is contained in:
Marko Oldenburg 2019-05-01 10:11:53 +02:00
parent 9ea78f22c3
commit d2b3490e14

View File

@ -44,7 +44,7 @@ use strict;
use warnings; use warnings;
use FHEM::Meta; use FHEM::Meta;
my $version = '0.6.4'; my $version = '0.6.4.3';
sub AutoShuttersControl_Initialize($) { sub AutoShuttersControl_Initialize($) {
my ($hash) = @_; my ($hash) = @_;
@ -584,6 +584,9 @@ sub ShuttersDeviceScan($) {
; # temporär muss später gelöscht werden ab Version 0.4.11beta6 ; # temporär muss später gelöscht werden ab Version 0.4.11beta6
delFromDevAttrList( $_, 'ASC_Wind_Pos' ) delFromDevAttrList( $_, 'ASC_Wind_Pos' )
; # temporär muss später gelöscht werden ab Version 0.4.11beta6 ; # temporär muss später gelöscht werden ab Version 0.4.11beta6
CommandDeleteReading(undef,$_ . ' ASC_Time_PrivacyDriveUp')
if ( ReadingsVal($_,'ASC_Time_PrivacyDriveUp','none') ne 'none' )
; # temporär muss später gelöscht werden ab Version 0.6.3
$shuttersList = $shuttersList . ',' . $_; $shuttersList = $shuttersList . ',' . $_;
$shutters->setShuttersDev($_); $shutters->setShuttersDev($_);
@ -862,24 +865,38 @@ sub EventProcessingWindowRec($@) {
or $shutters->getStatus == $shutters->getOpenPos ) or $shutters->getStatus == $shutters->getOpenPos )
) )
{ {
ASC_Debug( 'EventProcessingWindowRec: '
. $shutters->getShuttersDev
. ' Event Closed' );
if ( if (
IsDay($shuttersDev) IsDay($shuttersDev)
and $shutters->getStatus != $shutters->getOpenPos
and ( ( $homemode ne 'asleep' and $homemode ne 'gotosleep' ) and ( ( $homemode ne 'asleep' and $homemode ne 'gotosleep' )
or $homemode eq 'none' ) or $homemode eq 'none' )
and $shutters->getModeUp ne 'absent' and $shutters->getModeUp ne 'absent'
and $shutters->getModeUp ne 'off' and $shutters->getModeUp ne 'off'
) )
{ {
$shutters->setLastDrive('window closed at day'); if ( $shutters->getShadingStatus eq 'in'
$shutters->setNoOffset(1); and $shutters->getShuttersPlace eq 'terrace'
$shutters->setDriveCmd( and $shutters->getShadingPos != $shutters->getStatus
( )
$shutters->getLastPos != $shutters->getClosedPos {
? $shutters->getLastPos $shutters->setLastDrive('shading in');
: $shutters->getOpenPos $shutters->setNoOffset(1);
) $shutters->setDriveCmd($shutters->getShadingPos);
); }
elsif ( $shutters->getStatus != $shutters->getOpenPos ) {
$shutters->setLastDrive('window closed at day');
$shutters->setNoOffset(1);
$shutters->setDriveCmd(
(
$shutters->getLastPos != $shutters->getClosedPos
? $shutters->getLastPos
: $shutters->getOpenPos
)
);
}
} }
elsif ( elsif (
@ -1519,6 +1536,8 @@ sub EventProcessingBrightness($@) {
} }
} }
else { else {
EventProcessingShadingBrightness( $hash, $shuttersDev,
$events );
ASC_Debug( 'EventProcessingBrightness: ' ASC_Debug( 'EventProcessingBrightness: '
. $shutters->getShuttersDev . $shutters->getShuttersDev
. ' - Brightness Event kam nicht innerhalb der Verarbeitungszeit für Sunset oder Sunris oder aber für beide wurden die entsprechendne Verarbeitungsschwellen nicht erreicht.' . ' - Brightness Event kam nicht innerhalb der Verarbeitungszeit für Sunset oder Sunris oder aber für beide wurden die entsprechendne Verarbeitungsschwellen nicht erreicht.'
@ -1856,7 +1875,11 @@ sub ShadingProcessing($@) {
: $getStatus < $getShadingPos : $getStatus < $getShadingPos
); );
if ( not $queryShuttersShadingPos ) { if ( not $queryShuttersShadingPos
and not (CheckIfShuttersWindowRecOpen($shuttersDev) == 2
and $shutters->getShuttersPlace eq 'terrace')
)
{
$shutters->setLastDrive('shading in'); $shutters->setLastDrive('shading in');
ShuttersCommandSet( $hash, $shuttersDev, $getShadingPos ); ShuttersCommandSet( $hash, $shuttersDev, $getShadingPos );
@ -2115,7 +2138,7 @@ sub CreateSunRiseSetShuttersTimer($$) {
$shuttersSunsetUnixtime - $shutters->getPrivacyDownTime; $shuttersSunsetUnixtime - $shutters->getPrivacyDownTime;
readingsSingleUpdate( readingsSingleUpdate(
$shuttersDevHash, $shuttersDevHash,
'ASC_Time_PrivacyDriveUp', 'ASC_Time_PrivacyDriveDown',
strftime( strftime(
"%e.%m.%Y - %H:%M", "%e.%m.%Y - %H:%M",
localtime($shuttersSunsetUnixtime) localtime($shuttersSunsetUnixtime)