add new modul file for EventProcessing functions

This commit is contained in:
Marko Oldenburg 2020-07-09 08:21:44 +02:00
parent f74ec772b9
commit 770be1d91e
5 changed files with 3111 additions and 2157 deletions

View File

@ -1,9 +1,9 @@
UPD 2020-07-08_22:02:31 97041 FHEM/73_AutoShuttersControl.pm
UPD 2020-07-08_22:06:53 143748 lib/FHEM/Automation/ShuttersControl.pm
UPD 2020-07-09_08:21:08 74284 lib/FHEM/Automation/ShuttersControl.pm
UPD 2020-06-22_09:41:40 2657 lib/FHEM/Automation/ShuttersControl/Dev.pm
UPD 2020-07-07_14:49:19 2496 lib/FHEM/Automation/ShuttersControl/Roommate.pm
UPD 2020-07-08_22:06:53 30760 lib/FHEM/Automation/ShuttersControl/Shutters.pm
UPD 2020-07-09_07:37:23 21703 lib/FHEM/Automation/ShuttersControl/Shading.pm
UPD 2020-07-09_08:19:25 23216 lib/FHEM/Automation/ShuttersControl/Shading.pm
UPD 2020-06-22_09:41:40 2175 lib/FHEM/Automation/ShuttersControl/Window.pm
UPD 2020-07-08_22:06:53 11569 lib/FHEM/Automation/ShuttersControl/Dev/Attr.pm
UPD 2020-07-03_11:29:10 7251 lib/FHEM/Automation/ShuttersControl/Dev/Readings.pm

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -46,19 +46,19 @@ use POSIX qw(strftime);
use utf8;
require Exporter;
our @ISA = qw(Exporter);
our @EXPORT_OK = qw(
CheckASC_ConditionsForShadingFn
ShadingProcessing
ShadingProcessingDriveCommand
our @ISA = qw(Exporter);
our @EXPORT_OK = qw(
CheckASC_ConditionsForShadingFn
ShadingProcessing
ShadingProcessingDriveCommand
);
our %EXPORT_TAGS = (
our %EXPORT_TAGS = (
ALL => [
qw(
CheckASC_ConditionsForShadingFn
ShadingProcessing
ShadingProcessingDriveCommand
)
CheckASC_ConditionsForShadingFn
ShadingProcessing
ShadingProcessingDriveCommand
)
],
);
@ -76,7 +76,7 @@ BEGIN {
readingsBulkUpdateIfChanged
readingsEndUpdate
defs
)
)
);
}
@ -89,7 +89,8 @@ sub CheckASC_ConditionsForShadingFn {
' no valid data from the ASC temperature sensor, is ASC_tempSensor attribut set?'
if ( $FHEM::Automation::ShuttersControl::ascDev->getOutTemp == -100 );
$error .= ' no twilight device found'
if ( $FHEM::Automation::ShuttersControl::ascDev->_getTwilightDevice eq 'none' );
if ( $FHEM::Automation::ShuttersControl::ascDev->_getTwilightDevice eq
'none' );
my $count = 1;
for my $shuttersDev ( @{ $hash->{helper}{shuttersList} } ) {
@ -121,7 +122,8 @@ sub _CheckShuttersConditionsForShadingFn {
$infoMessage .= (
$FHEM::Automation::ShuttersControl::shutters->getShadingMode ne 'off'
&& $FHEM::Automation::ShuttersControl::ascDev->getAutoShuttersControlShading eq 'on'
&& $FHEM::Automation::ShuttersControl::ascDev
->getAutoShuttersControlShading eq 'on'
&& $FHEM::Automation::ShuttersControl::shutters->getOutTemp == -100
? ' shading active, global temp sensor is set, but shutters temperature sensor is not set'
: ''
@ -129,15 +131,18 @@ sub _CheckShuttersConditionsForShadingFn {
$warnMessage .= (
$FHEM::Automation::ShuttersControl::shutters->getShadingMode eq 'off'
&& $FHEM::Automation::ShuttersControl::ascDev->getAutoShuttersControlShading eq 'on'
&& $FHEM::Automation::ShuttersControl::ascDev
->getAutoShuttersControlShading eq 'on'
? ' global shading active but ASC_Shading_Mode attribut is not set or off'
: ''
);
$errorMessage .= (
$FHEM::Automation::ShuttersControl::shutters->getShadingMode ne 'off'
&& $FHEM::Automation::ShuttersControl::ascDev->getAutoShuttersControlShading ne 'on'
&& $FHEM::Automation::ShuttersControl::ascDev->getAutoShuttersControlShading ne 'off'
&& $FHEM::Automation::ShuttersControl::ascDev
->getAutoShuttersControlShading ne 'on'
&& $FHEM::Automation::ShuttersControl::ascDev
->getAutoShuttersControlShading ne 'off'
? ' ASC_Shading_Mode attribut is set but global shading has errors, look at ASC device '
. '<a href="'
. '/fhem?detail='
@ -149,8 +154,9 @@ sub _CheckShuttersConditionsForShadingFn {
);
$errorMessage .= (
$FHEM::Automation::ShuttersControl::shutters->getBrightness == -1
&& $FHEM::Automation::ShuttersControl::shutters->getShadingMode ne 'off'
$FHEM::Automation::ShuttersControl::shutters->getBrightness == -1
&& $FHEM::Automation::ShuttersControl::shutters->getShadingMode ne
'off'
? ' no brightness sensor found, please set ASC_BrightnessSensor attribut'
: ''
);
@ -185,7 +191,8 @@ sub ShadingProcessing {
my $name = $hash->{NAME};
$FHEM::Automation::ShuttersControl::shutters->setShuttersDev($shuttersDev);
my $brightness = $FHEM::Automation::ShuttersControl::shutters->getBrightnessAverage;
my $brightness =
$FHEM::Automation::ShuttersControl::shutters->getBrightnessAverage;
FHEM::Automation::ShuttersControl::ASC_Debug(
'ShadingProcessing: '
@ -203,13 +210,25 @@ sub ShadingProcessing {
. ', Azimut Endschattung: '
. $azimuthRight
. ', Ist es nach der Zeitblockadezeit: '
. ( FHEM::Automation::ShuttersControl::IsAfterShuttersTimeBlocking($shuttersDev) ? 'JA' : 'NEIN' )
. (
FHEM::Automation::ShuttersControl::IsAfterShuttersTimeBlocking(
$shuttersDev) ? 'JA' : 'NEIN'
)
. ', Das Rollo ist in der Beschattung und wurde manuell gefahren: '
. ( $FHEM::Automation::ShuttersControl::shutters->getShadingManualDriveStatus ? 'JA' : 'NEIN' )
. (
$FHEM::Automation::ShuttersControl::shutters
->getShadingManualDriveStatus ? 'JA' : 'NEIN'
)
. ', Ist es nach der Hälfte der Beschattungswartezeit: '
. (
( int( gettimeofday() ) - $FHEM::Automation::ShuttersControl::shutters->getShadingStatusTimestamp ) <
( $FHEM::Automation::ShuttersControl::shutters->getShadingWaitingPeriod / 2 ) ? 'NEIN' : 'JA'
(
int( gettimeofday() ) -
$FHEM::Automation::ShuttersControl::shutters
->getShadingStatusTimestamp
) < (
$FHEM::Automation::ShuttersControl::shutters
->getShadingWaitingPeriod / 2
) ? 'NEIN' : 'JA'
)
);
@ -226,23 +245,32 @@ sub ShadingProcessing {
. $outTemp );
return
if ( $azimuth == -1
if (
$azimuth == -1
|| $elevation == -1
|| $brightness == -1
|| $outTemp == -100
|| ( int( gettimeofday() ) - $FHEM::Automation::ShuttersControl::shutters->getShadingStatusTimestamp ) <
( $FHEM::Automation::ShuttersControl::shutters->getShadingWaitingPeriod / 2 )
|| $FHEM::Automation::ShuttersControl::shutters->getShadingMode eq 'off' );
|| (
int( gettimeofday() ) -
$FHEM::Automation::ShuttersControl::shutters
->getShadingStatusTimestamp ) < (
$FHEM::Automation::ShuttersControl::shutters
->getShadingWaitingPeriod / 2
)
|| $FHEM::Automation::ShuttersControl::shutters->getShadingMode eq 'off'
);
Log3( $name, 4,
"AutoShuttersControl ($name) - Shading Processing, Rollladen: "
. $shuttersDev
. " Nach dem return" );
my $getShadingPos = $FHEM::Automation::ShuttersControl::shutters->getShadingPos;
my $getStatus = $FHEM::Automation::ShuttersControl::shutters->getStatus;
my $oldShadingStatus = $FHEM::Automation::ShuttersControl::shutters->getShadingStatus;
my $shuttersDevHash = $defs{$shuttersDev};
my $getShadingPos =
$FHEM::Automation::ShuttersControl::shutters->getShadingPos;
my $getStatus = $FHEM::Automation::ShuttersControl::shutters->getStatus;
my $oldShadingStatus =
$FHEM::Automation::ShuttersControl::shutters->getShadingStatus;
my $shuttersDevHash = $defs{$shuttersDev};
my $getModeUp = $FHEM::Automation::ShuttersControl::shutters->getModeUp;
my $homemode = $FHEM::Automation::ShuttersControl::shutters->getHomemode;
@ -254,12 +282,14 @@ sub ShadingProcessing {
if (
(
$outTemp < $FHEM::Automation::ShuttersControl::shutters->getShadingMinOutsideTemperature - 4
$outTemp < $FHEM::Automation::ShuttersControl::shutters
->getShadingMinOutsideTemperature - 4
|| $azimuth < $azimuthLeft
|| $azimuth > $azimuthRight
|| !$FHEM::Automation::ShuttersControl::shutters->getIsDay
)
&& $FHEM::Automation::ShuttersControl::shutters->getShadingStatus ne 'out'
&& $FHEM::Automation::ShuttersControl::shutters->getShadingStatus ne
'out'
)
{
$FHEM::Automation::ShuttersControl::shutters->setShadingStatus('out');
@ -275,24 +305,36 @@ sub ShadingProcessing {
}
elsif ($azimuth < $azimuthLeft
|| $azimuth > $azimuthRight
|| $elevation < $FHEM::Automation::ShuttersControl::shutters->getShadingMinElevation
|| $elevation > $FHEM::Automation::ShuttersControl::shutters->getShadingMaxElevation
|| $brightness < $FHEM::Automation::ShuttersControl::shutters->getShadingStateChangeCloudy
|| $outTemp < $FHEM::Automation::ShuttersControl::shutters->getShadingMinOutsideTemperature - 1 )
|| $elevation <
$FHEM::Automation::ShuttersControl::shutters->getShadingMinElevation
|| $elevation >
$FHEM::Automation::ShuttersControl::shutters->getShadingMaxElevation
|| $brightness < $FHEM::Automation::ShuttersControl::shutters
->getShadingStateChangeCloudy
|| $outTemp < $FHEM::Automation::ShuttersControl::shutters
->getShadingMinOutsideTemperature - 1 )
{
$FHEM::Automation::ShuttersControl::shutters->setShadingStatus('out reserved')
if ( $FHEM::Automation::ShuttersControl::shutters->getShadingStatus eq 'in'
|| $FHEM::Automation::ShuttersControl::shutters->getShadingStatus eq 'in reserved' );
$FHEM::Automation::ShuttersControl::shutters->setShadingStatus(
'out reserved')
if ( $FHEM::Automation::ShuttersControl::shutters->getShadingStatus eq
'in'
|| $FHEM::Automation::ShuttersControl::shutters->getShadingStatus
eq 'in reserved' );
if (
(
$FHEM::Automation::ShuttersControl::shutters->getShadingStatus eq 'out reserved'
and
( int( gettimeofday() ) - $FHEM::Automation::ShuttersControl::shutters->getShadingStatusTimestamp )
) > $FHEM::Automation::ShuttersControl::shutters->getShadingWaitingPeriod
$FHEM::Automation::ShuttersControl::shutters->getShadingStatus
eq 'out reserved'
and (
int( gettimeofday() ) -
$FHEM::Automation::ShuttersControl::shutters
->getShadingStatusTimestamp )
) > $FHEM::Automation::ShuttersControl::shutters
->getShadingWaitingPeriod
)
{
$FHEM::Automation::ShuttersControl::shutters->setShadingStatus('out');
$FHEM::Automation::ShuttersControl::shutters->setShadingStatus(
'out');
}
Log3( $name, 4,
@ -301,35 +343,52 @@ sub ShadingProcessing {
. " In der Out Abfrage, Shadingwert: "
. $FHEM::Automation::ShuttersControl::shutters->getShadingStatus
. ", Zeitstempel: "
. $FHEM::Automation::ShuttersControl::shutters->getShadingStatusTimestamp );
. $FHEM::Automation::ShuttersControl::shutters
->getShadingStatusTimestamp );
FHEM::Automation::ShuttersControl::ASC_Debug( 'ShadingProcessing: '
. $FHEM::Automation::ShuttersControl::shutters->getShuttersDev
. ' - Einer der Beschattungsbedingungen wird nicht mehr erfüllt und somit wird der Beschattungsstatus um eine Stufe reduziert. Alter Status: '
. $oldShadingStatus
. ' Neuer Status: '
. $FHEM::Automation::ShuttersControl::shutters->getShadingStatus );
. $FHEM::Automation::ShuttersControl::shutters->getShadingStatus
);
}
elsif ($azimuth > $azimuthLeft
&& $azimuth < $azimuthRight
&& $elevation > $FHEM::Automation::ShuttersControl::shutters->getShadingMinElevation
&& $elevation < $FHEM::Automation::ShuttersControl::shutters->getShadingMaxElevation
&& $brightness > $FHEM::Automation::ShuttersControl::shutters->getShadingStateChangeSunny
&& $outTemp > $FHEM::Automation::ShuttersControl::shutters->getShadingMinOutsideTemperature )
&& $elevation >
$FHEM::Automation::ShuttersControl::shutters->getShadingMinElevation
&& $elevation <
$FHEM::Automation::ShuttersControl::shutters->getShadingMaxElevation
&& $brightness >
$FHEM::Automation::ShuttersControl::shutters->getShadingStateChangeSunny
&& $outTemp > $FHEM::Automation::ShuttersControl::shutters
->getShadingMinOutsideTemperature )
{
if ( $FHEM::Automation::ShuttersControl::shutters->getShadingStatus eq 'out'
|| $FHEM::Automation::ShuttersControl::shutters->getShadingStatus eq 'out reserved' )
if ( $FHEM::Automation::ShuttersControl::shutters->getShadingStatus eq
'out'
|| $FHEM::Automation::ShuttersControl::shutters->getShadingStatus
eq 'out reserved' )
{
$FHEM::Automation::ShuttersControl::shutters->setShadingStatus('in reserved');
$FHEM::Automation::ShuttersControl::shutters->setShadingStatus(
'in reserved');
}
if ( $FHEM::Automation::ShuttersControl::shutters->getShadingStatus eq 'in reserved'
and
( int( gettimeofday() ) - $FHEM::Automation::ShuttersControl::shutters->getShadingStatusTimestamp ) >
( $FHEM::Automation::ShuttersControl::shutters->getShadingWaitingPeriod / 2 ) )
if (
$FHEM::Automation::ShuttersControl::shutters->getShadingStatus eq
'in reserved'
and (
int( gettimeofday() ) -
$FHEM::Automation::ShuttersControl::shutters
->getShadingStatusTimestamp ) > (
$FHEM::Automation::ShuttersControl::shutters
->getShadingWaitingPeriod / 2
)
)
{
$FHEM::Automation::ShuttersControl::shutters->setShadingStatus('in');
$FHEM::Automation::ShuttersControl::shutters->setShadingStatus(
'in');
}
Log3( $name, 4,
@ -338,52 +397,75 @@ sub ShadingProcessing {
. " In der In Abfrage, Shadingwert: "
. $FHEM::Automation::ShuttersControl::shutters->getShadingStatus
. ", Zeitstempel: "
. $FHEM::Automation::ShuttersControl::shutters->getShadingStatusTimestamp );
. $FHEM::Automation::ShuttersControl::shutters
->getShadingStatusTimestamp );
FHEM::Automation::ShuttersControl::ASC_Debug( 'ShadingProcessing: '
. $FHEM::Automation::ShuttersControl::shutters->getShuttersDev
. ' - Alle Beschattungsbedingungen wurden erfüllt und somit wird der Beschattungsstatus um eine Stufe angehoben. Alter Status: '
. $oldShadingStatus
. ' Neuer Status: '
. $FHEM::Automation::ShuttersControl::shutters->getShadingStatus );
. $FHEM::Automation::ShuttersControl::shutters->getShadingStatus
);
}
ShadingProcessingDriveCommand( $hash, $shuttersDev )
if (
FHEM::Automation::ShuttersControl::IsAfterShuttersTimeBlocking($shuttersDev)
&& !$FHEM::Automation::ShuttersControl::shutters->getShadingManualDriveStatus
&& $FHEM::Automation::ShuttersControl::shutters->getRoommatesStatus ne 'gotosleep'
&& $FHEM::Automation::ShuttersControl::shutters->getRoommatesStatus ne 'asleep'
FHEM::Automation::ShuttersControl::IsAfterShuttersTimeBlocking(
$shuttersDev)
&& !$FHEM::Automation::ShuttersControl::shutters
->getShadingManualDriveStatus
&& $FHEM::Automation::ShuttersControl::shutters->getRoommatesStatus ne
'gotosleep'
&& $FHEM::Automation::ShuttersControl::shutters->getRoommatesStatus ne
'asleep'
&& (
(
$FHEM::Automation::ShuttersControl::shutters->getShadingStatus eq 'out'
&& $FHEM::Automation::ShuttersControl::shutters->getShadingLastStatus eq 'in'
$FHEM::Automation::ShuttersControl::shutters->getShadingStatus
eq 'out'
&& $FHEM::Automation::ShuttersControl::shutters
->getShadingLastStatus eq 'in'
)
|| ( $FHEM::Automation::ShuttersControl::shutters->getShadingStatus eq 'in'
&& $FHEM::Automation::ShuttersControl::shutters->getShadingLastStatus eq 'out' )
|| ( $FHEM::Automation::ShuttersControl::shutters->getShadingStatus
eq 'in'
&& $FHEM::Automation::ShuttersControl::shutters
->getShadingLastStatus eq 'out' )
)
&& ( $FHEM::Automation::ShuttersControl::shutters->getShadingMode eq 'always'
|| $FHEM::Automation::ShuttersControl::shutters->getShadingMode eq $homemode )
&& ( $FHEM::Automation::ShuttersControl::shutters->getShadingMode eq
'always'
|| $FHEM::Automation::ShuttersControl::shutters->getShadingMode eq
$homemode )
&& (
$FHEM::Automation::ShuttersControl::shutters->getModeUp eq 'always'
|| $FHEM::Automation::ShuttersControl::shutters->getModeUp eq $homemode
$FHEM::Automation::ShuttersControl::shutters->getModeUp eq 'always'
|| $FHEM::Automation::ShuttersControl::shutters->getModeUp eq
$homemode
|| $FHEM::Automation::ShuttersControl::shutters->getModeUp eq 'off'
|| $FHEM::Automation::ShuttersControl::shutters->getModeUp eq 'absent'
|| ( $FHEM::Automation::ShuttersControl::shutters->getModeUp eq 'home'
|| $FHEM::Automation::ShuttersControl::shutters->getModeUp eq
'absent'
|| ( $FHEM::Automation::ShuttersControl::shutters->getModeUp eq
'home'
&& $homemode ne 'asleep' )
)
&& (
(
(
int( gettimeofday() ) -
$FHEM::Automation::ShuttersControl::shutters->getShadingStatusTimestamp
$FHEM::Automation::ShuttersControl::shutters
->getShadingStatusTimestamp
) < 2
&& $FHEM::Automation::ShuttersControl::shutters->getStatus != $FHEM::Automation::ShuttersControl::shutters->getClosedPos
&& $FHEM::Automation::ShuttersControl::shutters->getStatus !=
$FHEM::Automation::ShuttersControl::shutters->getClosedPos
)
|| (
!$FHEM::Automation::ShuttersControl::shutters
->getQueryShuttersPos(
$FHEM::Automation::ShuttersControl::shutters->getShadingPos
)
&& $FHEM::Automation::ShuttersControl::shutters->getIfInShading
)
|| ( !$FHEM::Automation::ShuttersControl::shutters->getQueryShuttersPos( $FHEM::Automation::ShuttersControl::shutters->getShadingPos )
&& $FHEM::Automation::ShuttersControl::shutters->getIfInShading )
|| ( !$FHEM::Automation::ShuttersControl::shutters->getIfInShading
&& $FHEM::Automation::ShuttersControl::shutters->getStatus == $FHEM::Automation::ShuttersControl::shutters->getShadingPos )
&& $FHEM::Automation::ShuttersControl::shutters->getStatus ==
$FHEM::Automation::ShuttersControl::shutters->getShadingPos )
)
);
@ -392,16 +474,21 @@ sub ShadingProcessing {
$shuttersDevHash,
'ASC_ShadingMessage',
'INFO: current shading status is \''
. $FHEM::Automation::ShuttersControl::shutters->getShadingStatus . '\''
. $FHEM::Automation::ShuttersControl::shutters->getShadingStatus
. '\''
. ' - next check in '
. (
(
(
$FHEM::Automation::ShuttersControl::shutters->getShadingLastStatus eq 'out reserved'
|| $FHEM::Automation::ShuttersControl::shutters->getShadingLastStatus eq 'out'
$FHEM::Automation::ShuttersControl::shutters
->getShadingLastStatus eq 'out reserved'
|| $FHEM::Automation::ShuttersControl::shutters
->getShadingLastStatus eq 'out'
)
? $FHEM::Automation::ShuttersControl::shutters->getShadingWaitingPeriod
: $FHEM::Automation::ShuttersControl::shutters->getShadingWaitingPeriod / 2
? $FHEM::Automation::ShuttersControl::shutters
->getShadingWaitingPeriod
: $FHEM::Automation::ShuttersControl::shutters
->getShadingWaitingPeriod / 2
)
) / 60
. 'm'
@ -418,22 +505,31 @@ sub ShadingProcessingDriveCommand {
my $name = $hash->{NAME};
$FHEM::Automation::ShuttersControl::shutters->setShuttersDev($shuttersDev);
my $getShadingPos = $FHEM::Automation::ShuttersControl::shutters->getShadingPos;
my $getStatus = $FHEM::Automation::ShuttersControl::shutters->getStatus;
my $getShadingPos =
$FHEM::Automation::ShuttersControl::shutters->getShadingPos;
my $getStatus = $FHEM::Automation::ShuttersControl::shutters->getStatus;
$FHEM::Automation::ShuttersControl::shutters->setShadingStatus( $FHEM::Automation::ShuttersControl::shutters->getShadingStatus );
$FHEM::Automation::ShuttersControl::shutters->setShadingStatus(
$FHEM::Automation::ShuttersControl::shutters->getShadingStatus );
if (
$FHEM::Automation::ShuttersControl::shutters->getShadingStatus eq 'in'
$FHEM::Automation::ShuttersControl::shutters->getShadingStatus eq 'in'
&& $getShadingPos != $getStatus
&& ( FHEM::Automation::ShuttersControl::CheckIfShuttersWindowRecOpen($shuttersDev) != 2
|| $FHEM::Automation::ShuttersControl::shutters->getShuttersPlace ne 'terrace' )
&& (
FHEM::Automation::ShuttersControl::CheckIfShuttersWindowRecOpen(
$shuttersDev) != 2
|| $FHEM::Automation::ShuttersControl::shutters->getShuttersPlace
ne 'terrace'
)
)
{
$FHEM::Automation::ShuttersControl::shutters->setLastDrive('shading in');
FHEM::Automation::ShuttersControl::ShuttersCommandSet( $hash, $shuttersDev, $getShadingPos );
$FHEM::Automation::ShuttersControl::shutters->setLastDrive(
'shading in');
FHEM::Automation::ShuttersControl::ShuttersCommandSet( $hash,
$shuttersDev, $getShadingPos );
FHEM::Automation::ShuttersControl::ASC_Debug( 'ShadingProcessingDriveCommand: '
FHEM::Automation::ShuttersControl::ASC_Debug(
'ShadingProcessingDriveCommand: '
. $FHEM::Automation::ShuttersControl::shutters->getShuttersDev
. ' - Der aktuelle Beschattungsstatus ist: '
. $FHEM::Automation::ShuttersControl::shutters->getShadingStatus
@ -441,35 +537,50 @@ sub ShadingProcessingDriveCommand {
. $getShadingPos
. ' zum Beschatten gefahren' );
$FHEM::Automation::ShuttersControl::shutters
->setShadingLastPos($getShadingPos);
$FHEM::Automation::ShuttersControl::shutters->setShadingLastPos(
$getShadingPos);
}
elsif ($FHEM::Automation::ShuttersControl::shutters->getShadingStatus eq 'out'
elsif (
$FHEM::Automation::ShuttersControl::shutters->getShadingStatus eq 'out'
&& $getShadingPos == $getStatus )
{
$FHEM::Automation::ShuttersControl::shutters->setLastDrive('shading out');
$FHEM::Automation::ShuttersControl::shutters->setLastDrive(
'shading out');
FHEM::Automation::ShuttersControl::ShuttersCommandSet(
$hash,
$shuttersDev,
(
($getShadingPos == $FHEM::Automation::ShuttersControl::shutters->getLastPos
|| $getShadingPos == $FHEM::Automation::ShuttersControl::shutters->getShadingLastPos)
(
$getShadingPos ==
$FHEM::Automation::ShuttersControl::shutters->getLastPos
|| $getShadingPos ==
$FHEM::Automation::ShuttersControl::shutters
->getShadingLastPos
)
? $FHEM::Automation::ShuttersControl::shutters->getOpenPos
: (
$FHEM::Automation::ShuttersControl::shutters->getQueryShuttersPos( $FHEM::Automation::ShuttersControl::shutters->getLastPos )
$FHEM::Automation::ShuttersControl::shutters
->getQueryShuttersPos(
$FHEM::Automation::ShuttersControl::shutters->getLastPos
)
? (
$FHEM::Automation::ShuttersControl::shutters->getLastPos == $FHEM::Automation::ShuttersControl::shutters->getSleepPos
? $FHEM::Automation::ShuttersControl::shutters->getOpenPos
: $FHEM::Automation::ShuttersControl::shutters->getLastPos
$FHEM::Automation::ShuttersControl::shutters
->getLastPos ==
$FHEM::Automation::ShuttersControl::shutters
->getSleepPos
? $FHEM::Automation::ShuttersControl::shutters
->getOpenPos
: $FHEM::Automation::ShuttersControl::shutters
->getLastPos
)
: $FHEM::Automation::ShuttersControl::shutters->getOpenPos
)
)
)
if ( $FHEM::Automation::ShuttersControl::shutters->getIsDay );
) if ( $FHEM::Automation::ShuttersControl::shutters->getIsDay );
FHEM::Automation::ShuttersControl::ASC_Debug( 'ShadingProcessingDriveCommand: '
FHEM::Automation::ShuttersControl::ASC_Debug(
'ShadingProcessingDriveCommand: '
. $FHEM::Automation::ShuttersControl::shutters->getShuttersDev
. ' - Der aktuelle Beschattungsstatus ist: '
. $FHEM::Automation::ShuttersControl::shutters->getShadingStatus
@ -489,14 +600,15 @@ sub ShadingProcessingDriveCommand {
. $FHEM::Automation::ShuttersControl::shutters->getShadingStatus
. ', Beschattungsstatus Zeitstempel: '
. strftime(
"%Y.%m.%e %T", localtime( $FHEM::Automation::ShuttersControl::shutters->getShadingStatusTimestamp )
"%Y.%m.%e %T",
localtime(
$FHEM::Automation::ShuttersControl::shutters
->getShadingStatusTimestamp
)
)
);
return;
}
1;