fix privacy mode bug, add privacy condition to wind and rain unprotection drive

This commit is contained in:
Marko Oldenburg
2019-06-26 06:53:32 +02:00
parent 05b46042de
commit 31bd4cea24

View File

@ -1213,8 +1213,7 @@ sub EventProcessingResidents($@) {
$ascDev->getSelfDefense eq 'on' $ascDev->getSelfDefense eq 'on'
and $shutters->getSelfDefenseExclude eq 'off' and $shutters->getSelfDefenseExclude eq 'off'
or ( $getModeDown eq 'absent' or ( $getModeDown eq 'absent'
or $getModeDown eq 'always' or $getModeDown eq 'always' )
)
) )
{ {
if ( if (
@ -1234,8 +1233,9 @@ sub EventProcessingResidents($@) {
$shutters->setDriveCmd( $shutters->getClosedPos ); $shutters->setDriveCmd( $shutters->getClosedPos );
} }
elsif ( elsif (
( $getModeDown eq 'absent' (
or $getModeDown eq 'always' $getModeDown eq 'absent'
or $getModeDown eq 'always'
) )
and not IsDay($shuttersDev) and not IsDay($shuttersDev)
and IsAfterShuttersTimeBlocking($shuttersDev) and IsAfterShuttersTimeBlocking($shuttersDev)
@ -1350,7 +1350,7 @@ sub EventProcessingResidents($@) {
$shutters->setLastDrive('selfDefense inactive'); $shutters->setLastDrive('selfDefense inactive');
$shutters->setDriveCmd( $shutters->setDriveCmd(
( (
$shutters->getPrivacyDownStatus $shutters->getPrivacyDownStatus == 2
? $shutters->getPrivacyDownPos ? $shutters->getPrivacyDownPos
: $shutters->getOpenPos : $shutters->getOpenPos
) )
@ -1415,7 +1415,14 @@ sub EventProcessingRain($@) {
and $shutters->getRainProtectionStatus eq 'protected' ) and $shutters->getRainProtectionStatus eq 'protected' )
{ {
$shutters->setLastDrive('rain un-protected'); $shutters->setLastDrive('rain un-protected');
$shutters->setDriveCmd( $shutters->getLastPos ); $shutters->setDriveCmd(
(
IsDay($shuttersDev) ? $shutters->getLastPos
: ( $shutters->getPrivacyDownStatus == 2
? $shutters->getPrivacyDownPos
: $shutters->getClosedPos )
)
);
$shutters->setRainProtectionStatus('unprotected'); $shutters->setRainProtectionStatus('unprotected');
} }
} }
@ -1463,7 +1470,14 @@ sub EventProcessingWind($@) {
and $shutters->getWindProtectionStatus eq 'protected' ) and $shutters->getWindProtectionStatus eq 'protected' )
{ {
$shutters->setLastDrive('wind un-protected'); $shutters->setLastDrive('wind un-protected');
$shutters->setDriveCmd( $shutters->getLastPos ); $shutters->setDriveCmd(
(
IsDay($shuttersDev) ? $shutters->getLastPos
: ( $shutters->getPrivacyDownStatus == 2
? $shutters->getPrivacyDownPos
: $shutters->getClosedPos )
)
);
$shutters->setWindProtectionStatus('unprotected'); $shutters->setWindProtectionStatus('unprotected');
} }
@ -2375,14 +2389,15 @@ sub CreateSunRiseSetShuttersTimer($$) {
my %funcHash = ( my %funcHash = (
hash => $hash, hash => $hash,
shuttersdevice => $shuttersDev, shuttersdevice => $shuttersDev,
sunsettime => $shuttersSunsetUnixtime,
# privacyMode => 0, sunrisetime => $shuttersSunriseUnixtime
sunsettime => $shuttersSunsetUnixtime,
sunrisetime => $shuttersSunriseUnixtime
); );
## Setzt den PrivacyDown Modus für die Sichtschutzfahrt auf den Status 0 ## Setzt den PrivacyDown Modus für die Sichtschutzfahrt auf den Status 0
$shutters->setPrivacyDownStatus(0); ## 1 bedeutet das PrivacyDown Timer aktiviert wurde, 2 beudet das er im privacyDown ist
## also das Rollo in privacyDown Position steht und VOR der endgültigen Nachfahrt
$shutters->setPrivacyDownStatus(0)
if ( not defined( $shutters->setPrivacyDownStatus ) );
## Ich brauche beim löschen des InternalTimer den Hash welchen ich mitgegeben habe,dieser muss gesichert werden ## Ich brauche beim löschen des InternalTimer den Hash welchen ich mitgegeben habe,dieser muss gesichert werden
$shutters->setInTimerFuncHash( \%funcHash ); $shutters->setInTimerFuncHash( \%funcHash );
@ -2403,10 +2418,8 @@ sub CreateSunRiseSetShuttersTimer($$) {
), ),
0 0
); );
# $funcHash{privacyMode} = 1;
## Setzt den PrivacyDown Modus für die Sichtschutzfahrt auf den Status 1 ## Setzt den PrivacyDown Modus für die Sichtschutzfahrt auf den Status 1
$shutters->setPrivacyDownStatus(0); $shutters->setPrivacyDownStatus(1);
} }
} }
@ -2520,14 +2533,18 @@ sub SunSetShuttersAfterTimerFn($) {
) )
{ {
if ( $funcHash->{privacyMode} == 1 ) { if ( $shutters->getPrivacyDownStatus == 1 ) {
$shutters->setPrivacyDownStatus(1); $shutters->setPrivacyDownStatus(2);
$shutters->setLastDrive('privacy position'); $shutters->setLastDrive('privacy position');
ShuttersCommandSet( $hash, $shuttersDev, ShuttersCommandSet(
PositionValueWindowRec( $shuttersDev, $shutters->getClosedPos ) $hash,
$shuttersDev,
PositionValueWindowRec(
$shuttersDev, $shutters->getPrivacyDownPos
)
); );
} }
elsif ( $funcHash->{privacyMode} == 0 ) { else {
$shutters->setPrivacyDownStatus(0); $shutters->setPrivacyDownStatus(0);
$shutters->setLastDrive('night close'); $shutters->setLastDrive('night close');
ShuttersCommandSet( $hash, $shuttersDev, ShuttersCommandSet( $hash, $shuttersDev,
@ -2695,7 +2712,8 @@ sub GetShuttersInformation($) {
$ret .= "<td> </td>"; $ret .= "<td> </td>";
$ret .= "<td>" . $shutters->getLockOut . "</td>"; $ret .= "<td>" . $shutters->getLockOut . "</td>";
$ret .= "<td> </td>"; $ret .= "<td> </td>";
$ret .= "<td>" . ReadingsVal( $shutter, 'ASC_ShuttersLastDrive', 'none' ) . "</td>"; $ret .= "<td>"
. ReadingsVal( $shutter, 'ASC_ShuttersLastDrive', 'none' ) . "</td>";
$ret .= "<td> </td>"; $ret .= "<td> </td>";
$ret .= "<td>" . $shutters->getStatus . "</td>"; $ret .= "<td>" . $shutters->getStatus . "</td>";
$ret .= "<td> </td>"; $ret .= "<td> </td>";
@ -6368,7 +6386,7 @@ sub getblockAscDrivesAfterManual {
"release_status": "under develop", "release_status": "under develop",
"license": "GPL_2", "license": "GPL_2",
"version": "v0.6.19", "version": "v0.6.19",
"x_developmentversion": "v0.6.19.18", "x_developmentversion": "v0.6.19.19",
"author": [ "author": [
"Marko Oldenburg <leongaultier@gmail.com>" "Marko Oldenburg <leongaultier@gmail.com>"
], ],