Merge pull request 'patch_issues67-Lockout_and_BlockingManualTime' (#79) from patch_issues67-Lockout_and_BlockingManualTime into dev
Reviewed-on: #79
This commit is contained in:
commit
c6e88f2d45
@ -1,10 +1,10 @@
|
||||
UPD 2021-12-04_08:08:23 115678 FHEM/73_AutoShuttersControl.pm
|
||||
UPD 2021-12-06_06:34:51 115678 FHEM/73_AutoShuttersControl.pm
|
||||
UPD 2021-11-29_15:01:56 75264 lib/FHEM/Automation/ShuttersControl.pm
|
||||
UPD 2021-10-09_07:12:54 2657 lib/FHEM/Automation/ShuttersControl/Dev.pm
|
||||
UPD 2021-10-09_07:12:54 2494 lib/FHEM/Automation/ShuttersControl/Roommate.pm
|
||||
UPD 2021-10-24_07:33:53 31900 lib/FHEM/Automation/ShuttersControl/Shutters.pm
|
||||
UPD 2021-12-04_09:50:00 25333 lib/FHEM/Automation/ShuttersControl/Shading.pm
|
||||
UPD 2021-12-04_10:50:05 110883 lib/FHEM/Automation/ShuttersControl/EventProcessingFunctions.pm
|
||||
UPD 2021-12-04_10:58:06 25333 lib/FHEM/Automation/ShuttersControl/Shading.pm
|
||||
UPD 2021-12-08_11:45:16 112810 lib/FHEM/Automation/ShuttersControl/EventProcessingFunctions.pm
|
||||
UPD 2021-11-14_14:03:06 40094 lib/FHEM/Automation/ShuttersControl/Helper.pm
|
||||
UPD 2021-10-09_07:12:54 2173 lib/FHEM/Automation/ShuttersControl/Window.pm
|
||||
UPD 2021-10-09_07:12:54 11739 lib/FHEM/Automation/ShuttersControl/Dev/Attr.pm
|
||||
@ -13,4 +13,4 @@ UPD 2021-10-27_08:50:46 52649 lib/FHEM/Automation/ShuttersControl/Shutters/Attr.
|
||||
UPD 2021-10-09_07:12:54 2901 lib/FHEM/Automation/ShuttersControl/Shutters/Readings.pm
|
||||
UPD 2021-10-09_07:12:54 3978 lib/FHEM/Automation/ShuttersControl/Window/Attr.pm
|
||||
UPD 2021-10-09_07:12:54 2286 lib/FHEM/Automation/ShuttersControl/Window/Readings.pm
|
||||
UPD 2021-11-25_08:28:33 6965 lib/FHEM/Automation/ShuttersControl/Rainprotection.pm
|
||||
UPD 2021-12-06_06:34:51 6965 lib/FHEM/Automation/ShuttersControl/Rainprotection.pm
|
||||
|
@ -54,18 +54,18 @@ use FHEM::Automation::ShuttersControl::Rainprotection qw (:ALL);
|
||||
require Exporter;
|
||||
our @ISA = qw(Exporter);
|
||||
our @EXPORT_OK = qw(
|
||||
EventProcessingPartyMode
|
||||
EventProcessingGeneral
|
||||
EventProcessingShutters
|
||||
EventProcessingAdvShuttersClose
|
||||
EventProcessingPartyMode
|
||||
EventProcessingGeneral
|
||||
EventProcessingShutters
|
||||
EventProcessingAdvShuttersClose
|
||||
);
|
||||
our %EXPORT_TAGS = (
|
||||
ALL => [
|
||||
qw(
|
||||
EventProcessingPartyMode
|
||||
EventProcessingGeneral
|
||||
EventProcessingShutters
|
||||
EventProcessingAdvShuttersClose
|
||||
EventProcessingPartyMode
|
||||
EventProcessingGeneral
|
||||
EventProcessingShutters
|
||||
EventProcessingAdvShuttersClose
|
||||
)
|
||||
],
|
||||
);
|
||||
@ -75,12 +75,12 @@ use GPUtils qw(GP_Import);
|
||||
BEGIN {
|
||||
GP_Import(
|
||||
qw(
|
||||
Log3
|
||||
gettimeofday
|
||||
computeAlignTime
|
||||
CommandSet
|
||||
ReadingsVal
|
||||
RemoveInternalTimer
|
||||
Log3
|
||||
gettimeofday
|
||||
computeAlignTime
|
||||
CommandSet
|
||||
ReadingsVal
|
||||
RemoveInternalTimer
|
||||
)
|
||||
);
|
||||
}
|
||||
@ -94,8 +94,12 @@ sub EventProcessingGeneral {
|
||||
|
||||
if ( defined($devname) && ($devname) )
|
||||
{ # es wird lediglich der Devicename der Funktion mitgegeben wenn es sich nicht um global handelt daher hier die Unterscheidung
|
||||
my $windReading = $FHEM::Automation::ShuttersControl::ascDev->getWindSensorReading // 'none';
|
||||
my $rainReading = $FHEM::Automation::ShuttersControl::ascDev->getRainSensorReading // 'none';
|
||||
my $windReading =
|
||||
$FHEM::Automation::ShuttersControl::ascDev->getWindSensorReading
|
||||
// 'none';
|
||||
my $rainReading =
|
||||
$FHEM::Automation::ShuttersControl::ascDev->getRainSensorReading
|
||||
// 'none';
|
||||
|
||||
while ( my ( $device, $deviceAttr ) =
|
||||
each %{ $hash->{monitoredDevs}{$devname} } )
|
||||
@ -122,13 +126,16 @@ sub EventProcessingGeneral {
|
||||
EventProcessingExternalTriggerDevice( $hash, $device, $events )
|
||||
if ( $deviceAttr eq 'ASC_ExternalTrigger' );
|
||||
|
||||
$FHEM::Automation::ShuttersControl::shutters->setShuttersDev($device)
|
||||
$FHEM::Automation::ShuttersControl::shutters->setShuttersDev(
|
||||
$device)
|
||||
if ( $deviceAttr eq 'ASC_BrightnessSensor' );
|
||||
|
||||
if (
|
||||
$deviceAttr eq 'ASC_BrightnessSensor'
|
||||
&& ( $FHEM::Automation::ShuttersControl::shutters->getDown eq 'brightness'
|
||||
|| $FHEM::Automation::ShuttersControl::shutters->getUp eq 'brightness' )
|
||||
&& ( $FHEM::Automation::ShuttersControl::shutters->getDown eq
|
||||
'brightness'
|
||||
|| $FHEM::Automation::ShuttersControl::shutters->getUp eq
|
||||
'brightness' )
|
||||
)
|
||||
{
|
||||
EventProcessingBrightness( $hash, $device, $events );
|
||||
@ -147,7 +154,8 @@ sub EventProcessingGeneral {
|
||||
\s(.*)$}xms
|
||||
)
|
||||
{ # wurde den Attributen unserer Rolläden ein Wert zugewiesen ?
|
||||
FHEM::Automation::ShuttersControl::AddNotifyDev( $hash, $3, $1, $2 ) if ( $3 ne 'none' );
|
||||
FHEM::Automation::ShuttersControl::AddNotifyDev( $hash, $3, $1, $2 )
|
||||
if ( $3 ne 'none' );
|
||||
Log3( $name, 4,
|
||||
"AutoShuttersControl ($name) - EventProcessing: ATTR" );
|
||||
}
|
||||
@ -175,11 +183,13 @@ sub EventProcessingGeneral {
|
||||
(.*)?}xms
|
||||
)
|
||||
{
|
||||
FHEM::Automation::ShuttersControl::CreateSunRiseSetShuttersTimer( $hash, $2 )
|
||||
FHEM::Automation::ShuttersControl::CreateSunRiseSetShuttersTimer(
|
||||
$hash, $2 )
|
||||
if (
|
||||
$3 ne 'ASC_Time_Up_WE_Holiday'
|
||||
|| ( $3 eq 'ASC_Time_Up_WE_Holiday'
|
||||
&& $FHEM::Automation::ShuttersControl::ascDev->getSunriseTimeWeHoliday eq 'on' )
|
||||
&& $FHEM::Automation::ShuttersControl::ascDev
|
||||
->getSunriseTimeWeHoliday eq 'on' )
|
||||
);
|
||||
}
|
||||
elsif (
|
||||
@ -189,7 +199,8 @@ sub EventProcessingGeneral {
|
||||
(.*)?}xms
|
||||
)
|
||||
{
|
||||
FHEM::Automation::ShuttersControl::RenewSunRiseSetShuttersTimer($hash);
|
||||
FHEM::Automation::ShuttersControl::RenewSunRiseSetShuttersTimer(
|
||||
$hash);
|
||||
}
|
||||
elsif (
|
||||
$events =~ m{^(DELETEATTR|ATTR)
|
||||
@ -197,7 +208,8 @@ sub EventProcessingGeneral {
|
||||
(.*)?}xms
|
||||
)
|
||||
{
|
||||
$FHEM::Automation::ShuttersControl::shutters->deleteShadingStateChangeSunny;
|
||||
$FHEM::Automation::ShuttersControl::shutters
|
||||
->deleteShadingStateChangeSunny;
|
||||
}
|
||||
|
||||
if (
|
||||
@ -210,20 +222,21 @@ m{^(DELETEATTR|ATTR) #global ATTR myASC ASC_tempSensor Cellar
|
||||
(.*)?}xms
|
||||
)
|
||||
{
|
||||
# ATTR RolloKinZimSteven_F1 ASC_Shading_Mode off
|
||||
# ATTR RolloKinZimSteven_F1 ASC_Shading_Mode off
|
||||
if ( $events =~ m{^ATTR\s(.*)\sASC_Shading_Mode\s(off)}xms ) {
|
||||
my %funcHash = (
|
||||
hash => $hash,
|
||||
shuttersdevice => $1,
|
||||
value => $2,
|
||||
attrEvent => 1,
|
||||
hash => $hash,
|
||||
shuttersdevice => $1,
|
||||
value => $2,
|
||||
attrEvent => 1,
|
||||
);
|
||||
|
||||
FHEM::Automation::ShuttersControl::Shading::_CheckShuttersConditionsForShadingFn(\%funcHash);
|
||||
FHEM::Automation::ShuttersControl::Shading::_CheckShuttersConditionsForShadingFn(
|
||||
\%funcHash );
|
||||
}
|
||||
else {
|
||||
CommandSet( undef, $name . ' controlShading on' )
|
||||
if ( ReadingsVal( $name, 'controlShading', 'off' ) ne 'off' );
|
||||
if ( ReadingsVal( $name, 'controlShading', 'off' ) ne 'off' );
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -243,9 +256,16 @@ sub EventProcessingWindowRec {
|
||||
$FHEM::Automation::ShuttersControl::shutters->getWinDevReading;
|
||||
|
||||
if ( $events =~
|
||||
m{.*$reading:.*?([Oo]pen(?>ed)?|[Cc]losed?|tilt(?>ed)?|true|false)}xms
|
||||
&& IsAfterShuttersManualBlocking($shuttersDev) )
|
||||
m{.*$reading:.*?([Oo]pen(?>ed)?|[Cc]losed?|tilt(?>ed)?|true|false)}xms )
|
||||
{
|
||||
return
|
||||
if ( !IsAfterShuttersManualBlocking($shuttersDev)
|
||||
&& ( $FHEM::Automation::ShuttersControl::shutters->getLockOut eq
|
||||
'off'
|
||||
|| $FHEM::Automation::ShuttersControl::shutters->getShuttersPlace
|
||||
ne 'terrace' )
|
||||
);
|
||||
|
||||
my $match = $1;
|
||||
|
||||
FHEM::Automation::ShuttersControl::ASC_Debug(
|
||||
@ -260,11 +280,7 @@ sub EventProcessingWindowRec {
|
||||
|
||||
$FHEM::Automation::ShuttersControl::shutters->setShuttersDev(
|
||||
$shuttersDev);
|
||||
my $homemode =
|
||||
$FHEM::Automation::ShuttersControl::shutters->getRoommatesStatus;
|
||||
$homemode =
|
||||
$FHEM::Automation::ShuttersControl::ascDev->getResidentsStatus
|
||||
if ( $homemode eq 'none' );
|
||||
|
||||
|
||||
#### Hardware Lock der Rollläden
|
||||
$FHEM::Automation::ShuttersControl::shutters->setHardLockOut('off')
|
||||
@ -272,9 +288,29 @@ sub EventProcessingWindowRec {
|
||||
&& $FHEM::Automation::ShuttersControl::shutters->getShuttersPlace
|
||||
eq 'terrace' );
|
||||
$FHEM::Automation::ShuttersControl::shutters->setHardLockOut('on')
|
||||
if ( $match =~ m{[Oo]pen|false}xms
|
||||
if (
|
||||
$match =~ m{[Oo]pen|false}xms
|
||||
&& $FHEM::Automation::ShuttersControl::shutters->getShuttersPlace
|
||||
eq 'terrace' );
|
||||
eq 'terrace'
|
||||
&& ( $FHEM::Automation::ShuttersControl::shutters->getStatus ==
|
||||
$FHEM::Automation::ShuttersControl::shutters->getOpenPos
|
||||
|| $FHEM::Automation::ShuttersControl::shutters->getStatus ==
|
||||
$FHEM::Automation::ShuttersControl::shutters->getComfortOpenPos
|
||||
)
|
||||
);
|
||||
|
||||
|
||||
return
|
||||
if ( !IsAfterShuttersManualBlocking($shuttersDev) );
|
||||
|
||||
|
||||
|
||||
|
||||
my $homemode =
|
||||
$FHEM::Automation::ShuttersControl::shutters->getRoommatesStatus;
|
||||
$homemode =
|
||||
$FHEM::Automation::ShuttersControl::ascDev->getResidentsStatus
|
||||
if ( $homemode eq 'none' );
|
||||
|
||||
FHEM::Automation::ShuttersControl::ASC_Debug(
|
||||
'EventProcessingWindowRec: '
|
||||
@ -283,12 +319,12 @@ sub EventProcessingWindowRec {
|
||||
. $homemode
|
||||
. ' QueryShuttersPosWinRecTilted:'
|
||||
. $FHEM::Automation::ShuttersControl::shutters
|
||||
->getQueryShuttersPos(
|
||||
->getQueryShuttersPos(
|
||||
$FHEM::Automation::ShuttersControl::shutters->getVentilatePos
|
||||
)
|
||||
. ' QueryShuttersPosWinRecComfort: '
|
||||
. $FHEM::Automation::ShuttersControl::shutters
|
||||
->getQueryShuttersPos(
|
||||
->getQueryShuttersPos(
|
||||
$FHEM::Automation::ShuttersControl::shutters->getComfortOpenPos
|
||||
)
|
||||
);
|
||||
@ -301,41 +337,40 @@ sub EventProcessingWindowRec {
|
||||
$FHEM::Automation::ShuttersControl::shutters->getVentilatePos
|
||||
|| $FHEM::Automation::ShuttersControl::shutters->getStatus ==
|
||||
$FHEM::Automation::ShuttersControl::shutters->getComfortOpenPos
|
||||
|| ( $FHEM::Automation::ShuttersControl::shutters->getStatus ==
|
||||
|| ( $FHEM::Automation::ShuttersControl::shutters->getStatus ==
|
||||
$FHEM::Automation::ShuttersControl::shutters->getOpenPos
|
||||
&& $FHEM::Automation::ShuttersControl::shutters->getLastDrive
|
||||
eq 'ventilate - window open'
|
||||
&& $FHEM::Automation::ShuttersControl::shutters
|
||||
->getLastDrive eq 'ventilate - window open'
|
||||
&& $FHEM::Automation::ShuttersControl::shutters->getSubTyp
|
||||
eq 'twostate'
|
||||
&& $FHEM::Automation::ShuttersControl::shutters->getVentilateOpen
|
||||
eq 'on' )
|
||||
eq 'twostate'
|
||||
&& $FHEM::Automation::ShuttersControl::shutters
|
||||
->getVentilateOpen eq 'on' )
|
||||
|| ( $FHEM::Automation::ShuttersControl::shutters->getStatus ==
|
||||
$FHEM::Automation::ShuttersControl::shutters
|
||||
->getPrivacyDownPos
|
||||
->getPrivacyDownPos
|
||||
&& $FHEM::Automation::ShuttersControl::shutters
|
||||
->getPrivacyDownStatus != 2
|
||||
->getPrivacyDownStatus != 2
|
||||
&& !$FHEM::Automation::ShuttersControl::shutters->getIsDay )
|
||||
|| ( $FHEM::Automation::ShuttersControl::shutters->getStatus ==
|
||||
$FHEM::Automation::ShuttersControl::shutters
|
||||
->getOpenPos
|
||||
&& ( $FHEM::Automation::ShuttersControl::shutters
|
||||
->getLockOut ne 'off'
|
||||
|| (
|
||||
$FHEM::Automation::ShuttersControl::shutters->getStatus ==
|
||||
$FHEM::Automation::ShuttersControl::shutters->getOpenPos
|
||||
&& ( $FHEM::Automation::ShuttersControl::shutters
|
||||
->getLockOut ne 'off'
|
||||
|| $FHEM::Automation::ShuttersControl::shutters
|
||||
->getShuttersPlace eq 'terrace'
|
||||
)
|
||||
&& !$FHEM::Automation::ShuttersControl::shutters->getIsDay )
|
||||
->getShuttersPlace eq 'terrace' )
|
||||
&& !$FHEM::Automation::ShuttersControl::shutters->getIsDay
|
||||
)
|
||||
|| ( $FHEM::Automation::ShuttersControl::shutters->getStatus ==
|
||||
$FHEM::Automation::ShuttersControl::shutters
|
||||
->getOpenPos
|
||||
$FHEM::Automation::ShuttersControl::shutters->getOpenPos
|
||||
&& $FHEM::Automation::ShuttersControl::shutters
|
||||
->getDelayCmd ne 'none'
|
||||
->getDelayCmd ne 'none'
|
||||
&& $FHEM::Automation::ShuttersControl::shutters
|
||||
->getShuttersPlace eq 'terrace' )
|
||||
->getShuttersPlace eq 'terrace' )
|
||||
)
|
||||
&& ( $FHEM::Automation::ShuttersControl::shutters->getVentilateOpen
|
||||
eq 'on'
|
||||
|| $FHEM::Automation::ShuttersControl::ascDev
|
||||
->getAutoShuttersControlComfort eq 'on' )
|
||||
->getAutoShuttersControlComfort eq 'on' )
|
||||
)
|
||||
{
|
||||
FHEM::Automation::ShuttersControl::ASC_Debug(
|
||||
@ -371,18 +406,19 @@ sub EventProcessingWindowRec {
|
||||
elsif (
|
||||
!$FHEM::Automation::ShuttersControl::shutters
|
||||
->getIfInShading
|
||||
&& ( $FHEM::Automation::ShuttersControl::shutters->getStatus
|
||||
&& (
|
||||
$FHEM::Automation::ShuttersControl::shutters->getStatus
|
||||
!= $FHEM::Automation::ShuttersControl::shutters
|
||||
->getOpenPos
|
||||
|| $FHEM::Automation::ShuttersControl::shutters
|
||||
->getStatus !=
|
||||
$FHEM::Automation::ShuttersControl::shutters
|
||||
->getLastManPos
|
||||
|| ( $FHEM::Automation::ShuttersControl::shutters
|
||||
->getDelayCmd ne 'none'
|
||||
|| ( $FHEM::Automation::ShuttersControl::shutters
|
||||
->getDelayCmd ne 'none'
|
||||
&& $FHEM::Automation::ShuttersControl::shutters
|
||||
->getShuttersPlace eq 'terrace' )
|
||||
)
|
||||
->getShuttersPlace eq 'terrace' )
|
||||
)
|
||||
)
|
||||
{
|
||||
if ( $FHEM::Automation::ShuttersControl::shutters
|
||||
@ -407,40 +443,44 @@ sub EventProcessingWindowRec {
|
||||
->setDriveCmd(
|
||||
(
|
||||
$FHEM::Automation::ShuttersControl::shutters
|
||||
->getDelayCmd ne 'none'
|
||||
->getDelayCmd ne 'none'
|
||||
&& $FHEM::Automation::ShuttersControl::shutters
|
||||
->getShuttersPlace eq 'terrace'
|
||||
->getShuttersPlace eq 'terrace'
|
||||
? $FHEM::Automation::ShuttersControl::shutters
|
||||
->getDelayCmd
|
||||
: ( $FHEM::Automation::ShuttersControl::shutters
|
||||
->getDelayCmd
|
||||
: (
|
||||
$FHEM::Automation::ShuttersControl::shutters
|
||||
->getVentilatePosAfterDayClosed eq 'open'
|
||||
? $FHEM::Automation::ShuttersControl::shutters
|
||||
->getOpenPos
|
||||
: $FHEM::Automation::ShuttersControl::shutters
|
||||
->getLastManPos )
|
||||
? $FHEM::Automation::ShuttersControl::shutters
|
||||
->getOpenPos
|
||||
: $FHEM::Automation::ShuttersControl::shutters
|
||||
->getLastManPos
|
||||
)
|
||||
)
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
elsif (
|
||||
!$FHEM::Automation::ShuttersControl::shutters->getIsDay
|
||||
&& $FHEM::Automation::ShuttersControl::shutters->getModeDown eq 'roommate'
|
||||
&& ( $FHEM::Automation::ShuttersControl::shutters->getRoommatesStatus eq 'home'
|
||||
|| $FHEM::Automation::ShuttersControl::shutters->getRoommatesStatus eq 'awoken' )
|
||||
!$FHEM::Automation::ShuttersControl::shutters->getIsDay
|
||||
&& $FHEM::Automation::ShuttersControl::shutters->getModeDown eq
|
||||
'roommate'
|
||||
&& ( $FHEM::Automation::ShuttersControl::shutters
|
||||
->getRoommatesStatus eq 'home'
|
||||
|| $FHEM::Automation::ShuttersControl::shutters
|
||||
->getRoommatesStatus eq 'awoken' )
|
||||
)
|
||||
{
|
||||
$FHEM::Automation::ShuttersControl::shutters
|
||||
->setDriveCmd(
|
||||
(
|
||||
$FHEM::Automation::ShuttersControl::shutters
|
||||
->getVentilatePosAfterDayClosed eq 'open'
|
||||
? $FHEM::Automation::ShuttersControl::shutters
|
||||
->getOpenPos
|
||||
: $FHEM::Automation::ShuttersControl::shutters
|
||||
->getLastManPos
|
||||
)
|
||||
);
|
||||
$FHEM::Automation::ShuttersControl::shutters->setDriveCmd(
|
||||
(
|
||||
$FHEM::Automation::ShuttersControl::shutters
|
||||
->getVentilatePosAfterDayClosed eq 'open'
|
||||
? $FHEM::Automation::ShuttersControl::shutters
|
||||
->getOpenPos
|
||||
: $FHEM::Automation::ShuttersControl::shutters
|
||||
->getLastManPos
|
||||
)
|
||||
);
|
||||
}
|
||||
elsif (
|
||||
$FHEM::Automation::ShuttersControl::shutters->getModeDown ne
|
||||
@ -495,9 +535,11 @@ sub EventProcessingWindowRec {
|
||||
)
|
||||
&& $FHEM::Automation::ShuttersControl::shutters->getVentilateOpen
|
||||
eq 'on'
|
||||
&& $FHEM::Automation::ShuttersControl::shutters
|
||||
&& ( $FHEM::Automation::ShuttersControl::shutters
|
||||
->getQueryShuttersPos(
|
||||
$FHEM::Automation::ShuttersControl::shutters->getVentilatePos
|
||||
$FHEM::Automation::ShuttersControl::shutters->getVentilatePos)
|
||||
|| ( $FHEM::Automation::ShuttersControl::shutters->getShuttersPlace eq 'terrace'
|
||||
&& $FHEM::Automation::ShuttersControl::shutters->getSubTyp eq 'twostate' )
|
||||
)
|
||||
)
|
||||
{
|
||||
@ -821,7 +863,7 @@ sub EventProcessingRoommate {
|
||||
elsif (
|
||||
( $event eq 'gotosleep' || $event eq 'asleep' )
|
||||
&& $FHEM::Automation::ShuttersControl::shutters->getModeDown ne
|
||||
'absent'
|
||||
'absent'
|
||||
&& ( $FHEM::Automation::ShuttersControl::ascDev
|
||||
->getAutoShuttersControlEvening eq 'on'
|
||||
|| $FHEM::Automation::ShuttersControl::shutters->getDown eq
|
||||
@ -975,6 +1017,7 @@ sub EventProcessingResidents {
|
||||
&& $FHEM::Automation::ShuttersControl::shutters
|
||||
->getSelfDefenseMode ne 'off'
|
||||
|| $getModeDown eq 'absent'
|
||||
|
||||
# || $getModeDown eq 'always' ) Wird zu Testzwecken auskommentiert, siehe #90 Github
|
||||
|| ( $FHEM::Automation::ShuttersControl::shutters
|
||||
->getShadingMode eq 'absent'
|
||||
@ -992,15 +1035,17 @@ sub EventProcessingResidents {
|
||||
&& (
|
||||
$FHEM::Automation::ShuttersControl::shutters
|
||||
->getSelfDefenseMode eq 'absent'
|
||||
|| ( CheckIfShuttersWindowRecOpen($shuttersDev) == 2
|
||||
|| (
|
||||
CheckIfShuttersWindowRecOpen($shuttersDev) == 2
|
||||
&& $FHEM::Automation::ShuttersControl::shutters
|
||||
->getSelfDefenseMode eq 'gone'
|
||||
&& ( $FHEM::Automation::ShuttersControl::shutters
|
||||
->getShuttersPlace eq 'terrace'
|
||||
|| $FHEM::Automation::ShuttersControl::shutters
|
||||
|| $FHEM::Automation::ShuttersControl::shutters
|
||||
->getShuttersPlace eq 'EG_window' )
|
||||
&& $FHEM::Automation::ShuttersControl::shutters
|
||||
->getSelfDefenseMode ne 'off' )
|
||||
->getSelfDefenseMode ne 'off'
|
||||
)
|
||||
)
|
||||
)
|
||||
{
|
||||
@ -1051,11 +1096,14 @@ sub EventProcessingResidents {
|
||||
$FHEM::Automation::ShuttersControl::shutters
|
||||
->getLastPos );
|
||||
}
|
||||
elsif ( $getModeDown eq 'absent' # || $getModeDown eq 'always' ) Wird zu Testzwecken auskommentiert, siehe #90 Github
|
||||
elsif (
|
||||
$getModeDown eq
|
||||
'absent' # || $getModeDown eq 'always' ) Wird zu Testzwecken auskommentiert, siehe #90 Github
|
||||
&& !$FHEM::Automation::ShuttersControl::shutters->getIsDay
|
||||
&& IsAfterShuttersTimeBlocking($shuttersDev)
|
||||
&& $FHEM::Automation::ShuttersControl::shutters
|
||||
->getRoommatesStatus eq 'none' )
|
||||
->getRoommatesStatus eq 'none'
|
||||
)
|
||||
{
|
||||
$FHEM::Automation::ShuttersControl::shutters->setLastDrive(
|
||||
'residents absent');
|
||||
@ -1115,7 +1163,8 @@ sub EventProcessingResidents {
|
||||
->getRoommatesStatus eq 'none'
|
||||
&& ( $getModeDown eq 'home'
|
||||
|| $getModeDown eq 'always' )
|
||||
&& $FHEM::Automation::ShuttersControl::ascDev->getAutoShuttersControlEvening eq 'on'
|
||||
&& $FHEM::Automation::ShuttersControl::ascDev
|
||||
->getAutoShuttersControlEvening eq 'on'
|
||||
&& $getResidentsLastStatus ne 'asleep'
|
||||
&& $getResidentsLastStatus ne 'awoken'
|
||||
&& IsAfterShuttersTimeBlocking($shuttersDev)
|
||||
@ -1263,7 +1312,8 @@ sub EventProcessingResidents {
|
||||
->getRoommatesStatus eq 'none'
|
||||
&& ( $getModeUp eq 'home'
|
||||
|| $getModeUp eq 'always' )
|
||||
&& $FHEM::Automation::ShuttersControl::ascDev->getAutoShuttersControlMorning eq 'on'
|
||||
&& $FHEM::Automation::ShuttersControl::ascDev
|
||||
->getAutoShuttersControlMorning eq 'on'
|
||||
&& IsAfterShuttersTimeBlocking($shuttersDev)
|
||||
&& !$FHEM::Automation::ShuttersControl::shutters->getIfInShading
|
||||
&& !$FHEM::Automation::ShuttersControl::shutters
|
||||
@ -1382,8 +1432,9 @@ sub EventProcessingWind {
|
||||
$FHEM::Automation::ShuttersControl::shutters->getIsDay
|
||||
? $FHEM::Automation::ShuttersControl::shutters
|
||||
->getLastPos
|
||||
: ( $FHEM::Automation::ShuttersControl::shutters->getShuttersPlace
|
||||
eq 'awning'
|
||||
: (
|
||||
$FHEM::Automation::ShuttersControl::shutters
|
||||
->getShuttersPlace eq 'awning'
|
||||
? $FHEM::Automation::ShuttersControl::shutters
|
||||
->getOpenPos
|
||||
: (
|
||||
@ -1794,7 +1845,8 @@ sub EventProcessingBrightness {
|
||||
. $FHEM::Automation::ShuttersControl::shutters
|
||||
->getLastDrive );
|
||||
|
||||
FHEM::Automation::ShuttersControl::CreateSunRiseSetShuttersTimer( $hash, $shuttersDev );
|
||||
FHEM::Automation::ShuttersControl::CreateSunRiseSetShuttersTimer(
|
||||
$hash, $shuttersDev );
|
||||
}
|
||||
else {
|
||||
$FHEM::Automation::ShuttersControl::shutters
|
||||
@ -1971,10 +2023,8 @@ sub EventProcessingBrightness {
|
||||
$FHEM::Automation::ShuttersControl::shutters->setLastDrive(
|
||||
$lastDrive);
|
||||
|
||||
if (
|
||||
$FHEM::Automation::ShuttersControl::shutters
|
||||
->getPrivacyDownStatus != 2
|
||||
)
|
||||
if ( $FHEM::Automation::ShuttersControl::shutters
|
||||
->getPrivacyDownStatus != 2 )
|
||||
{
|
||||
$FHEM::Automation::ShuttersControl::shutters->setSunrise(0);
|
||||
$FHEM::Automation::ShuttersControl::shutters->setSunset(1);
|
||||
@ -2164,17 +2214,17 @@ sub EventProcessingTwilightDevice {
|
||||
. $FHEM::Automation::ShuttersControl::shutters->getShuttersDev
|
||||
. ' RainProtection: '
|
||||
. $FHEM::Automation::ShuttersControl::shutters
|
||||
->getRainProtectionStatus
|
||||
->getRainProtectionStatus
|
||||
. ' WindProtection: '
|
||||
. $FHEM::Automation::ShuttersControl::shutters
|
||||
->getWindProtectionStatus );
|
||||
->getWindProtectionStatus );
|
||||
|
||||
if ( $FHEM::Automation::ShuttersControl::ascDev
|
||||
->getAutoShuttersControlShading eq 'on'
|
||||
if ( $FHEM::Automation::ShuttersControl::ascDev
|
||||
->getAutoShuttersControlShading eq 'on'
|
||||
&& $FHEM::Automation::ShuttersControl::shutters
|
||||
->getRainProtectionStatus eq 'unprotected'
|
||||
->getRainProtectionStatus eq 'unprotected'
|
||||
&& $FHEM::Automation::ShuttersControl::shutters
|
||||
->getWindProtectionStatus eq 'unprotected' )
|
||||
->getWindProtectionStatus eq 'unprotected' )
|
||||
{
|
||||
ShadingProcessing(
|
||||
$hash,
|
||||
@ -2243,12 +2293,14 @@ sub EventProcessingPartyMode {
|
||||
$shuttersDev,
|
||||
(
|
||||
CheckIfShuttersWindowRecOpen($shuttersDev) == 0
|
||||
? ($FHEM::Automation::ShuttersControl::shutters
|
||||
? (
|
||||
$FHEM::Automation::ShuttersControl::shutters
|
||||
->getSleepPos > 0
|
||||
? $FHEM::Automation::ShuttersControl::shutters
|
||||
->getSleepPos
|
||||
->getSleepPos
|
||||
: $FHEM::Automation::ShuttersControl::shutters
|
||||
->getClosedPos)
|
||||
->getClosedPos
|
||||
)
|
||||
: $FHEM::Automation::ShuttersControl::shutters
|
||||
->getVentilatePos
|
||||
)
|
||||
@ -2256,7 +2308,7 @@ sub EventProcessingPartyMode {
|
||||
}
|
||||
}
|
||||
elsif (
|
||||
$FHEM::Automation::ShuttersControl::shutters->getDelayCmd ne 'none'
|
||||
$FHEM::Automation::ShuttersControl::shutters->getDelayCmd ne 'none'
|
||||
&& $FHEM::Automation::ShuttersControl::shutters->getIsDay
|
||||
&& IsAfterShuttersManualBlocking($shuttersDev) )
|
||||
{
|
||||
@ -2368,6 +2420,22 @@ sub EventProcessingShutters {
|
||||
$FHEM::Automation::ShuttersControl::shutters->setLastDriveReading;
|
||||
$FHEM::Automation::ShuttersControl::ascDev->setStateReading;
|
||||
|
||||
$FHEM::Automation::ShuttersControl::shutters->setHardLockOut('on')
|
||||
if (
|
||||
(
|
||||
$FHEM::Automation::ShuttersControl::shutters->getStatus ==
|
||||
$FHEM::Automation::ShuttersControl::shutters
|
||||
->getComfortOpenPos
|
||||
|| ( $FHEM::Automation::ShuttersControl::shutters->getStatus
|
||||
== $FHEM::Automation::ShuttersControl::shutters
|
||||
->getOpenPos
|
||||
&& $FHEM::Automation::ShuttersControl::shutters
|
||||
->getLastDrive eq 'ventilate - window open' )
|
||||
)
|
||||
&& $FHEM::Automation::ShuttersControl::shutters
|
||||
->getShuttersPlace eq 'terrace'
|
||||
);
|
||||
|
||||
FHEM::Automation::ShuttersControl::ASC_Debug(
|
||||
'EventProcessingShutters: eine automatisierte Fahrt durch ASC wurde erkannt! Es werden nun die LastDriveReading und StateReading Werte gesetzt!'
|
||||
);
|
||||
@ -2480,7 +2548,4 @@ sub EventProcessingExternalTriggerDevice {
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
1;
|
||||
|
Loading…
Reference in New Issue
Block a user