change Attribut ASC_PrivacyDownTime_beforNightClose to ASC_PrivacyDownValue_beforNightClose, fix shutters drive in the morning if residents state absent

This commit is contained in:
Marko Oldenburg 2019-10-24 13:53:14 +02:00
parent 443d661416
commit a8493a6122

View File

@ -208,7 +208,7 @@ my %userAttrList = (
'ASC_Time_Up_WE_Holiday' => '-',
'ASC_Time_Down_Early' => '-',
'ASC_Time_Down_Late' => '-',
'ASC_PrivacyDownTime_beforNightClose' => '-',
'ASC_PrivacyDownValue_beforNightClose' => '-',
'ASC_PrivacyDown_Pos' => '-',
'ASC_TempSensor' => '-',
'ASC_Ventilate_Window_Open:on,off' => '-',
@ -1500,6 +1500,9 @@ sub EventProcessingResidents($@) {
}
sub EventProcessingRain($@) {
#### Ist noch nicht fertig, es fehlt noch das verzögerte Prüfen auf erhalten bleiben des getriggerten Wertes.
my ( $hash, $device, $events ) = @_;
my $name = $device;
my $reading = $ascDev->getRainSensorReading;
@ -1706,6 +1709,8 @@ sub EventProcessingBrightness($@) {
$brightnessMaxVal = $ascDev->getBrightnessMaxVal;
}
my $brightnessPrivacyVal = $shutters->getPrivacyDownTime;
ASC_Debug( 'EventProcessingBrightness: '
. $shutters->getShuttersDev
. ' - Es wird geprüft ob Sunset oder Sunrise gefahren werden soll und der aktuelle übergebene Brightness-Wert: '
@ -1822,7 +1827,8 @@ sub EventProcessingBrightness($@) {
and int( gettimeofday() / 86400 ) == int(
computeAlignTime( '24:00', $shutters->getTimeDownLate ) / 86400
)
and $1 < $brightnessMinVal
and ( $1 < $brightnessMinVal
or $1 < $brightnessPrivacyVal )
and $shutters->getDown eq 'brightness'
and not $shutters->getSunset
and IsAfterShuttersManualBlocking($shuttersDev)
@ -1850,7 +1856,31 @@ sub EventProcessingBrightness($@) {
)
{
my $posValue;
if ( CheckIfShuttersWindowRecOpen($shuttersDev) == 2
## Setzt den PrivacyDown Modus für die Sichtschutzfahrt auf den Status 0
## 1 bedeutet das PrivacyDown Timer aktiviert wurde, 2 beudet das er im privacyDown ist
## also das Rollo in privacyDown Position steht und VOR der endgültigen Nachfahrt
$shutters->setPrivacyDownStatus(0)
if ( not defined( $shutters->getPrivacyDownStatus ) );
if ( $1 > $brightnessMinVal
and $1 < $brightnessPrivacyVal )
{
$shutters->setLastDrive('privacy position');
ShuttersCommandSet( $hash, $shuttersDev,
$shutters->getPrivacyDownPos )
unless (
$shutters->getQueryShuttersPos(
$shutters->getPrivacyDownPos
)
);
ASC_Debug( 'EventProcessingBrightness: '
. $shutters->getShuttersDev
. ' - Verarbeitung für Sunset Privacy Down. Roommatestatus korrekt zum fahren. Fahrbefehl wird an die Funktion FnShuttersCommandSet gesendet. Grund des fahrens: '
. $shutters->getLastDrive );
}
elsif ( CheckIfShuttersWindowRecOpen($shuttersDev) == 2
and $shutters->getSubTyp eq 'threestate'
and $ascDev->getAutoShuttersControlComfort eq 'on' )
{
@ -2582,7 +2612,9 @@ sub CreateSunRiseSetShuttersTimer($$) {
$shutters->setInTimerFuncHash( \%funcHash );
## Abfrage für die Sichtschutzfahrt am Abend vor dem eigentlichen kompletten schließen
if ( $shutters->getPrivacyDownTime > 0 ) {
if ( $shutters->getPrivacyDownTime > 0
and $shutters->getDown ne 'brightness' )
{
if ( ( $shuttersSunsetUnixtime - $shutters->getPrivacyDownTime ) >
( gettimeofday() + 1 ) )
{
@ -2689,6 +2721,12 @@ sub RenewSunRiseSetShuttersTimer($) {
delFromDevAttrList( $_, 'ASC_Shading_Direction' );
delFromDevAttrList( $_, 'ASC_Shading_Angle_Left' );
delFromDevAttrList( $_, 'ASC_Shading_Angle_Right' );
$attr{$_}{ASC_PrivacyDownValue_beforNightClose} =
AttrVal( $_, 'ASC_PrivacyDownTime_beforNightClose', 'none' )
if ( AttrVal( $_, 'ASC_PrivacyDownTime_beforNightClose', 'none' ) ne
'none' );
delFromDevAttrList( $_, 'ASC_PrivacyDownTime_beforNightClose' );
}
}
@ -2778,8 +2816,8 @@ sub SunSetShuttersAfterTimerFn($) {
and $ascDev->getResidentsStatus ne 'gone' )
)
and (
$shutters->getDown ne 'brightness'
or ( $shutters->getDown eq 'brightness'
$shutters->getDown ne 'brightness'
or ( $shutters->getDown eq 'brightness'
and not $shutters->getSunset )
)
)
@ -2844,8 +2882,8 @@ sub SunRiseShuttersAfterTimerFn($) {
and $ascDev->getResidentsStatus ne 'gone' )
)
and (
$shutters->getUp ne 'brightness'
or ( $shutters->getUp eq 'brightness'
$shutters->getUp ne 'brightness'
or ( $shutters->getUp eq 'brightness'
and not $shutters->getSunrise )
)
)
@ -4657,7 +4695,7 @@ sub getPrivacyDownTime {
my $self = shift;
return AttrVal( $self->{shuttersDev},
'ASC_PrivacyDownTime_beforNightClose', -1 );
'ASC_PrivacyDownValue_beforNightClose', -1 );
}
sub getPrivacyDownPos {
@ -6480,8 +6518,8 @@ sub getblockAscDrivesAfterManual {
<li><strong>ASC_Pos_Reading</strong> - Points to the reading name, which contains the current
position for the shutter in percent. Will be used for <em>set</em> at devices of unknown kind.
</li>
<li><strong>ASC_PrivacyDownTime_beforNightClose</strong> - How many seconds is the privacy mode activated
before the shutter is closed in the evening. A value of <em>-1</em> disables this. -1 is the default
<li><strong>ASC_PrivacyDownValue_beforNightClose</strong> - How many seconds is the privacy mode activated
before the shutter is closed in the evening, or then brightness use brightness value. A value of <em>-1</em> disables this. -1 is the default
value.
</li>
<li><strong>ASC_PrivacyDown_Pos</strong> -
@ -6932,7 +6970,7 @@ sub getblockAscDrivesAfterManual {
<li><strong>ASC_Mode_Up - always/home/absent/off</strong> - Wann darf die Automatik steuern. immer, niemals, bei Abwesenheit des Roommate (ist kein Roommate und absent eingestellt, wird gar nicht gesteuert) (default: always)</li>
<li><strong>ASC_Partymode - on/off</strong> - schaltet den Partymodus an oder aus. Wird am ASC Device set ASC-DEVICE partyMode on geschalten, werden alle Fahrbefehle an den Rolll&auml;den, welche das Attribut auf on haben, zwischengespeichert und sp&auml;ter erst ausgef&uuml;hrt (default: off)</li>
<li><strong>ASC_Pos_Reading</strong> - Name des Readings, welches die Position des Rollladen in Prozent an gibt; wird bei unbekannten Device Typen auch als set Befehl zum fahren verwendet</li>
<li><strong>ASC_PrivacyDownTime_beforNightClose</strong> - wie viele Sekunden vor dem abendlichen schlie&szlig;en soll der Rollladen in die Sichtschutzposition fahren, -1 bedeutet das diese Funktion unbeachtet bleiben soll (default: -1)</li>
<li><strong>ASC_PrivacyDownValue_beforNightClose</strong> - wie viele Sekunden vor dem abendlichen schlie&szlig;en soll der Rollladen in die Sichtschutzposition fahren, oder bei Brightness ab welchem minimum Brightnesswert soll das Rollo in die Privacy Position fahren, -1 bedeutet das diese Funktion unbeachtet bleiben soll (default: -1)</li>
<li><strong>ASC_PrivacyDown_Pos</strong> - Position den Rollladens f&uuml;r den Sichtschutz (default: 50) !!!Verwendung von Perlcode ist möglich, dieser muss in {} eingeschlossen sein. Rückgabewert muss eine positive Zahl/Dezimalzahl sein!!!</li>
<li><strong>ASC_WindProtection - on/off</strong> - soll der Rollladen beim Regenschutz beachtet werden. on=JA, off=NEIN.</li>
<li><strong>ASC_Roommate_Device</strong> - mit Komma getrennte Namen des/der Roommate Device/s, welche den/die Bewohner des Raumes vom Rollladen wiedergibt. Es macht nur Sinn in Schlaf- oder Kinderzimmern (default: none)</li>
@ -7051,7 +7089,7 @@ sub getblockAscDrivesAfterManual {
],
"release_status": "under develop",
"license": "GPL_2",
"version": "v0.6.114",
"version": "v0.6.120",
"author": [
"Marko Oldenburg <leongaultier@gmail.com>"
],