add ASC device attribut ASC_slatDriveCmdInverse
This commit is contained in:
parent
29e35be498
commit
a5d1582d5a
@ -350,6 +350,7 @@ sub Initialize {
|
|||||||
. 'ASC_expert:1 '
|
. 'ASC_expert:1 '
|
||||||
. 'ASC_blockAscDrivesAfterManual:0,1 '
|
. 'ASC_blockAscDrivesAfterManual:0,1 '
|
||||||
. 'ASC_debug:1 '
|
. 'ASC_debug:1 '
|
||||||
|
. 'ASC_slatDriveCmdInverse:0,1 '
|
||||||
. $readingFnAttributes;
|
. $readingFnAttributes;
|
||||||
$hash->{NotifyOrderPrefix} = '51-'; # Order Nummer für NotifyFn
|
$hash->{NotifyOrderPrefix} = '51-'; # Order Nummer für NotifyFn
|
||||||
$hash->{FW_detailFn} = \&ShuttersInformation;
|
$hash->{FW_detailFn} = \&ShuttersInformation;
|
||||||
@ -1203,11 +1204,14 @@ sub EventProcessingWindowRec {
|
|||||||
elsif (
|
elsif (
|
||||||
$shutters->getModeDown ne 'absent'
|
$shutters->getModeDown ne 'absent'
|
||||||
&& $shutters->getModeDown ne 'off'
|
&& $shutters->getModeDown ne 'off'
|
||||||
&& ( ( !$shutters->getIsDay
|
&& (
|
||||||
|
(
|
||||||
|
!$shutters->getIsDay
|
||||||
&& $shutters->getModeDown ne 'roommate'
|
&& $shutters->getModeDown ne 'roommate'
|
||||||
)
|
)
|
||||||
|| $homemode eq 'asleep'
|
|| $homemode eq 'asleep'
|
||||||
|| $homemode eq 'gotosleep' )
|
|| $homemode eq 'gotosleep'
|
||||||
|
)
|
||||||
&& $ascDev->getAutoShuttersControlEvening eq 'on'
|
&& $ascDev->getAutoShuttersControlEvening eq 'on'
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
@ -1542,12 +1546,10 @@ sub EventProcessingResidents {
|
|||||||
&& $shutters->getSelfDefenseMode ne 'off'
|
&& $shutters->getSelfDefenseMode ne 'off'
|
||||||
|| ( $getModeDown eq 'absent'
|
|| ( $getModeDown eq 'absent'
|
||||||
|| $getModeDown eq 'always' )
|
|| $getModeDown eq 'always' )
|
||||||
|| ( $shutters->getShadingMode eq 'absent'
|
|| ( $shutters->getShadingMode eq 'absent'
|
||||||
&& $shutters->getRoommatesStatus eq 'none'
|
&& $shutters->getRoommatesStatus eq 'none' )
|
||||||
)
|
|| ( $shutters->getShadingMode eq 'home'
|
||||||
|| ( $shutters->getShadingMode eq 'home'
|
&& $shutters->getRoommatesStatus eq 'none' )
|
||||||
&& $shutters->getRoommatesStatus eq 'none'
|
|
||||||
)
|
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
if (
|
if (
|
||||||
@ -1567,24 +1569,24 @@ sub EventProcessingResidents {
|
|||||||
$shutters->setSelfDefenseState(1);
|
$shutters->setSelfDefenseState(1);
|
||||||
$shutters->setDriveCmd( $shutters->getClosedPos );
|
$shutters->setDriveCmd( $shutters->getClosedPos );
|
||||||
}
|
}
|
||||||
elsif ( $shutters->getIsDay
|
elsif ($shutters->getIsDay
|
||||||
&& $shutters->getIfInShading
|
&& $shutters->getIfInShading
|
||||||
&& $shutters->getShadingMode eq 'absent'
|
&& $shutters->getShadingMode eq 'absent'
|
||||||
&& $shutters->getRoommatesStatus eq 'none'
|
&& $shutters->getRoommatesStatus eq 'none' )
|
||||||
)
|
|
||||||
{
|
{
|
||||||
ShadingProcessingDriveCommand( $hash, $shuttersDev );
|
ShadingProcessingDriveCommand( $hash, $shuttersDev );
|
||||||
}
|
}
|
||||||
elsif ( $shutters->getShadingMode eq 'home'
|
elsif (
|
||||||
&& $shutters->getIsDay
|
$shutters->getShadingMode eq 'home'
|
||||||
&& $shutters->getIfInShading
|
&& $shutters->getIsDay
|
||||||
&& $shutters->getStatus == $shutters->getShadingPos
|
&& $shutters->getIfInShading
|
||||||
&& $shutters->getRoommatesStatus eq 'none'
|
&& $shutters->getStatus == $shutters->getShadingPos
|
||||||
&& !(
|
&& $shutters->getRoommatesStatus eq 'none'
|
||||||
CheckIfShuttersWindowRecOpen($shuttersDev) == 2
|
&& !(
|
||||||
&& $shutters->getShuttersPlace eq 'terrace'
|
CheckIfShuttersWindowRecOpen($shuttersDev) == 2
|
||||||
)
|
&& $shutters->getShuttersPlace eq 'terrace'
|
||||||
&& !$shutters->getSelfDefenseState
|
)
|
||||||
|
&& !$shutters->getSelfDefenseState
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
$shutters->setLastDrive('shading out');
|
$shutters->setLastDrive('shading out');
|
||||||
@ -2288,10 +2290,11 @@ sub EventProcessingShadingBrightness {
|
|||||||
my $name = $hash->{NAME};
|
my $name = $hash->{NAME};
|
||||||
$shutters->setShuttersDev($shuttersDev);
|
$shutters->setShuttersDev($shuttersDev);
|
||||||
my $reading = $shutters->getBrightnessReading;
|
my $reading = $shutters->getBrightnessReading;
|
||||||
my $outTemp =
|
my $outTemp = (
|
||||||
( $shutters->getOutTemp != -100
|
$shutters->getOutTemp != -100
|
||||||
? $shutters->getOutTemp
|
? $shutters->getOutTemp
|
||||||
: $ascDev->getOutTemp );
|
: $ascDev->getOutTemp
|
||||||
|
);
|
||||||
|
|
||||||
Log3( $name, 4,
|
Log3( $name, 4,
|
||||||
"AutoShuttersControl ($shuttersDev) - EventProcessingShadingBrightness"
|
"AutoShuttersControl ($shuttersDev) - EventProcessingShadingBrightness"
|
||||||
@ -4645,32 +4648,62 @@ sub _SetCmdFn {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
CommandSet( undef,
|
if ( $ascDev->getSlatDriveCmdInverse ) {
|
||||||
$shuttersDev
|
CommandSet(
|
||||||
. ':FILTER='
|
undef,
|
||||||
. $shutters->getPosCmd . '!='
|
(
|
||||||
. $posValue . ' '
|
$shutters->getSlatDevice ne 'none'
|
||||||
. $driveCommand );
|
? $shutters->getSlatDevice
|
||||||
|
: $shuttersDev
|
||||||
|
)
|
||||||
|
. ' '
|
||||||
|
. $shutters->getSlatPosCmd . ' '
|
||||||
|
. $slatPos
|
||||||
|
)
|
||||||
|
if ( $slatPos > -1
|
||||||
|
&& $shutters->getSlatPosCmd ne 'none' );
|
||||||
|
|
||||||
InternalTimer(
|
InternalTimer(
|
||||||
gettimeofday() + 3,
|
gettimeofday() + 3,
|
||||||
sub() {
|
sub() {
|
||||||
CommandSet(
|
CommandSet( undef,
|
||||||
undef,
|
$shuttersDev
|
||||||
(
|
. ':FILTER='
|
||||||
$shutters->getSlatDevice ne 'none'
|
. $shutters->getPosCmd . '!='
|
||||||
? $shutters->getSlatDevice
|
. $posValue . ' '
|
||||||
: $shuttersDev
|
. $driveCommand );
|
||||||
)
|
},
|
||||||
. ' '
|
$shuttersDev
|
||||||
. $shutters->getSlatPosCmd . ' '
|
)
|
||||||
. $slatPos
|
if ( $slatPos > -1
|
||||||
);
|
&& $shutters->getSlatPosCmd ne 'none' );
|
||||||
},
|
}
|
||||||
$shuttersDev
|
else {
|
||||||
)
|
CommandSet( undef,
|
||||||
if ( $slatPos > -1
|
$shuttersDev
|
||||||
&& $shutters->getSlatPosCmd ne 'none' );
|
. ':FILTER='
|
||||||
|
. $shutters->getPosCmd . '!='
|
||||||
|
. $posValue . ' '
|
||||||
|
. $driveCommand );
|
||||||
|
|
||||||
|
InternalTimer(
|
||||||
|
gettimeofday() + 3,
|
||||||
|
sub() {
|
||||||
|
CommandSet(
|
||||||
|
undef,
|
||||||
|
(
|
||||||
|
$shutters->getSlatDevice ne 'none'
|
||||||
|
? $shutters->getSlatDevice
|
||||||
|
: $shuttersDev
|
||||||
|
)
|
||||||
|
. ' '
|
||||||
|
. $shutters->getSlatPosCmd . ' '
|
||||||
|
. $slatPos
|
||||||
|
);
|
||||||
|
},
|
||||||
|
$shuttersDev
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
$shutters->setSelfDefenseAbsent( 0, 0 )
|
$shutters->setSelfDefenseAbsent( 0, 0 )
|
||||||
if (!$shutters->getSelfDefenseAbsent
|
if (!$shutters->getSelfDefenseAbsent
|
||||||
@ -8371,6 +8404,14 @@ sub getFreezeTemp {
|
|||||||
return AttrVal( $name, 'ASC_freezeTemp', 3 );
|
return AttrVal( $name, 'ASC_freezeTemp', 3 );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
sub getSlatDriveCmdInverse {
|
||||||
|
my $self = shift;
|
||||||
|
|
||||||
|
my $name = $self->{name};
|
||||||
|
|
||||||
|
return AttrVal( $name, 'ASC_slatDriveCmdInverse', 0 );
|
||||||
|
}
|
||||||
|
|
||||||
sub _getTempSensor {
|
sub _getTempSensor {
|
||||||
my $self = shift;
|
my $self = shift;
|
||||||
|
|
||||||
@ -9507,11 +9548,29 @@ sub getBlockAscDrivesAfterManual {
|
|||||||
<tr><td>PosCmd</td><td>welches Kommando wird zum fahren der Rollos verwendet (pct, position?)</td></tr>
|
<tr><td>PosCmd</td><td>welches Kommando wird zum fahren der Rollos verwendet (pct, position?)</td></tr>
|
||||||
<tr><td>OpenPos</td><td>Position für Rollo ganz auf</td></tr>
|
<tr><td>OpenPos</td><td>Position für Rollo ganz auf</td></tr>
|
||||||
<tr><td>OpenPositionAssignment</td><td>Slat-Position für Rollo ganz auf</td></tr>
|
<tr><td>OpenPositionAssignment</td><td>Slat-Position für Rollo ganz auf</td></tr>
|
||||||
<tr><td>VentilatePos</td><td> </td></tr>
|
<tr><td>VentilatePos</td><td>Lüften Position</td></tr>
|
||||||
<tr><td>VentilatePositionAssignment</td><td> </td></tr>
|
<tr><td>VentilatePositionAssignment</td><td>Lüften Slat-Position</td></tr>
|
||||||
<tr><td>VentilatePosAfterDayClosed</td><td> </td></tr>
|
<tr><td>VentilatePosAfterDayClosed</td><td>Position des Rollos beim schließen des Fensters am Tag</td></tr>
|
||||||
<tr><td>ClosedPos</td><td> </td></tr>
|
<tr><td>ClosedPos</td><td>Position für Rollo ganz geschlossen</td></tr>
|
||||||
<tr><td>ClosedPositionAssignment</td><td> </td></tr>
|
<tr><td>ClosedPositionAssignment</td><td>Slat-Position für Rollo ganz geschlossen</td></tr>
|
||||||
|
<tr><td>SleepPos</td><td>Position für schlafen</td></tr>
|
||||||
|
<tr><td>SleepPositionAssignment</td><td>Slat-Position für schlafen</td></tr>
|
||||||
|
<tr><td>VentilateOpen</td><td>Lüften aktiv?</td></tr>
|
||||||
|
<tr><td>ComfortOpenPos</td><td>Comfort Position</td></tr>
|
||||||
|
<tr><td>ComfortOpenPositionAssignment</td><td>Slat-Comfort Position</td></tr>
|
||||||
|
<tr><td>PartyMode</td><td>Abfrage Party Mode</td></tr>
|
||||||
|
<tr><td>Roommates</td><td>Abfrage Roommates / Antwort als String</td></tr>
|
||||||
|
<tr><td>RoommatesReading</td><td>Roommates Reading</td></tr>
|
||||||
|
<tr><td>RoommatesStatus</td><td>Roommates Status unter Berücksichtigung aller Roommates und dessen Status</td></tr>
|
||||||
|
<tr><td>RoommatesLastStatus</td><td>Roommates letzter Status unter Berücksichtigung aller Roommates und dessen letzten Status</td></tr>
|
||||||
|
<tr><td>WindPos</td><td>Rollo Position bei Windtrigger</td></tr>
|
||||||
|
<tr><td>WindMax</td><td>Wert über dem die Windprotection aktiviert werden soll</td></tr>
|
||||||
|
<tr><td>WindMin</td><td>Wert unter dem die Windprotection aufgehoben werden soll</td></tr>
|
||||||
|
<tr><td>WindProtection</td><td>Windprotection soll aktiv sein oder nicht</td></tr>
|
||||||
|
<tr><td>WindProtectionStatus</td><td>aktueller Status der WindProtection</td></tr>
|
||||||
|
<tr><td>RainProtection</td><td>Rain Protection soll aktiv sein oder nicht</td></tr>
|
||||||
|
<tr><td>RainProtectionStatus</td><td>aktueller Staus der Rain Protection</td></tr>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user