diff --git a/fhem/CHANGED b/fhem/CHANGED index 57cd99d2b..588cd8dfd 100644 --- a/fhem/CHANGED +++ b/fhem/CHANGED @@ -1,5 +1,6 @@ # Add changes at the top of the list. Keep it in ASCII, and 80-char wide. # Do not insert empty lines here, update check depends on it. + - bugfix: 73_AutoShuttersControl: fix many reported bugs - feature: 93_DbRep: reduceLog - add max, max=day, min, min=day, sum, sum=day some fixes of reduceLog routine - feature: 50_Signalbot: support to link 2 FHEM instance under the same number diff --git a/fhem/FHEM/73_AutoShuttersControl.pm b/fhem/FHEM/73_AutoShuttersControl.pm index b45756de5..c5e15b590 100644 --- a/fhem/FHEM/73_AutoShuttersControl.pm +++ b/fhem/FHEM/73_AutoShuttersControl.pm @@ -707,7 +707,7 @@ __END__ are used for shading. Defaults to 120. -
  • ASC_Shading_BetweenTheTime - Limit the time slots for shading functionality. Example: 9:00-13:00 11:25-15:30
  • +
  • ASC_Shading_BetweenTheTime - Limit the time slots for shading functionality. Example: 09:00-13:00 11:25-15:30
  • @@ -1137,7 +1137,7 @@ __END__
  • ASC_Shading_WaitingPeriod - wie viele Sekunden soll gewartet werden bevor eine weitere Auswertung der Sensordaten für die Beschattung stattfinden soll (default: 1200)
  • -
  • ASC_Shading_BetweenTheTime - das Fahren in die Beschattung erfolgt bei Angabe nur innerhalb des Zeitraumes, Bsp: 9:00-13:00 11:25-15:30
  • +
  • ASC_Shading_BetweenTheTime - das Fahren in die Beschattung erfolgt bei Angabe nur innerhalb des Zeitraumes, Bsp: 09:00-13:00 11:25-15:30
  • ASC_ShuttersPlace - window/terrace/awning - Wenn dieses Attribut auf terrace gesetzt ist, das Residence Device in den Status "gone" geht und SelfDefense aktiv ist (ohne das das Reading selfDefense gesetzt sein muss), wird das Rollo geschlossen. awning steht für Markise und wirkt sich auf die Beschattungssteuerung aus. (default: window)
  • @@ -1158,7 +1158,7 @@ __END__
  • ASC_WiggleValue - Wert um welchen sich die Position des Rollladens ändern soll (default: 5)
  • -
  • ASC_WindParameters - TRIGGERMAX[:HYSTERESE] [DRIVEPOSITION] / Angabe von Max Wert ab dem für Wind getriggert werden soll, Hytsrese Wert ab dem der Windschutz aufgehoben werden soll TRIGGERMAX - HYSTERESE / Ist es bei einigen Rollläden nicht gewünscht das gefahren werden soll, so ist der TRIGGERMAX Wert mit -1 an zu geben. (default: '50:20 ClosedPosition')
  • +
  • ASC_WindParameters - TRIGGERMAX[:HYSTERESE] [DRIVEPOSITION] / ACHTUNG! Wird nur beachtet wenn ASC_WindProtection auf on gesetzt ist. - Angabe von Max Wert ab dem für Wind getriggert werden soll, Hytsrese Wert ab dem der Windschutz aufgehoben werden soll TRIGGERMAX - HYSTERESE / Ist es bei einigen Rollläden nicht gewünscht das gefahren werden soll, so ist der TRIGGERMAX Wert mit -1 an zu geben. (default: '50:20 ASC_Closed_Pos')
  • ASC_WindowRec_PosAfterDayClosed - open,lastManual / auf welche Position soll das Rollo nach dem schließen am Tag fahren. Open Position oder letzte gespeicherte manuelle Position (default: open)
  • @@ -1323,7 +1323,7 @@ __END__ Sunrise1=Morgenfahrt wurde durchgeführt, 0=noch keine Morgenfahrt durchgeführt RoommatesStatusaktueller Status der/des Roommate/s für den Rollladen RoommatesLastStatusletzter Status der/des Roommate/s für den Rollladen - ShadingStatusAusgabe des aktuellen Shading Status, „in“, „out“, „in reserved“, „out reserved“ + ShadingStatusAusgabe des aktuellen Shading Status, „in“, �����out“, „in reserved“, „out reserved“ ShadingStatusTimestampTimestamp des letzten Beschattungsstatus IfInShadingBefindet sich der Rollladen, in Abhängigkeit des Shading Mode, in der Beschattung DelayCmdletzter Fahrbefehl welcher in die Warteschlange kam. Grund z.B. Partymodus. @@ -1462,7 +1462,7 @@ __END__ ], "release_status": "stable", "license": "GPL_2", - "version": "v0.10.23", + "version": "v0.10.24", "author": [ "Marko Oldenburg " ], diff --git a/fhem/lib/FHEM/Automation/ShuttersControl.pm b/fhem/lib/FHEM/Automation/ShuttersControl.pm index 2e96e635b..277326c55 100644 --- a/fhem/lib/FHEM/Automation/ShuttersControl.pm +++ b/fhem/lib/FHEM/Automation/ShuttersControl.pm @@ -1764,7 +1764,11 @@ sub SetCmdFn { return if ( $shutters->getASCenable eq 'off' || $ascDev->getASCenable eq 'off' - || $idleDetection !~ m{^$idleDetectionValue$}xms ); + || $idleDetection !~ m{^$idleDetectionValue$}xms + || $FHEM::Automation::ShuttersControl::shutters + ->getWindProtectionStatus eq 'protected' + || $FHEM::Automation::ShuttersControl::shutters + ->getRaindProtectionStatus eq 'protected' ); if ( $shutters->getStatus != $posValue ) { $shutters->setLastPos( $shutters->getStatus ); diff --git a/fhem/lib/FHEM/Automation/ShuttersControl/EventProcessingFunctions.pm b/fhem/lib/FHEM/Automation/ShuttersControl/EventProcessingFunctions.pm index f22cb20c4..e92a756ad 100644 --- a/fhem/lib/FHEM/Automation/ShuttersControl/EventProcessingFunctions.pm +++ b/fhem/lib/FHEM/Automation/ShuttersControl/EventProcessingFunctions.pm @@ -1363,6 +1363,7 @@ sub EventProcessingWind { my $name = $hash->{NAME}; $FHEM::Automation::ShuttersControl::shutters->setShuttersDev($shuttersDev); + my $targetPos = $FHEM::Automation::ShuttersControl::shutters->getLastPos; my $reading = $FHEM::Automation::ShuttersControl::ascDev->getWindSensorReading @@ -1414,35 +1415,38 @@ sub EventProcessingWind { { $FHEM::Automation::ShuttersControl::shutters->setLastDrive( 'wind un-protected'); - $FHEM::Automation::ShuttersControl::shutters->setDriveCmd( - ( - $FHEM::Automation::ShuttersControl::shutters->getIsDay + + if ( $FHEM::Automation::ShuttersControl::shutters->getIsDay + && !$FHEM::Automation::ShuttersControl::shutters + ->getIfInShading + && $FHEM::Automation::ShuttersControl::shutters->getLastPos + == $FHEM::Automation::ShuttersControl::shutters + ->getShadingPos ) + { + $targetPos = + $FHEM::Automation::ShuttersControl::shutters->getOpenPos; + } + else { + $targetPos = + $FHEM::Automation::ShuttersControl::shutters->getLastPos; + } + + if ( !$FHEM::Automation::ShuttersControl::shutters->getIsDay ) { + $targetPos = ( + $FHEM::Automation::ShuttersControl::shutters + ->getPrivacyDownStatus == 2 ? $FHEM::Automation::ShuttersControl::shutters - ->getLastPos - : ( - $FHEM::Automation::ShuttersControl::shutters - ->getShuttersPlace eq 'awning' - ? $FHEM::Automation::ShuttersControl::shutters - ->getOpenPos - : ( - $FHEM::Automation::ShuttersControl::shutters - ->getPrivacyDownStatus == 2 - ? $FHEM::Automation::ShuttersControl::shutters - ->getPrivacyDownPos - : ( - $FHEM::Automation::ShuttersControl::shutters - ->getSleepPos > 0 - ? $FHEM::Automation::ShuttersControl::shutters - ->getSleepPos - : $FHEM::Automation::ShuttersControl::shutters - ->getClosedPos - ) - ) - ) - ) - ); + ->getPrivacyDownPos + : $FHEM::Automation::ShuttersControl::shutters + ->getClosedPos + ); + } + $FHEM::Automation::ShuttersControl::shutters ->setWindProtectionStatus('unprotected'); + + $FHEM::Automation::ShuttersControl::shutters->setDriveCmd( + $targetPos); } FHEM::Automation::ShuttersControl::ASC_Debug( diff --git a/fhem/lib/FHEM/Automation/ShuttersControl/Rainprotection.pm b/fhem/lib/FHEM/Automation/ShuttersControl/Rainprotection.pm index e351dd8bb..52e85d78b 100644 --- a/fhem/lib/FHEM/Automation/ShuttersControl/Rainprotection.pm +++ b/fhem/lib/FHEM/Automation/ShuttersControl/Rainprotection.pm @@ -153,7 +153,8 @@ sub _RainProtected { } sub _RainUnprotected { - my $h = shift; + my $h = shift; + my $targetPos = $FHEM::Automation::ShuttersControl::shutters->getLastPos; my $shuttersDev = $h->{shuttersdevice}; $FHEM::Automation::ShuttersControl::shutters->setShuttersDev($shuttersDev); @@ -170,29 +171,35 @@ sub _RainUnprotected { ->setRainUnprotectionDelayObj('none'); } - $FHEM::Automation::ShuttersControl::shutters->setDriveCmd( - ( - $FHEM::Automation::ShuttersControl::shutters->getIsDay - ? $FHEM::Automation::ShuttersControl::shutters->getLastPos - : ( - $FHEM::Automation::ShuttersControl::shutters->getShuttersPlace - eq 'awning' - ? $FHEM::Automation::ShuttersControl::shutters->getOpenPos - : ( - $FHEM::Automation::ShuttersControl::shutters - ->getPrivacyDownStatus == 2 - ? $FHEM::Automation::ShuttersControl::shutters - ->getPrivacyDownPos - : $FHEM::Automation::ShuttersControl::shutters - ->getClosedPos - ) - ) - ) - ) if ( IsAfterShuttersTimeBlocking($shuttersDev) ); + if ( $FHEM::Automation::ShuttersControl::shutters->getIsDay + && !$FHEM::Automation::ShuttersControl::shutters->getIfInShading + && $FHEM::Automation::ShuttersControl::shutters->getLastPos == + $FHEM::Automation::ShuttersControl::shutters->getShadingPos ) + { + $targetPos = $FHEM::Automation::ShuttersControl::shutters->getOpenPos; + } + else { + $targetPos = $FHEM::Automation::ShuttersControl::shutters->getLastPos; + } + + if ( !$FHEM::Automation::ShuttersControl::shutters->getIsDay + && $FHEM::Automation::ShuttersControl::shutters->getShuttersPlace ne + 'awning' ) + { + $targetPos = ( + $FHEM::Automation::ShuttersControl::shutters->getPrivacyDownStatus + == 2 + ? $FHEM::Automation::ShuttersControl::shutters->getPrivacyDownPos + : $FHEM::Automation::ShuttersControl::shutters->getClosedPos + ); + } $FHEM::Automation::ShuttersControl::shutters->setRainProtectionStatus( 'unprotected'); + $FHEM::Automation::ShuttersControl::shutters->setDriveCmd($targetPos) + if ( IsAfterShuttersTimeBlocking($shuttersDev) ); + return; } diff --git a/fhem/lib/FHEM/Automation/ShuttersControl/Shading.pm b/fhem/lib/FHEM/Automation/ShuttersControl/Shading.pm index 207918715..8f5aae5e7 100644 --- a/fhem/lib/FHEM/Automation/ShuttersControl/Shading.pm +++ b/fhem/lib/FHEM/Automation/ShuttersControl/Shading.pm @@ -287,6 +287,8 @@ sub ShadingProcessing { || $FHEM::Automation::ShuttersControl::shutters->getShadingMode eq 'off' || $FHEM::Automation::ShuttersControl::ascDev ->getAutoShuttersControlShading eq 'off' + || $FHEM::Automation::ShuttersControl::shutters + ->getExternalTriggerStatus ); ::Log3( $name, 4,