change homemmode condition for shading in shadingDrive Fn

This commit is contained in:
Marko Oldenburg 2019-06-21 09:19:49 +02:00
parent 4011a56656
commit ed631686d9

View File

@ -339,16 +339,16 @@ sub Define($$) {
my $name = $a[0];
$hash->{MID} = 'da39a3ee5e6b4b0d3255bfef95601890afd80709'
$hash->{MID} = 'da39a3ee5e6b4b0d3255bfef95601890afd80709'
; # eine Ein Eindeutige ID für interne FHEM Belange / nicht weiter wichtig
# ### Versionierung ###
# Stable Version
# $hash->{VERSION} = version->parse($VERSION)->normal;
# Developer Version
$hash->{DEV_VERSION} = FHEM::Meta::Get( $hash, 'x_developmentversion' );
$hash->{NOTIFYDEV} = 'global,'
# ### Versionierung ###
# Stable Version
# $hash->{VERSION} = version->parse($VERSION)->normal;
# Developer Version
$hash->{DEV_VERSION} = FHEM::Meta::Get( $hash, 'x_developmentversion' );
$hash->{NOTIFYDEV} = 'global,'
. $name; # Liste aller Devices auf deren Events gehört werden sollen
#$hash->{shutters} = $shutters;
#$hash->{ascDev} = $ascDev;
@ -726,16 +726,16 @@ sub ShuttersDeviceScan($) {
if ( ReadingsVal( $_, 'ASC_Enable', 'none' ) eq 'none' );
}
# ### Temporär und muss später entfernt werden
# CommandAttr( undef,
# $name
# . ' ASC_brightnessDriveUpDown '
# . AttrVal( $name, 'ASC_brightnessMinVal', 500 ) . ':'
# . AttrVal( $name, 'ASC_brightnessMaxVal', 800 ) )
# if ( AttrVal( $name, 'ASC_brightnessMinVal', 'none' ) ne 'none' );
#
# CommandDeleteAttr( undef, $name . ' ASC_brightnessMaxVal' )
# if ( AttrVal( $name, 'ASC_brightnessMaxVal', 'none' ) ne 'none' );
# ### Temporär und muss später entfernt werden
# CommandAttr( undef,
# $name
# . ' ASC_brightnessDriveUpDown '
# . AttrVal( $name, 'ASC_brightnessMinVal', 500 ) . ':'
# . AttrVal( $name, 'ASC_brightnessMaxVal', 800 ) )
# if ( AttrVal( $name, 'ASC_brightnessMinVal', 'none' ) ne 'none' );
#
# CommandDeleteAttr( undef, $name . ' ASC_brightnessMaxVal' )
# if ( AttrVal( $name, 'ASC_brightnessMaxVal', 'none' ) ne 'none' );
$hash->{NOTIFYDEV} = "global," . $name . $shuttersList;
@ -1739,19 +1739,10 @@ sub EventProcessingShadingBrightness($@) {
. ' WindProtection: '
. $shutters->getWindProtectionStatus );
my $homemode = $shutters->getRoommatesStatus;
$homemode = $ascDev->getResidentsStatus if ( $homemode eq 'none' );
if (
(
$shutters->getShadingMode eq 'always'
or $shutters->getShadingMode eq $homemode
)
and IsDay($shuttersDev)
if ( IsDay($shuttersDev)
and $ascDev->getAutoShuttersControlShading eq 'on'
and $shutters->getRainProtectionStatus eq 'unprotected'
and $shutters->getWindProtectionStatus eq 'unprotected'
)
and $shutters->getWindProtectionStatus eq 'unprotected' )
{
ShadingProcessing(
$hash,
@ -1771,7 +1762,6 @@ sub EventProcessingShadingBrightness($@) {
);
}
elsif ( $shutters->getShadingStatus eq 'in'
and $shutters->getShadingMode ne $homemode
and $shutters->getRainProtectionStatus eq 'unprotected'
and $shutters->getWindProtectionStatus eq 'unprotected' )
{
@ -2070,22 +2060,51 @@ sub ShadingProcessingDriveCommand($$) {
my $getShadingPos = $shutters->getShadingPos;
my $getStatus = $shutters->getStatus;
$shutters->setShadingStatus( $shutters->getShadingStatus )
if (
( int( gettimeofday() ) - $shutters->getShadingStatusTimestamp ) >
( $shutters->getShadingWaitingPeriod / 2 ) );
my $homemode = $shutters->getRoommatesStatus;
$homemode = $ascDev->getResidentsStatus if ( $homemode eq 'none' );
if ( $shutters->getShadingStatus eq 'in'
and $getShadingPos != $getStatus )
if ( $shutters->getShadingMode eq 'always'
or $shutters->getShadingMode eq $homemode )
{
if (
not $shutters->getQueryShuttersPos( $shutters->getShadingPos )
and not( CheckIfShuttersWindowRecOpen($shuttersDev) == 2
and $shutters->getShuttersPlace eq 'terrace' )
)
$shutters->setShadingStatus( $shutters->getShadingStatus )
if (
( int( gettimeofday() ) - $shutters->getShadingStatusTimestamp ) >
( $shutters->getShadingWaitingPeriod / 2 ) );
if ( $shutters->getShadingStatus eq 'in'
and $getShadingPos != $getStatus )
{
$shutters->setLastDrive('shading in');
ShuttersCommandSet( $hash, $shuttersDev, $getShadingPos );
if (
not $shutters->getQueryShuttersPos( $shutters->getShadingPos )
and not( CheckIfShuttersWindowRecOpen($shuttersDev) == 2
and $shutters->getShuttersPlace eq 'terrace' )
)
{
$shutters->setLastDrive('shading in');
ShuttersCommandSet( $hash, $shuttersDev, $getShadingPos );
ASC_Debug( 'ShadingProcessing: '
. $shutters->getShuttersDev
. ' - Der aktuelle Beschattungsstatus ist: '
. $shutters->getShadingStatus
. ' und somit wird nun in die Position: '
. $getShadingPos
. ' zum Beschatten gefahren' );
}
}
elsif ( $shutters->getShadingStatus eq 'out'
and $getShadingPos == $getStatus )
{
$shutters->setLastDrive('shading out');
ShuttersCommandSet(
$hash,
$shuttersDev,
(
$shutters->getShadingPos == $shutters->getLastPos
? $shutters->getOpenPos
: $shutters->getLastPos
)
);
ASC_Debug( 'ShadingProcessing: '
. $shutters->getShuttersDev
@ -2093,46 +2112,24 @@ sub ShadingProcessingDriveCommand($$) {
. $shutters->getShadingStatus
. ' und somit wird nun in die Position: '
. $getShadingPos
. ' zum Beschatten gefahren' );
. ' zum beenden der Beschattung gefahren' );
}
}
elsif ( $shutters->getShadingStatus eq 'out'
and $getShadingPos == $getStatus )
{
$shutters->setLastDrive('shading out');
ShuttersCommandSet(
$hash,
$shuttersDev,
(
$shutters->getShadingPos == $shutters->getLastPos
? $shutters->getOpenPos
: $shutters->getLastPos
)
);
ASC_Debug( 'ShadingProcessing: '
Log3( $name, 4,
"AutoShuttersControl ($name) - Shading Processing - In der Routine zum fahren der Rollläden, Shading Wert: "
. $shutters->getShadingStatus );
ASC_Debug(
'ShadingProcessing: '
. $shutters->getShuttersDev
. ' - Der aktuelle Beschattungsstatus ist: '
. $shutters->getShadingStatus
. ' und somit wird nun in die Position: '
. $getShadingPos
. ' zum beenden der Beschattung gefahren' );
. ', Beschattungsstatus Zeitstempel: '
. strftime(
"%Y.%m.%e %T", localtime( $shutters->getShadingStatusTimestamp )
)
);
}
Log3( $name, 4,
"AutoShuttersControl ($name) - Shading Processing - In der Routine zum fahren der Rollläden, Shading Wert: "
. $shutters->getShadingStatus );
ASC_Debug(
'ShadingProcessing: '
. $shutters->getShuttersDev
. ' - Der aktuelle Beschattungsstatus ist: '
. $shutters->getShadingStatus
. ', Beschattungsstatus Zeitstempel: '
. strftime(
"%Y.%m.%e %T", localtime( $shutters->getShadingStatusTimestamp )
)
);
}
sub EventProcessingPartyMode($) {
@ -6173,7 +6170,7 @@ sub getblockAscDrivesAfterManual {
"release_status": "under develop",
"license": "GPL_2",
"version": "v0.6.19",
"x_developmentversion": "v0.6.19.5",
"x_developmentversion": "v0.6.19.6",
"author": [
"Marko Oldenburg <leongaultier@gmail.com>"
],