change drive code
This commit is contained in:
parent
f504135628
commit
c92e592270
@ -38,7 +38,7 @@ package main;
|
|||||||
use strict;
|
use strict;
|
||||||
use warnings;
|
use warnings;
|
||||||
|
|
||||||
my $version = "0.1.84";
|
my $version = "0.1.85";
|
||||||
|
|
||||||
sub AutoShuttersControl_Initialize($) {
|
sub AutoShuttersControl_Initialize($) {
|
||||||
my ($hash) = @_;
|
my ($hash) = @_;
|
||||||
@ -836,20 +836,29 @@ sub RoommateEventProcessing($@) {
|
|||||||
)
|
)
|
||||||
{
|
{
|
||||||
|
|
||||||
if ( ($shutters->getRoommatesLastStatus eq 'asleep'
|
if (
|
||||||
or $shutters->getRoommatesLastStatus eq 'awoken')
|
(
|
||||||
|
$shutters->getRoommatesLastStatus eq 'asleep'
|
||||||
|
or $shutters->getRoommatesLastStatus eq 'awoken'
|
||||||
|
)
|
||||||
and $shutters->getModeUp eq 'home'
|
and $shutters->getModeUp eq 'home'
|
||||||
and IsDay( $hash, $shuttersDev ) )
|
and IsDay( $hash, $shuttersDev )
|
||||||
|
)
|
||||||
{
|
{
|
||||||
$shutters->setLastDrive('roommate awoken');
|
$shutters->setLastDrive('roommate awoken');
|
||||||
ShuttersCommandSet( $hash, $shuttersDev, $shutters->getOpenPos );
|
ShuttersCommandSet( $hash, $shuttersDev,
|
||||||
|
$shutters->getOpenPos );
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( ($shutters->getRoommatesLastStatus eq 'absent'
|
if (
|
||||||
|
(
|
||||||
|
$shutters->getRoommatesLastStatus eq 'absent'
|
||||||
or $shutters->getRoommatesLastStatus eq 'gone'
|
or $shutters->getRoommatesLastStatus eq 'gone'
|
||||||
or $shutters->getRoommatesLastStatus eq 'home')
|
or $shutters->getRoommatesLastStatus eq 'home'
|
||||||
|
)
|
||||||
and $shutters->getModeUp eq 'home'
|
and $shutters->getModeUp eq 'home'
|
||||||
and $shutters->getRoommatesStatus eq 'home' )
|
and $shutters->getRoommatesStatus eq 'home'
|
||||||
|
)
|
||||||
{
|
{
|
||||||
if ( not IsDay( $hash, $shuttersDev ) ) {
|
if ( not IsDay( $hash, $shuttersDev ) ) {
|
||||||
my $position;
|
my $position;
|
||||||
@ -864,16 +873,22 @@ sub RoommateEventProcessing($@) {
|
|||||||
ShuttersCommandSet( $hash, $shuttersDev, $position );
|
ShuttersCommandSet( $hash, $shuttersDev, $position );
|
||||||
}
|
}
|
||||||
elsif ( IsDay( $hash, $shuttersDev )
|
elsif ( IsDay( $hash, $shuttersDev )
|
||||||
and $shutters->getStatus == $shutters->getClosedPos) {
|
and $shutters->getStatus == $shutters->getClosedPos )
|
||||||
|
{
|
||||||
$shutters->setLastDrive('roommate home');
|
$shutters->setLastDrive('roommate home');
|
||||||
ShuttersCommandSet( $hash, $shuttersDev, $shutters->getOpenPos );
|
ShuttersCommandSet( $hash, $shuttersDev,
|
||||||
|
$shutters->getOpenPos );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
elsif ( ($shutters->getModeDown eq 'always'
|
elsif (
|
||||||
or $shutters->getModeUp eq 'home' )
|
(
|
||||||
|
$shutters->getModeDown eq 'always'
|
||||||
|
or $shutters->getModeUp eq 'home'
|
||||||
|
)
|
||||||
and ( $1 eq 'gotosleep' or $1 eq 'asleep' )
|
and ( $1 eq 'gotosleep' or $1 eq 'asleep' )
|
||||||
and $ascDev->getAutoShuttersControlEvening eq 'on' )
|
and $ascDev->getAutoShuttersControlEvening eq 'on'
|
||||||
|
)
|
||||||
{
|
{
|
||||||
my $position;
|
my $position;
|
||||||
if ( CheckIfShuttersWindowRecOpen($shuttersDev) == 0
|
if ( CheckIfShuttersWindowRecOpen($shuttersDev) == 0
|
||||||
@ -907,10 +922,12 @@ sub ResidentsEventProcessing($@) {
|
|||||||
foreach my $shuttersDev ( @{ $hash->{helper}{shuttersList} } ) {
|
foreach my $shuttersDev ( @{ $hash->{helper}{shuttersList} } ) {
|
||||||
$shutters->setShuttersDev($shuttersDev);
|
$shutters->setShuttersDev($shuttersDev);
|
||||||
|
|
||||||
if ( CheckIfShuttersWindowRecOpen($shuttersDev) != 0
|
if (
|
||||||
|
CheckIfShuttersWindowRecOpen($shuttersDev) != 0
|
||||||
and $shutters->getSelfDefenseExclude eq 'off'
|
and $shutters->getSelfDefenseExclude eq 'off'
|
||||||
or ( $shutters->getUpMode eq 'absent'
|
or ( $shutters->getUpMode eq 'absent'
|
||||||
and not IsDay( $hash, $shuttersDev )) )
|
and not IsDay( $hash, $shuttersDev ) )
|
||||||
|
)
|
||||||
{
|
{
|
||||||
$shutters->setLastDrive('selfeDefense active');
|
$shutters->setLastDrive('selfeDefense active');
|
||||||
$shutters->setDriveCmd( $shutters->getClosedPos );
|
$shutters->setDriveCmd( $shutters->getClosedPos );
|
||||||
@ -952,7 +969,8 @@ sub ResidentsEventProcessing($@) {
|
|||||||
$shutters->setLastDrive('residents home');
|
$shutters->setLastDrive('residents home');
|
||||||
$shutters->setDriveCmd( $shutters->getOpenPos );
|
$shutters->setDriveCmd( $shutters->getOpenPos );
|
||||||
}
|
}
|
||||||
elsif ( $ascDev->getSelfDefense eq 'on'
|
elsif (
|
||||||
|
$ascDev->getSelfDefense eq 'on'
|
||||||
and CheckIfShuttersWindowRecOpen($shuttersDev) != 0
|
and CheckIfShuttersWindowRecOpen($shuttersDev) != 0
|
||||||
and $shutters->getSelfDefenseExclude eq 'off'
|
and $shutters->getSelfDefenseExclude eq 'off'
|
||||||
or ( $ascDev->getResidentsLastStatus eq 'gone'
|
or ( $ascDev->getResidentsLastStatus eq 'gone'
|
||||||
@ -1158,6 +1176,7 @@ sub ShuttersCommandSet($$$) {
|
|||||||
$ascDev->setName($name);
|
$ascDev->setName($name);
|
||||||
|
|
||||||
$shutters->setShuttersDev($shuttersDev);
|
$shutters->setShuttersDev($shuttersDev);
|
||||||
|
|
||||||
# readingsBeginUpdate($hash);
|
# readingsBeginUpdate($hash);
|
||||||
|
|
||||||
if (
|
if (
|
||||||
@ -1186,6 +1205,7 @@ sub ShuttersCommandSet($$$) {
|
|||||||
; # setzt den Wert auf none da der Rolladen nun gesteuert werden kann.
|
; # setzt den Wert auf none da der Rolladen nun gesteuert werden kann.
|
||||||
$ascDev->setLastPosReading;
|
$ascDev->setLastPosReading;
|
||||||
}
|
}
|
||||||
|
|
||||||
# readingsEndUpdate( $hash, 1 );
|
# readingsEndUpdate( $hash, 1 );
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1198,7 +1218,8 @@ sub CreateSunRiseSetShuttersTimer($$) {
|
|||||||
$ascDev->setName($name);
|
$ascDev->setName($name);
|
||||||
return if ( IsDisabled($name) );
|
return if ( IsDisabled($name) );
|
||||||
|
|
||||||
my $shuttersSunriseUnixtime = ShuttersSunrise( $hash, $shuttersDev, 'unix' );
|
my $shuttersSunriseUnixtime =
|
||||||
|
ShuttersSunrise( $hash, $shuttersDev, 'unix' );
|
||||||
my $shuttersSunsetUnixtime = ShuttersSunset( $hash, $shuttersDev, 'unix' );
|
my $shuttersSunsetUnixtime = ShuttersSunset( $hash, $shuttersDev, 'unix' );
|
||||||
|
|
||||||
$shutters->setSunriseUnixTime($shuttersSunriseUnixtime);
|
$shutters->setSunriseUnixTime($shuttersSunriseUnixtime);
|
||||||
@ -1329,7 +1350,6 @@ sub SunSetShuttersAfterTimerFn($) {
|
|||||||
my $hash = $funcHash->{hash};
|
my $hash = $funcHash->{hash};
|
||||||
my $shuttersDev = $funcHash->{shuttersdevice};
|
my $shuttersDev = $funcHash->{shuttersdevice};
|
||||||
$shutters->setShuttersDev($shuttersDev);
|
$shutters->setShuttersDev($shuttersDev);
|
||||||
$shutters->setLastDrive('night close');
|
|
||||||
$ascDev->setName( $hash->{NAME} );
|
$ascDev->setName( $hash->{NAME} );
|
||||||
|
|
||||||
my $posValue;
|
my $posValue;
|
||||||
@ -1343,10 +1363,12 @@ sub SunSetShuttersAfterTimerFn($) {
|
|||||||
my $homemode = $shutters->getRoommatesStatus;
|
my $homemode = $shutters->getRoommatesStatus;
|
||||||
$homemode = $ascDev->getResidentsStatus if ( $homemode eq 'none' );
|
$homemode = $ascDev->getResidentsStatus if ( $homemode eq 'none' );
|
||||||
|
|
||||||
ShuttersCommandSet( $hash, $shuttersDev, $posValue )
|
|
||||||
if ( $shutters->getModeDown eq $homemode
|
if ( $shutters->getModeDown eq $homemode
|
||||||
or $homemode eq 'none'
|
or $homemode eq 'none'
|
||||||
or $shutters->getModeDown eq 'always' );
|
or $shutters->getModeDown eq 'always' ) {
|
||||||
|
$shutters->setLastDrive('night close');
|
||||||
|
ShuttersCommandSet( $hash, $shuttersDev, $posValue );
|
||||||
|
}
|
||||||
|
|
||||||
CreateSunRiseSetShuttersTimer( $hash, $shuttersDev );
|
CreateSunRiseSetShuttersTimer( $hash, $shuttersDev );
|
||||||
}
|
}
|
||||||
@ -1357,7 +1379,6 @@ sub SunRiseShuttersAfterTimerFn($) {
|
|||||||
my $hash = $funcHash->{hash};
|
my $hash = $funcHash->{hash};
|
||||||
my $shuttersDev = $funcHash->{shuttersdevice};
|
my $shuttersDev = $funcHash->{shuttersdevice};
|
||||||
$shutters->setShuttersDev($shuttersDev);
|
$shutters->setShuttersDev($shuttersDev);
|
||||||
$shutters->setLastDrive('day open');
|
|
||||||
$ascDev->setName( $hash->{NAME} );
|
$ascDev->setName( $hash->{NAME} );
|
||||||
|
|
||||||
my $homemode = $shutters->getRoommatesStatus;
|
my $homemode = $shutters->getRoommatesStatus;
|
||||||
@ -1367,7 +1388,6 @@ sub SunRiseShuttersAfterTimerFn($) {
|
|||||||
or $homemode eq 'none'
|
or $homemode eq 'none'
|
||||||
or $shutters->getModeUp eq 'always' )
|
or $shutters->getModeUp eq 'always' )
|
||||||
{
|
{
|
||||||
ShuttersCommandSet( $hash, $shuttersDev, $shutters->getOpenPos )
|
|
||||||
if (
|
if (
|
||||||
(
|
(
|
||||||
$shutters->getRoommatesStatus eq 'home'
|
$shutters->getRoommatesStatus eq 'home'
|
||||||
@ -1379,7 +1399,11 @@ sub SunRiseShuttersAfterTimerFn($) {
|
|||||||
and $ascDev->getSelfDefense eq 'off'
|
and $ascDev->getSelfDefense eq 'off'
|
||||||
or ( $ascDev->getSelfDefense eq 'on'
|
or ( $ascDev->getSelfDefense eq 'on'
|
||||||
and CheckIfShuttersWindowRecOpen($shuttersDev) == 0 )
|
and CheckIfShuttersWindowRecOpen($shuttersDev) == 0 )
|
||||||
);
|
)
|
||||||
|
{
|
||||||
|
$shutters->setLastDrive('day open');
|
||||||
|
ShuttersCommandSet( $hash, $shuttersDev, $shutters->getOpenPos );
|
||||||
|
}
|
||||||
}
|
}
|
||||||
CreateSunRiseSetShuttersTimer( $hash, $shuttersDev );
|
CreateSunRiseSetShuttersTimer( $hash, $shuttersDev );
|
||||||
}
|
}
|
||||||
@ -1913,7 +1937,9 @@ sub SetCmdFn($) {
|
|||||||
. $posValue );
|
. $posValue );
|
||||||
|
|
||||||
$shutters->setLastDriveReading if ( $shutters->getLastPos != $posValue );
|
$shutters->setLastDriveReading if ( $shutters->getLastPos != $posValue );
|
||||||
$shutters->setLastDrive(ReadingsVal($shuttersDev,'ASC_ShuttersLastDrive','none')) if ( $shutters->getLastPos == $posValue );
|
$shutters->setLastDrive(
|
||||||
|
ReadingsVal( $shuttersDev, 'ASC_ShuttersLastDrive', 'none' ) )
|
||||||
|
if ( $shutters->getLastPos == $posValue );
|
||||||
}
|
}
|
||||||
|
|
||||||
########## Begin der Klassendeklarierungen für OOP (Objektorientierte Programmierung) #########################
|
########## Begin der Klassendeklarierungen für OOP (Objektorientierte Programmierung) #########################
|
||||||
@ -1968,18 +1994,19 @@ sub getShuttersDev {
|
|||||||
sub setDriveCmd {
|
sub setDriveCmd {
|
||||||
my ( $self, $posValue ) = @_;
|
my ( $self, $posValue ) = @_;
|
||||||
my $offSet = 0;
|
my $offSet = 0;
|
||||||
my %h = (shuttersDev => $self->{shuttersDev},
|
my %h = (
|
||||||
posValue => $posValue,);
|
shuttersDev => $self->{shuttersDev},
|
||||||
|
posValue => $posValue,
|
||||||
|
);
|
||||||
$offSet = $shutters->getOffset if ( $shutters->getOffset > 0 );
|
$offSet = $shutters->getOffset if ( $shutters->getOffset > 0 );
|
||||||
$offSet = $ascDev->getShuttersOffset if ( $shutters->getOffset == -1 );
|
$offSet = $ascDev->getShuttersOffset if ( $shutters->getOffset == -1 );
|
||||||
|
|
||||||
InternalTimer( gettimeofday() + int( rand($offSet) ),
|
InternalTimer( gettimeofday() + int( rand($offSet) ),
|
||||||
'AutoShuttersControl::SetCmdFn',
|
'AutoShuttersControl::SetCmdFn', \%h )
|
||||||
\%h )
|
|
||||||
if ( $offSet > 0 );
|
if ( $offSet > 0 );
|
||||||
AutoShuttersControl::SetCmdFn( \%h ) if ( $offSet == 0 );
|
AutoShuttersControl::SetCmdFn( \%h ) if ( $offSet == 0 );
|
||||||
|
|
||||||
return 0
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
sub setSunsetUnixTime {
|
sub setSunsetUnixTime {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user