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