diff --git a/73_AutoShuttersControl.pm b/73_AutoShuttersControl.pm index 9d2b10a..cfa77c9 100644 --- a/73_AutoShuttersControl.pm +++ b/73_AutoShuttersControl.pm @@ -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 {
  • ASC_Pos_Reading - Points to the reading name, which contains the current position for the shutter in percent. Will be used for set at devices of unknown kind.
  • -
  • ASC_PrivacyDownTime_beforNightClose - How many seconds is the privacy mode activated - before the shutter is closed in the evening. A value of -1 disables this. -1 is the default +
  • ASC_PrivacyDownValue_beforNightClose - 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 -1 disables this. -1 is the default value.
  • ASC_PrivacyDown_Pos - @@ -6932,7 +6970,7 @@ sub getblockAscDrivesAfterManual {
  • ASC_Mode_Up - always/home/absent/off - Wann darf die Automatik steuern. immer, niemals, bei Abwesenheit des Roommate (ist kein Roommate und absent eingestellt, wird gar nicht gesteuert) (default: always)
  • ASC_Partymode - on/off - schaltet den Partymodus an oder aus. Wird am ASC Device set ASC-DEVICE partyMode on geschalten, werden alle Fahrbefehle an den Rollläden, welche das Attribut auf on haben, zwischengespeichert und später erst ausgeführt (default: off)
  • ASC_Pos_Reading - Name des Readings, welches die Position des Rollladen in Prozent an gibt; wird bei unbekannten Device Typen auch als set Befehl zum fahren verwendet
  • -
  • ASC_PrivacyDownTime_beforNightClose - wie viele Sekunden vor dem abendlichen schließen soll der Rollladen in die Sichtschutzposition fahren, -1 bedeutet das diese Funktion unbeachtet bleiben soll (default: -1)
  • +
  • ASC_PrivacyDownValue_beforNightClose - wie viele Sekunden vor dem abendlichen schließ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)
  • ASC_PrivacyDown_Pos - Position den Rollladens für den Sichtschutz (default: 50) !!!Verwendung von Perlcode ist möglich, dieser muss in {} eingeschlossen sein. Rückgabewert muss eine positive Zahl/Dezimalzahl sein!!!
  • ASC_WindProtection - on/off - soll der Rollladen beim Regenschutz beachtet werden. on=JA, off=NEIN.
  • ASC_Roommate_Device - 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)
  • @@ -7051,7 +7089,7 @@ sub getblockAscDrivesAfterManual { ], "release_status": "under develop", "license": "GPL_2", - "version": "v0.6.114", + "version": "v0.6.120", "author": [ "Marko Oldenburg " ],