fix undefined in fhem.pl
This commit is contained in:
@ -718,7 +718,7 @@ sub ShuttersDeviceScan($) {
|
|||||||
$shutters->setLastPos( $shutters->getStatus );
|
$shutters->setLastPos( $shutters->getStatus );
|
||||||
$shutters->setDelayCmd('none');
|
$shutters->setDelayCmd('none');
|
||||||
$shutters->setNoOffset(0);
|
$shutters->setNoOffset(0);
|
||||||
$shutters->setSelfDefenseAbsent(0,0);
|
$shutters->setSelfDefenseAbsent( 0, 0 );
|
||||||
$shutters->setPosSetCmd( $posSetCmds{ $defs{$_}->{TYPE} } );
|
$shutters->setPosSetCmd( $posSetCmds{ $defs{$_}->{TYPE} } );
|
||||||
$shutters->setShadingStatus(
|
$shutters->setShadingStatus(
|
||||||
( $shutters->getStatus != $shutters->getShadingPos ? 'out' : 'in' )
|
( $shutters->getStatus != $shutters->getShadingPos ? 'out' : 'in' )
|
||||||
@ -1222,13 +1222,18 @@ sub EventProcessingResidents($@) {
|
|||||||
)
|
)
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
if ( ( CheckIfShuttersWindowRecOpen($shuttersDev) != 0
|
if (
|
||||||
or $shutters->getSelfDefenseMode eq 'absent' )
|
(
|
||||||
|
CheckIfShuttersWindowRecOpen($shuttersDev) != 0
|
||||||
|
or $shutters->getSelfDefenseMode eq 'absent'
|
||||||
|
)
|
||||||
and $ascDev->getSelfDefense eq 'on'
|
and $ascDev->getSelfDefense eq 'on'
|
||||||
and $shutters->getSelfDefenseExclude eq 'off' )
|
and $shutters->getSelfDefenseExclude eq 'off'
|
||||||
|
)
|
||||||
{
|
{
|
||||||
$shutters->setLastDrive('selfDefense active');
|
$shutters->setLastDrive('selfDefense active');
|
||||||
$shutters->setSelfDefenseAbsent(0,1) # der erste Wert ist ob der timer schon läuft, der zweite ist ob self defense aktiv ist durch die Bedingungen
|
$shutters->setSelfDefenseAbsent( 0, 1
|
||||||
|
) # der erste Wert ist ob der timer schon läuft, der zweite ist ob self defense aktiv ist durch die Bedingungen
|
||||||
if ( CheckIfShuttersWindowRecOpen($shuttersDev) == 0
|
if ( CheckIfShuttersWindowRecOpen($shuttersDev) == 0
|
||||||
and $shutters->getSelfDefenseMode eq 'absent' );
|
and $shutters->getSelfDefenseMode eq 'absent' );
|
||||||
}
|
}
|
||||||
@ -1240,7 +1245,7 @@ sub EventProcessingResidents($@) {
|
|||||||
}
|
}
|
||||||
elsif ( $events =~ m#$reading:\s(gone)#
|
elsif ( $events =~ m#$reading:\s(gone)#
|
||||||
and $ascDev->getSelfDefense eq 'on'
|
and $ascDev->getSelfDefense eq 'on'
|
||||||
and $shutters->getSelfDefenseMode eq 'gone')
|
and $shutters->getSelfDefenseMode eq 'gone' )
|
||||||
{
|
{
|
||||||
foreach my $shuttersDev ( @{ $hash->{helper}{shuttersList} } ) {
|
foreach my $shuttersDev ( @{ $hash->{helper}{shuttersList} } ) {
|
||||||
$shutters->setShuttersDev($shuttersDev);
|
$shutters->setShuttersDev($shuttersDev);
|
||||||
@ -1281,8 +1286,10 @@ sub EventProcessingResidents($@) {
|
|||||||
$shutters->setDriveCmd( $shutters->getClosedPos );
|
$shutters->setDriveCmd( $shutters->getClosedPos );
|
||||||
}
|
}
|
||||||
elsif (
|
elsif (
|
||||||
( $shutters->getShadingMode eq 'home'
|
(
|
||||||
or $shutters->getShadingMode eq 'always' )
|
$shutters->getShadingMode eq 'home'
|
||||||
|
or $shutters->getShadingMode eq 'always'
|
||||||
|
)
|
||||||
and IsDay($shuttersDev)
|
and IsDay($shuttersDev)
|
||||||
and $shutters->getIfInShading
|
and $shutters->getIfInShading
|
||||||
and $shutters->getStatus != $shutters->getShadingPos
|
and $shutters->getStatus != $shutters->getShadingPos
|
||||||
@ -1305,31 +1312,35 @@ sub EventProcessingResidents($@) {
|
|||||||
$shutters->setLastDrive('shading out');
|
$shutters->setLastDrive('shading out');
|
||||||
$shutters->setDriveCmd( $shutters->getLastPos );
|
$shutters->setDriveCmd( $shutters->getLastPos );
|
||||||
}
|
}
|
||||||
elsif ( (
|
elsif (
|
||||||
|
(
|
||||||
$ascDev->getSelfDefense eq 'on'
|
$ascDev->getSelfDefense eq 'on'
|
||||||
and $shutters->getSelfDefenseExclude eq 'off'
|
and $shutters->getSelfDefenseExclude eq 'off'
|
||||||
or ( $getResidentsLastStatus eq 'gone'
|
or ( $getResidentsLastStatus eq 'gone'
|
||||||
and $shutters->getShuttersPlace eq 'terrace' ) )
|
and $shutters->getShuttersPlace eq 'terrace' )
|
||||||
|
)
|
||||||
and not $shutters->getIfInShading
|
and not $shutters->getIfInShading
|
||||||
and ( $getResidentsLastStatus eq 'gone'
|
and ( $getResidentsLastStatus eq 'gone'
|
||||||
or $getResidentsLastStatus eq 'absent' )
|
or $getResidentsLastStatus eq 'absent' )
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
RemoveInternalTimer($shutters->getSelfDefenseAbsentTimerhash)
|
RemoveInternalTimer( $shutters->getSelfDefenseAbsentTimerhash )
|
||||||
if ( $getResidentsLastStatus eq 'absent'
|
if ( $getResidentsLastStatus eq 'absent'
|
||||||
and $ascDev->getSelfDefense eq 'on'
|
and $ascDev->getSelfDefense eq 'on'
|
||||||
and $shutters->getSelfDefenseExclude eq 'off'
|
and $shutters->getSelfDefenseExclude eq 'off'
|
||||||
and CheckIfShuttersWindowRecOpen($shuttersDev) == 0
|
and CheckIfShuttersWindowRecOpen($shuttersDev) == 0
|
||||||
and not $shutters->getSelfDefenseAbsent
|
and not $shutters->getSelfDefenseAbsent
|
||||||
and $shutters->getSelfDefenseAbsentTimerrun);
|
and $shutters->getSelfDefenseAbsentTimerrun );
|
||||||
|
|
||||||
if ( $shutters->getStatus == $shutters->getClosedPos ) {
|
if ( $shutters->getStatus == $shutters->getClosedPos ) {
|
||||||
$shutters->setHardLockOut('on')
|
$shutters->setHardLockOut('on')
|
||||||
if ( CheckIfShuttersWindowRecOpen($shuttersDev) == 2
|
if (
|
||||||
|
CheckIfShuttersWindowRecOpen($shuttersDev) == 2
|
||||||
and $shutters->getShuttersPlace eq 'terrace'
|
and $shutters->getShuttersPlace eq 'terrace'
|
||||||
and ($getModeUp eq 'absent'
|
and ( $getModeUp eq 'absent'
|
||||||
or $getModeUp eq 'off')
|
or $getModeUp eq 'off' )
|
||||||
and CheckIfShuttersWindowRecOpen($shuttersDev) != 0);
|
and CheckIfShuttersWindowRecOpen($shuttersDev) != 0
|
||||||
|
);
|
||||||
|
|
||||||
$shutters->setLastDrive('selfDefense inactive');
|
$shutters->setLastDrive('selfDefense inactive');
|
||||||
$shutters->setDriveCmd(
|
$shutters->setDriveCmd(
|
||||||
@ -1770,7 +1781,8 @@ sub EventProcessingShadingBrightness($@) {
|
|||||||
and $shutters->getRainProtectionStatus eq 'unprotected'
|
and $shutters->getRainProtectionStatus eq 'unprotected'
|
||||||
and $shutters->getWindProtectionStatus eq 'unprotected' )
|
and $shutters->getWindProtectionStatus eq 'unprotected' )
|
||||||
{
|
{
|
||||||
$outTemp = $shutters->getOutTemp if ( $shutters->getOutTemp != -100 );
|
$outTemp = $shutters->getOutTemp
|
||||||
|
if ( $shutters->getOutTemp != -100 );
|
||||||
ShadingProcessing(
|
ShadingProcessing(
|
||||||
$hash,
|
$hash,
|
||||||
$shuttersDev,
|
$shuttersDev,
|
||||||
@ -1830,7 +1842,8 @@ sub EventProcessingTwilightDevice($@) {
|
|||||||
|
|
||||||
my $homemode = $shutters->getRoommatesStatus;
|
my $homemode = $shutters->getRoommatesStatus;
|
||||||
$homemode = $ascDev->getResidentsStatus if ( $homemode eq 'none' );
|
$homemode = $ascDev->getResidentsStatus if ( $homemode eq 'none' );
|
||||||
$outTemp = $shutters->getOutTemp if ( $shutters->getOutTemp != -100 );
|
$outTemp = $shutters->getOutTemp
|
||||||
|
if ( $shutters->getOutTemp != -100 );
|
||||||
|
|
||||||
ASC_Debug( 'EventProcessingTwilightDevice: '
|
ASC_Debug( 'EventProcessingTwilightDevice: '
|
||||||
. $shutters->getShuttersDev
|
. $shutters->getShuttersDev
|
||||||
@ -1841,8 +1854,7 @@ sub EventProcessingTwilightDevice($@) {
|
|||||||
|
|
||||||
if ( $ascDev->getAutoShuttersControlShading eq 'on'
|
if ( $ascDev->getAutoShuttersControlShading eq 'on'
|
||||||
and $shutters->getRainProtectionStatus eq 'unprotected'
|
and $shutters->getRainProtectionStatus eq 'unprotected'
|
||||||
and $shutters->getWindProtectionStatus eq 'unprotected'
|
and $shutters->getWindProtectionStatus eq 'unprotected' )
|
||||||
)
|
|
||||||
{
|
{
|
||||||
ShadingProcessing(
|
ShadingProcessing(
|
||||||
$hash,
|
$hash,
|
||||||
@ -1972,7 +1984,7 @@ sub ShadingProcessing($@) {
|
|||||||
"AutoShuttersControl ($name) - Shading Processing - Es ist Sonnenuntergang vorbei oder die Aussentemperatur unterhalb der Shading Temperatur "
|
"AutoShuttersControl ($name) - Shading Processing - Es ist Sonnenuntergang vorbei oder die Aussentemperatur unterhalb der Shading Temperatur "
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
elsif ( $azimuth < $winPosMin
|
elsif ($azimuth < $winPosMin
|
||||||
or $azimuth > $winPosMax
|
or $azimuth > $winPosMax
|
||||||
or $elevation < $shutters->getShadingMinElevation
|
or $elevation < $shutters->getShadingMinElevation
|
||||||
or $elevation > $shutters->getShadingMaxElevation
|
or $elevation > $shutters->getShadingMaxElevation
|
||||||
@ -2254,7 +2266,7 @@ sub ShuttersCommandSet($$$) {
|
|||||||
and $ascDev->getAutoShuttersControlComfort eq 'on'
|
and $ascDev->getAutoShuttersControlComfort eq 'on'
|
||||||
and $shutters->getVentilateOpen eq 'off'
|
and $shutters->getVentilateOpen eq 'off'
|
||||||
and $shutters->getShuttersPlace eq 'window'
|
and $shutters->getShuttersPlace eq 'window'
|
||||||
and $shutters->getLockOut ne 'off')
|
and $shutters->getLockOut ne 'off' )
|
||||||
or (
|
or (
|
||||||
CheckIfShuttersWindowRecOpen($shuttersDev) == 2
|
CheckIfShuttersWindowRecOpen($shuttersDev) == 2
|
||||||
and ( $shutters->getLockOut eq 'soft'
|
and ( $shutters->getLockOut eq 'soft'
|
||||||
@ -2502,17 +2514,20 @@ sub SunSetShuttersAfterTimerFn($) {
|
|||||||
)
|
)
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
if ( $funcHash->{privacyMode} == 1 )
|
|
||||||
{
|
if ( $funcHash->{privacyMode} == 1 ) {
|
||||||
$shutters->setPrivacyDownStatus(1);
|
$shutters->setPrivacyDownStatus(1);
|
||||||
$shutters->setLastDrive('privacy position');
|
$shutters->setLastDrive('privacy position');
|
||||||
ShuttersCommandSet( $hash, $shuttersDev,
|
ShuttersCommandSet( $hash, $shuttersDev,
|
||||||
PositionValueWindowRec($shuttersDev,$shutters->getClosedPos) );
|
PositionValueWindowRec( $shuttersDev, $shutters->getClosedPos )
|
||||||
|
);
|
||||||
}
|
}
|
||||||
elsif ( $funcHash->{privacyMode} == 0 ) {
|
elsif ( $funcHash->{privacyMode} == 0 ) {
|
||||||
$shutters->setPrivacyDownStatus(0);
|
$shutters->setPrivacyDownStatus(0);
|
||||||
$shutters->setLastDrive('night close');
|
$shutters->setLastDrive('night close');
|
||||||
ShuttersCommandSet( $hash, $shuttersDev, PositionValueWindowRec($shuttersDev,$shutters->getClosedPos) );
|
ShuttersCommandSet( $hash, $shuttersDev,
|
||||||
|
PositionValueWindowRec( $shuttersDev, $shutters->getClosedPos )
|
||||||
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2743,30 +2758,30 @@ sub GetMonitoredDevs($) {
|
|||||||
#################################
|
#################################
|
||||||
|
|
||||||
sub PositionValueWindowRec($$) {
|
sub PositionValueWindowRec($$) {
|
||||||
my ($shuttersDev,$posValue) = @_;
|
my ( $shuttersDev, $posValue ) = @_;
|
||||||
|
|
||||||
if ( CheckIfShuttersWindowRecOpen($shuttersDev) == 1
|
if ( CheckIfShuttersWindowRecOpen($shuttersDev) == 1
|
||||||
and $shutters->getVentilateOpen eq 'on')
|
and $shutters->getVentilateOpen eq 'on' )
|
||||||
{
|
{
|
||||||
$posValue = $shutters->getVentilatePos;
|
$posValue = $shutters->getVentilatePos;
|
||||||
}
|
}
|
||||||
elsif ( CheckIfShuttersWindowRecOpen($shuttersDev) == 2
|
elsif ( CheckIfShuttersWindowRecOpen($shuttersDev) == 2
|
||||||
and $shutters->getSubTyp eq 'threestate'
|
and $shutters->getSubTyp eq 'threestate'
|
||||||
and $ascDev->getAutoShuttersControlComfort eq 'on'
|
and $ascDev->getAutoShuttersControlComfort eq 'on' )
|
||||||
)
|
|
||||||
{
|
{
|
||||||
$posValue = $shutters->getComfortOpenPos;
|
$posValue = $shutters->getComfortOpenPos;
|
||||||
}
|
}
|
||||||
elsif ( CheckIfShuttersWindowRecOpen($shuttersDev) == 2
|
elsif (
|
||||||
and ($shutters->getSubTyp eq 'threestate'
|
CheckIfShuttersWindowRecOpen($shuttersDev) == 2
|
||||||
or $shutters->getSubTyp eq 'twostate')
|
and ( $shutters->getSubTyp eq 'threestate'
|
||||||
|
or $shutters->getSubTyp eq 'twostate' )
|
||||||
and $shutters->getVentilateOpen eq 'on'
|
and $shutters->getVentilateOpen eq 'on'
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
$posValue = $shutters->getVentilatePos;
|
$posValue = $shutters->getVentilatePos;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( $shutters->getQueryShuttersPos( $posValue ) ) {
|
if ( $shutters->getQueryShuttersPos($posValue) ) {
|
||||||
$posValue = $shutters->getStatus;
|
$posValue = $shutters->getStatus;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -3510,7 +3525,7 @@ sub SetCmdFn($) {
|
|||||||
. $shutters->getPosSetCmd . ' '
|
. $shutters->getPosSetCmd . ' '
|
||||||
. $posValue );
|
. $posValue );
|
||||||
|
|
||||||
$shutters->setSelfDefenseAbsent(0,0)
|
$shutters->setSelfDefenseAbsent( 0, 0 )
|
||||||
if ( not $shutters->getSelfDefenseAbsent
|
if ( not $shutters->getSelfDefenseAbsent
|
||||||
and $shutters->getSelfDefenseAbsentTimerrun );
|
and $shutters->getSelfDefenseAbsentTimerrun );
|
||||||
}
|
}
|
||||||
@ -3653,10 +3668,9 @@ sub setDriveCmd {
|
|||||||
and $shutters->getLastDrive eq 'selfDefense active'
|
and $shutters->getLastDrive eq 'selfDefense active'
|
||||||
and $ascDev->getSelfDefense eq 'on' )
|
and $ascDev->getSelfDefense eq 'on' )
|
||||||
{
|
{
|
||||||
InternalTimer(
|
InternalTimer( gettimeofday() + $shutters->getSelfDefenseAbsentDelay,
|
||||||
gettimeofday() + $shutters->getSelfDefenseAbsentDelay,
|
|
||||||
'FHEM::AutoShuttersControl::SetCmdFn', \%h );
|
'FHEM::AutoShuttersControl::SetCmdFn', \%h );
|
||||||
$shutters->setSelfDefenseAbsent(1,0,\%h);
|
$shutters->setSelfDefenseAbsent( 1, 0, \%h );
|
||||||
}
|
}
|
||||||
elsif ( $offSetStart > 0 and not $shutters->getNoOffset ) {
|
elsif ( $offSetStart > 0 and not $shutters->getNoOffset ) {
|
||||||
InternalTimer(
|
InternalTimer(
|
||||||
@ -3881,7 +3895,11 @@ sub getSelfDefenseAbsentTimerhash {
|
|||||||
my $self = shift;
|
my $self = shift;
|
||||||
|
|
||||||
return $self->{ $self->{shuttersDev} }{selfDefenseAbsent}{timerhash}
|
return $self->{ $self->{shuttersDev} }{selfDefenseAbsent}{timerhash}
|
||||||
if ( defined($self->{ $self->{shuttersDev} }{selfDefenseAbsent}{timerhash}) );
|
if (
|
||||||
|
defined(
|
||||||
|
$self->{ $self->{shuttersDev} }{selfDefenseAbsent}{timerhash}
|
||||||
|
)
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
sub getLastDrive {
|
sub getLastDrive {
|
||||||
@ -4001,10 +4019,10 @@ sub getRoommatesLastStatus {
|
|||||||
'asleep' => 1,
|
'asleep' => 1,
|
||||||
'gotosleep' => 2,
|
'gotosleep' => 2,
|
||||||
'awoken' => 3,
|
'awoken' => 3,
|
||||||
'home' => 7,
|
'home' => 6,
|
||||||
'absent' => 6,
|
'absent' => 5,
|
||||||
'gone' => 5,
|
'gone' => 4,
|
||||||
'none' => 4
|
'none' => 7
|
||||||
);
|
);
|
||||||
my $minPrio = 10;
|
my $minPrio = 10;
|
||||||
|
|
||||||
@ -4021,7 +4039,8 @@ sub getRoommatesLastStatus {
|
|||||||
sub getOutTemp {
|
sub getOutTemp {
|
||||||
my $self = shift;
|
my $self = shift;
|
||||||
|
|
||||||
return ReadingsVal( $shutters->_getTempSensor, $shutters->getTempSensorReading, -100 );
|
return ReadingsVal( $shutters->_getTempSensor,
|
||||||
|
$shutters->getTempSensorReading, -100 );
|
||||||
}
|
}
|
||||||
|
|
||||||
### Begin Beschattung Objekt mit Daten befüllen
|
### Begin Beschattung Objekt mit Daten befüllen
|
||||||
@ -4221,12 +4240,11 @@ sub _getTempSensor {
|
|||||||
return $self->{ $self->{shuttersDev} }->{ASC_TempSensor}->{device}
|
return $self->{ $self->{shuttersDev} }->{ASC_TempSensor}->{device}
|
||||||
if (
|
if (
|
||||||
exists(
|
exists(
|
||||||
$self->{ $self->{shuttersDev} }->{ASC_TempSensor}
|
$self->{ $self->{shuttersDev} }->{ASC_TempSensor}->{LASTGETTIME}
|
||||||
->{LASTGETTIME}
|
|
||||||
)
|
)
|
||||||
and ( gettimeofday() -
|
and ( gettimeofday() -
|
||||||
$self->{ $self->{shuttersDev} }->{ASC_TempSensor}
|
$self->{ $self->{shuttersDev} }->{ASC_TempSensor}->{LASTGETTIME} )
|
||||||
->{LASTGETTIME} ) < 2
|
< 2
|
||||||
);
|
);
|
||||||
$self->{ $self->{shuttersDev} }->{ASC_TempSensor}->{LASTGETTIME} =
|
$self->{ $self->{shuttersDev} }->{ASC_TempSensor}->{LASTGETTIME} =
|
||||||
int( gettimeofday() );
|
int( gettimeofday() );
|
||||||
@ -4249,19 +4267,16 @@ sub getTempSensorReading {
|
|||||||
return $self->{ $self->{shuttersDev} }->{ASC_TempSensor}->{reading}
|
return $self->{ $self->{shuttersDev} }->{ASC_TempSensor}->{reading}
|
||||||
if (
|
if (
|
||||||
exists(
|
exists(
|
||||||
$self->{ $self->{shuttersDev} }->{ASC_TempSensor}
|
$self->{ $self->{shuttersDev} }->{ASC_TempSensor}->{LASTGETTIME}
|
||||||
->{LASTGETTIME}
|
|
||||||
)
|
)
|
||||||
and ( gettimeofday() -
|
and ( gettimeofday() -
|
||||||
$self->{ $self->{shuttersDev} }->{ASC_TempSensor}
|
$self->{ $self->{shuttersDev} }->{ASC_TempSensor}->{LASTGETTIME} )
|
||||||
->{LASTGETTIME} ) < 2
|
< 2
|
||||||
);
|
);
|
||||||
$shutters->_getTempSensor;
|
$shutters->_getTempSensor;
|
||||||
|
|
||||||
return (
|
return (
|
||||||
defined(
|
defined( $self->{ $self->{shuttersDev} }->{ASC_TempSensor}->{reading} )
|
||||||
$self->{ $self->{shuttersDev} }->{ASC_TempSensor}->{reading}
|
|
||||||
)
|
|
||||||
? $self->{ $self->{shuttersDev} }->{ASC_TempSensor}->{reading}
|
? $self->{ $self->{shuttersDev} }->{ASC_TempSensor}->{reading}
|
||||||
: 'temperature'
|
: 'temperature'
|
||||||
);
|
);
|
||||||
@ -6348,7 +6363,7 @@ sub getblockAscDrivesAfterManual {
|
|||||||
"release_status": "under develop",
|
"release_status": "under develop",
|
||||||
"license": "GPL_2",
|
"license": "GPL_2",
|
||||||
"version": "v0.6.19",
|
"version": "v0.6.19",
|
||||||
"x_developmentversion": "v0.6.19.16",
|
"x_developmentversion": "v0.6.19.17",
|
||||||
"author": [
|
"author": [
|
||||||
"Marko Oldenburg <leongaultier@gmail.com>"
|
"Marko Oldenburg <leongaultier@gmail.com>"
|
||||||
],
|
],
|
||||||
|
Reference in New Issue
Block a user