fix roommate fn then in shading

This commit is contained in:
Marko Oldenburg 2019-06-26 13:49:10 +02:00
parent 2d9478be05
commit 9a6f1f5036

View File

@ -1079,6 +1079,7 @@ sub EventProcessingRoommate($@) {
my $getModeUp = $shutters->getModeUp; my $getModeUp = $shutters->getModeUp;
my $getModeDown = $shutters->getModeDown; my $getModeDown = $shutters->getModeDown;
my $getRoommatesLastStatus = $shutters->getRoommatesLastStatus; my $getRoommatesLastStatus = $shutters->getRoommatesLastStatus;
my $posValue;
if ( if (
( $1 eq 'home' or $1 eq 'awoken' ) ( $1 eq 'home' or $1 eq 'awoken' )
@ -1109,9 +1110,19 @@ sub EventProcessingRoommate($@) {
Log3( $name, 4, Log3( $name, 4,
"AutoShuttersControl ($name) - EventProcessingRoommate_2: $shuttersDev und Events $events" "AutoShuttersControl ($name) - EventProcessingRoommate_2: $shuttersDev und Events $events"
); );
if ( $shutters->getIfInShading
and $shutters->getStatus != $shutters->getShadingPos )
{
$shutters->setLastDrive('shading in');
$posValue = $shutters->getShadingPos;
}
else {
$shutters->setLastDrive('roommate awoken'); $shutters->setLastDrive('roommate awoken');
ShuttersCommandSet( $hash, $shuttersDev, $posValue = $shutters->getOpenPos;
$shutters->getOpenPos ); }
ShuttersCommandSet( $hash, $shuttersDev, $posValue );
} }
if ( if (
@ -1129,34 +1140,52 @@ sub EventProcessingRoommate($@) {
or $getModeDown eq 'always' ) or $getModeDown eq 'always' )
) )
{ {
my $position;
$shutters->setLastDrive('roommate home'); $shutters->setLastDrive('roommate home');
if ( CheckIfShuttersWindowRecOpen($shuttersDev) == 0 if ( CheckIfShuttersWindowRecOpen($shuttersDev) == 0
or $shutters->getVentilateOpen eq 'off' ) or $shutters->getVentilateOpen eq 'off' )
{ {
$position = $shutters->getClosedPos; $posValue = $shutters->getClosedPos;
} }
else { else {
$position = $shutters->getVentilatePos; $posValue = $shutters->getVentilatePos;
$shutters->setLastDrive( $shutters->setLastDrive(
$shutters->getLastDrive . ' - ventilate mode' ); $shutters->getLastDrive . ' - ventilate mode' );
} }
ShuttersCommandSet( $hash, $shuttersDev, $position ); ShuttersCommandSet( $hash, $shuttersDev, $posValue );
} }
elsif ( elsif (
IsDay($shuttersDev) IsDay($shuttersDev)
and $shutters->getStatus == $shutters->getClosedPos
and IsAfterShuttersTimeBlocking($shuttersDev) and IsAfterShuttersTimeBlocking($shuttersDev)
and ( $getModeUp eq 'home' and ( $getModeUp eq 'home'
or $getModeUp eq 'always' ) or $getModeUp eq 'always' )
and not $shutters->getIfInShading
) )
{ {
$shutters->setLastDrive('roommate home'); if ( $shutters->getIfInShading
ShuttersCommandSet( $hash, $shuttersDev, and $shutters->getStatus == $shutters->getOpenPos )
$shutters->getOpenPos ); {
$shutters->setLastDrive('shading in');
$posValue = $shutters->getShadingPos;
}
elsif (
not $shutters->getIfInShading
and ( $shutters->getStatus == $shutters->getClosedPos
or $shutters->getStatus ==
$shutters->getShadingPos )
)
{
$shutters->setLastDrive(
(
$shutters->getStatus == $shutters->getClosedPos
? 'roommate home'
: 'shading out'
)
);
$posValue = $shutters->getOpenPos;
}
ShuttersCommandSet( $hash, $shuttersDev, $posValue );
} }
} }
} }
@ -1170,28 +1199,43 @@ sub EventProcessingRoommate($@) {
and IsAfterShuttersManualBlocking($shuttersDev) and IsAfterShuttersManualBlocking($shuttersDev)
) )
{ {
my $position;
$shutters->setLastDrive('roommate asleep'); $shutters->setLastDrive('roommate asleep');
if ( CheckIfShuttersWindowRecOpen($shuttersDev) == 0 if ( CheckIfShuttersWindowRecOpen($shuttersDev) == 0
or $shutters->getVentilateOpen eq 'off' ) or $shutters->getVentilateOpen eq 'off' )
{ {
$position = $shutters->getClosedPos; $posValue = $shutters->getClosedPos;
} }
else { else {
$position = $shutters->getVentilatePos; $posValue = $shutters->getVentilatePos;
$shutters->setLastDrive( $shutters->setLastDrive(
$shutters->getLastDrive . ' - ventilate mode' ); $shutters->getLastDrive . ' - ventilate mode' );
} }
ShuttersCommandSet( $hash, $shuttersDev, $position ); ShuttersCommandSet( $hash, $shuttersDev, $posValue );
} }
elsif ( $getModeDown eq 'absent' elsif (
$getModeDown eq 'absent'
and $1 eq 'absent' and $1 eq 'absent'
and not IsDay($shuttersDev) ) and ( not IsDay($shuttersDev)
or $shutters->getShadingMode eq 'absent' )
)
{ {
if ( IsDay($shuttersDev)
and $shutters->getIfInShading
and
not $shutters->getQueryShuttersPos( $shutters->getShadingPos )
and $shutters->getShadingMode eq 'absent' )
{
$posValue = $shutters->getShadingPos;
$shutters->setLastDrive('shading in');
}
else {
$posValue = $shutters->getClosedPos;
$shutters->setLastDrive('roommate absent'); $shutters->setLastDrive('roommate absent');
ShuttersCommandSet( $hash, $shuttersDev, $shutters->getClosedPos ); }
ShuttersCommandSet( $hash, $shuttersDev, $$posValue );
} }
} }
} }
@ -6390,7 +6434,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.20", "x_developmentversion": "v0.6.19.22",
"author": [ "author": [
"Marko Oldenburg <leongaultier@gmail.com>" "Marko Oldenburg <leongaultier@gmail.com>"
], ],