add ShadingLastStatus to compare shading in and shading out
This commit is contained in:
parent
755984fd1d
commit
72633c9fb1
@ -48,7 +48,7 @@ use strict;
|
|||||||
use warnings;
|
use warnings;
|
||||||
use FHEM::Meta;
|
use FHEM::Meta;
|
||||||
|
|
||||||
my $version = '0.6.17';
|
my $version = '0.6.17.3';
|
||||||
|
|
||||||
sub AutoShuttersControl_Initialize($) {
|
sub AutoShuttersControl_Initialize($) {
|
||||||
my ($hash) = @_;
|
my ($hash) = @_;
|
||||||
@ -718,6 +718,9 @@ sub ShuttersDeviceScan($) {
|
|||||||
$shutters->setShadingStatus(
|
$shutters->setShadingStatus(
|
||||||
( $shutters->getStatus != $shutters->getShadingPos ? 'out' : 'in' )
|
( $shutters->getStatus != $shutters->getShadingPos ? 'out' : 'in' )
|
||||||
);
|
);
|
||||||
|
$shutters->setShadingLastStatus(
|
||||||
|
( $shutters->getStatus != $shutters->getShadingPos ? 'in' : 'out' )
|
||||||
|
);
|
||||||
readingsSingleUpdate( $defs{$_}, 'ASC_Enable', 'on', 0 )
|
readingsSingleUpdate( $defs{$_}, 'ASC_Enable', 'on', 0 )
|
||||||
if ( ReadingsVal( $_, 'ASC_Enable', 'none' ) eq 'none' );
|
if ( ReadingsVal( $_, 'ASC_Enable', 'none' ) eq 'none' );
|
||||||
}
|
}
|
||||||
@ -1823,6 +1826,7 @@ sub EventProcessingShadingBrightness($@) {
|
|||||||
and $shutters->getWindProtectionStatus eq 'unprotected' )
|
and $shutters->getWindProtectionStatus eq 'unprotected' )
|
||||||
{
|
{
|
||||||
$shutters->setShadingStatus('out');
|
$shutters->setShadingStatus('out');
|
||||||
|
$shutters->setShadingLastStatus('in');
|
||||||
ShadingProcessingDriveCommand( $hash, $shuttersDev );
|
ShadingProcessingDriveCommand( $hash, $shuttersDev );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1903,9 +1907,12 @@ sub EventProcessingTwilightDevice($@) {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
$shutters->setShadingStatus('out')
|
if ( not IsDay($shuttersDev)
|
||||||
if ( not IsDay($shuttersDev)
|
and $shutters->getShadingStatus ne 'out' )
|
||||||
and $shutters->getShadingStatus ne 'out' );
|
{
|
||||||
|
$shutters->setShadingStatus('out')
|
||||||
|
$shutters->setShadingLastStatus('in')
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1920,6 +1927,11 @@ sub ShadingProcessing($@) {
|
|||||||
) = @_;
|
) = @_;
|
||||||
my $name = $hash->{NAME};
|
my $name = $hash->{NAME};
|
||||||
$shutters->setShuttersDev($shuttersDev);
|
$shutters->setShuttersDev($shuttersDev);
|
||||||
|
$shutters->setShadingLastStatus($shutters->getShadingStatus)
|
||||||
|
if ( $shutters->getShadingLastStatus ne $shutters->getShadingStatus
|
||||||
|
and ($shutters->getShadingStatus eq 'in'
|
||||||
|
or $shutters->getShadingStatus eq 'out')
|
||||||
|
);
|
||||||
|
|
||||||
ASC_Debug(
|
ASC_Debug(
|
||||||
'ShadingProcessing: '
|
'ShadingProcessing: '
|
||||||
@ -2088,8 +2100,11 @@ sub ShadingProcessing($@) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
ShadingProcessingDriveCommand( $hash, $shuttersDev )
|
ShadingProcessingDriveCommand( $hash, $shuttersDev )
|
||||||
if ( $shutters->getShadingStatus eq 'out'
|
if ( ($shutters->getShadingStatus eq 'out'
|
||||||
or $shutters->getShadingStatus eq 'in' );
|
and $shutters->getShadingLastStatus eq 'in')
|
||||||
|
or ($shutters->getShadingStatus eq 'in'
|
||||||
|
and $shutters->getShadingLastStatus eq 'out')
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
sub ShadingProcessingDriveCommand($$) {
|
sub ShadingProcessingDriveCommand($$) {
|
||||||
@ -4003,6 +4018,17 @@ sub setShadingStatus {
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
sub setShadingLastStatus {
|
||||||
|
my ( $self, $value ) = @_;
|
||||||
|
### Werte für value = in, out
|
||||||
|
|
||||||
|
$self->{ $self->{shuttersDev} }{ShadingLastStatus}{VAL} = $value
|
||||||
|
if ( defined($value) );
|
||||||
|
$self->{ $self->{shuttersDev} }{ShadingLastStatus}{TIME} = int( gettimeofday() )
|
||||||
|
if ( defined( $self->{ $self->{shuttersDev} }{ShadingLastStatus} ) );
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
sub setWindProtectionStatus { # Werte protected, unprotected
|
sub setWindProtectionStatus { # Werte protected, unprotected
|
||||||
my ( $self, $value ) = @_;
|
my ( $self, $value ) = @_;
|
||||||
|
|
||||||
@ -4027,6 +4053,14 @@ sub getShadingStatus { # Werte für value = in, out, in reserved, out reserved
|
|||||||
and defined( $self->{ $self->{shuttersDev} }{ShadingStatus}{VAL} ) );
|
and defined( $self->{ $self->{shuttersDev} }{ShadingStatus}{VAL} ) );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
sub getShadingLastStatus { # Werte für value = in, out
|
||||||
|
my $self = shift;
|
||||||
|
|
||||||
|
return $self->{ $self->{shuttersDev} }{ShadingLastStatus}{VAL}
|
||||||
|
if ( defined( $self->{ $self->{shuttersDev} }{ShadingLastStatus} )
|
||||||
|
and defined( $self->{ $self->{shuttersDev} }{ShadingLastStatus}{VAL} ) );
|
||||||
|
}
|
||||||
|
|
||||||
sub getIfInShading {
|
sub getIfInShading {
|
||||||
my $self = shift;
|
my $self = shift;
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user