mirror of
https://github.com/fhem/fhem-mirror.git
synced 2025-01-31 12:49:34 +00:00
73_AutoShuttersControl: fix many reported bugs
git-svn-id: https://svn.fhem.de/fhem/trunk@26357 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
parent
c507b6bedf
commit
b74141899f
@ -1,5 +1,6 @@
|
|||||||
# Add changes at the top of the list. Keep it in ASCII, and 80-char wide.
|
# 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.
|
# 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
|
- feature: 93_DbRep: reduceLog - add max, max=day, min, min=day, sum, sum=day
|
||||||
some fixes of reduceLog routine
|
some fixes of reduceLog routine
|
||||||
- feature: 50_Signalbot: support to link 2 FHEM instance under the same number
|
- feature: 50_Signalbot: support to link 2 FHEM instance under the same number
|
||||||
|
@ -707,7 +707,7 @@ __END__
|
|||||||
are used for shading. Defaults to 120.
|
are used for shading. Defaults to 120.
|
||||||
</li>
|
</li>
|
||||||
<a id="AutoShuttersControl-attr-ASC_Shading_BetweenTheTime"></a>
|
<a id="AutoShuttersControl-attr-ASC_Shading_BetweenTheTime"></a>
|
||||||
<li><strong>ASC_Shading_BetweenTheTime</strong> - Limit the time slots for shading functionality. Example: 9:00-13:00 11:25-15:30</li>
|
<li><strong>ASC_Shading_BetweenTheTime</strong> - Limit the time slots for shading functionality. Example: 09:00-13:00 11:25-15:30</li>
|
||||||
</ul>
|
</ul>
|
||||||
</blockquote>
|
</blockquote>
|
||||||
</ul>
|
</ul>
|
||||||
@ -1137,7 +1137,7 @@ __END__
|
|||||||
<a id="AutoShuttersControl-attr-ASC_Shading_WaitingPeriod"></a>
|
<a id="AutoShuttersControl-attr-ASC_Shading_WaitingPeriod"></a>
|
||||||
<li><strong>ASC_Shading_WaitingPeriod</strong> - wie viele Sekunden soll gewartet werden bevor eine weitere Auswertung der Sensordaten für die Beschattung stattfinden soll (default: 1200)</li>
|
<li><strong>ASC_Shading_WaitingPeriod</strong> - wie viele Sekunden soll gewartet werden bevor eine weitere Auswertung der Sensordaten für die Beschattung stattfinden soll (default: 1200)</li>
|
||||||
<a id="AutoShuttersControl-attr-ASC_Shading_BetweenTheTime"></a>
|
<a id="AutoShuttersControl-attr-ASC_Shading_BetweenTheTime"></a>
|
||||||
<li><strong>ASC_Shading_BetweenTheTime</strong> - das Fahren in die Beschattung erfolgt bei Angabe nur innerhalb des Zeitraumes, Bsp: 9:00-13:00 11:25-15:30</li>
|
<li><strong>ASC_Shading_BetweenTheTime</strong> - das Fahren in die Beschattung erfolgt bei Angabe nur innerhalb des Zeitraumes, Bsp: 09:00-13:00 11:25-15:30</li>
|
||||||
</ul></p>
|
</ul></p>
|
||||||
<a id="AutoShuttersControl-attr-ASC_ShuttersPlace"></a>
|
<a id="AutoShuttersControl-attr-ASC_ShuttersPlace"></a>
|
||||||
<li><strong>ASC_ShuttersPlace - window/terrace/awning</strong> - 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)</li>
|
<li><strong>ASC_ShuttersPlace - window/terrace/awning</strong> - 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)</li>
|
||||||
@ -1158,7 +1158,7 @@ __END__
|
|||||||
<a id="AutoShuttersControl-attr-ASC_WiggleValue"></a>
|
<a id="AutoShuttersControl-attr-ASC_WiggleValue"></a>
|
||||||
<li><strong>ASC_WiggleValue</strong> - Wert um welchen sich die Position des Rollladens ändern soll (default: 5)</li>
|
<li><strong>ASC_WiggleValue</strong> - Wert um welchen sich die Position des Rollladens ändern soll (default: 5)</li>
|
||||||
<a id="AutoShuttersControl-attr-ASC_WindParameters"></a>
|
<a id="AutoShuttersControl-attr-ASC_WindParameters"></a>
|
||||||
<li><strong>ASC_WindParameters - TRIGGERMAX[:HYSTERESE] [DRIVEPOSITION]</strong> / 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')</li>
|
<li><strong>ASC_WindParameters - TRIGGERMAX[:HYSTERESE] [DRIVEPOSITION]</strong> / 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')</li>
|
||||||
<a id="AutoShuttersControl-attr-ASC_WindowRec_PosAfterDayClosed"></a>
|
<a id="AutoShuttersControl-attr-ASC_WindowRec_PosAfterDayClosed"></a>
|
||||||
<li><strong>ASC_WindowRec_PosAfterDayClosed</strong> - open,lastManual / auf welche Position soll das Rollo nach dem schließen am Tag fahren. Open Position oder letzte gespeicherte manuelle Position (default: open)</li>
|
<li><strong>ASC_WindowRec_PosAfterDayClosed</strong> - open,lastManual / auf welche Position soll das Rollo nach dem schließen am Tag fahren. Open Position oder letzte gespeicherte manuelle Position (default: open)</li>
|
||||||
<a id="AutoShuttersControl-attr-ASC_WindowRec"></a>
|
<a id="AutoShuttersControl-attr-ASC_WindowRec"></a>
|
||||||
@ -1323,7 +1323,7 @@ __END__
|
|||||||
<tr><td>Sunrise</td><td>1=Morgenfahrt wurde durchgeführt, 0=noch keine Morgenfahrt durchgeführt</td></tr>
|
<tr><td>Sunrise</td><td>1=Morgenfahrt wurde durchgeführt, 0=noch keine Morgenfahrt durchgeführt</td></tr>
|
||||||
<tr><td>RoommatesStatus</td><td>aktueller Status der/des Roommate/s für den Rollladen</td></tr>
|
<tr><td>RoommatesStatus</td><td>aktueller Status der/des Roommate/s für den Rollladen</td></tr>
|
||||||
<tr><td>RoommatesLastStatus</td><td>letzter Status der/des Roommate/s für den Rollladen</td></tr>
|
<tr><td>RoommatesLastStatus</td><td>letzter Status der/des Roommate/s für den Rollladen</td></tr>
|
||||||
<tr><td>ShadingStatus</td><td>Ausgabe des aktuellen Shading Status, „in“, „out“, „in reserved“, „out reserved“</td></tr>
|
<tr><td>ShadingStatus</td><td>Ausgabe des aktuellen Shading Status, „in“, <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>out“, „in reserved“, „out reserved“</td></tr>
|
||||||
<tr><td>ShadingStatusTimestamp</td><td>Timestamp des letzten Beschattungsstatus</td></tr>
|
<tr><td>ShadingStatusTimestamp</td><td>Timestamp des letzten Beschattungsstatus</td></tr>
|
||||||
<tr><td>IfInShading</td><td>Befindet sich der Rollladen, in Abhängigkeit des Shading Mode, in der Beschattung</td></tr>
|
<tr><td>IfInShading</td><td>Befindet sich der Rollladen, in Abhängigkeit des Shading Mode, in der Beschattung</td></tr>
|
||||||
<tr><td>DelayCmd</td><td>letzter Fahrbefehl welcher in die Warteschlange kam. Grund z.B. Partymodus.</td></tr>
|
<tr><td>DelayCmd</td><td>letzter Fahrbefehl welcher in die Warteschlange kam. Grund z.B. Partymodus.</td></tr>
|
||||||
@ -1462,7 +1462,7 @@ __END__
|
|||||||
],
|
],
|
||||||
"release_status": "stable",
|
"release_status": "stable",
|
||||||
"license": "GPL_2",
|
"license": "GPL_2",
|
||||||
"version": "v0.10.23",
|
"version": "v0.10.24",
|
||||||
"author": [
|
"author": [
|
||||||
"Marko Oldenburg <fhemdevelopment@cooltux.net>"
|
"Marko Oldenburg <fhemdevelopment@cooltux.net>"
|
||||||
],
|
],
|
||||||
|
@ -1764,7 +1764,11 @@ sub SetCmdFn {
|
|||||||
return
|
return
|
||||||
if ( $shutters->getASCenable eq 'off'
|
if ( $shutters->getASCenable eq 'off'
|
||||||
|| $ascDev->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 ) {
|
if ( $shutters->getStatus != $posValue ) {
|
||||||
$shutters->setLastPos( $shutters->getStatus );
|
$shutters->setLastPos( $shutters->getStatus );
|
||||||
|
@ -1363,6 +1363,7 @@ sub EventProcessingWind {
|
|||||||
|
|
||||||
my $name = $hash->{NAME};
|
my $name = $hash->{NAME};
|
||||||
$FHEM::Automation::ShuttersControl::shutters->setShuttersDev($shuttersDev);
|
$FHEM::Automation::ShuttersControl::shutters->setShuttersDev($shuttersDev);
|
||||||
|
my $targetPos = $FHEM::Automation::ShuttersControl::shutters->getLastPos;
|
||||||
|
|
||||||
my $reading =
|
my $reading =
|
||||||
$FHEM::Automation::ShuttersControl::ascDev->getWindSensorReading
|
$FHEM::Automation::ShuttersControl::ascDev->getWindSensorReading
|
||||||
@ -1414,35 +1415,38 @@ sub EventProcessingWind {
|
|||||||
{
|
{
|
||||||
$FHEM::Automation::ShuttersControl::shutters->setLastDrive(
|
$FHEM::Automation::ShuttersControl::shutters->setLastDrive(
|
||||||
'wind un-protected');
|
'wind un-protected');
|
||||||
$FHEM::Automation::ShuttersControl::shutters->setDriveCmd(
|
|
||||||
(
|
if ( $FHEM::Automation::ShuttersControl::shutters->getIsDay
|
||||||
$FHEM::Automation::ShuttersControl::shutters->getIsDay
|
&& !$FHEM::Automation::ShuttersControl::shutters
|
||||||
? $FHEM::Automation::ShuttersControl::shutters
|
->getIfInShading
|
||||||
->getLastPos
|
&& $FHEM::Automation::ShuttersControl::shutters->getLastPos
|
||||||
: (
|
== $FHEM::Automation::ShuttersControl::shutters
|
||||||
$FHEM::Automation::ShuttersControl::shutters
|
->getShadingPos )
|
||||||
->getShuttersPlace eq 'awning'
|
{
|
||||||
? $FHEM::Automation::ShuttersControl::shutters
|
$targetPos =
|
||||||
->getOpenPos
|
$FHEM::Automation::ShuttersControl::shutters->getOpenPos;
|
||||||
: (
|
}
|
||||||
|
else {
|
||||||
|
$targetPos =
|
||||||
|
$FHEM::Automation::ShuttersControl::shutters->getLastPos;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( !$FHEM::Automation::ShuttersControl::shutters->getIsDay ) {
|
||||||
|
$targetPos = (
|
||||||
$FHEM::Automation::ShuttersControl::shutters
|
$FHEM::Automation::ShuttersControl::shutters
|
||||||
->getPrivacyDownStatus == 2
|
->getPrivacyDownStatus == 2
|
||||||
? $FHEM::Automation::ShuttersControl::shutters
|
? $FHEM::Automation::ShuttersControl::shutters
|
||||||
->getPrivacyDownPos
|
->getPrivacyDownPos
|
||||||
: (
|
|
||||||
$FHEM::Automation::ShuttersControl::shutters
|
|
||||||
->getSleepPos > 0
|
|
||||||
? $FHEM::Automation::ShuttersControl::shutters
|
|
||||||
->getSleepPos
|
|
||||||
: $FHEM::Automation::ShuttersControl::shutters
|
: $FHEM::Automation::ShuttersControl::shutters
|
||||||
->getClosedPos
|
->getClosedPos
|
||||||
)
|
|
||||||
)
|
|
||||||
)
|
|
||||||
)
|
|
||||||
);
|
);
|
||||||
|
}
|
||||||
|
|
||||||
$FHEM::Automation::ShuttersControl::shutters
|
$FHEM::Automation::ShuttersControl::shutters
|
||||||
->setWindProtectionStatus('unprotected');
|
->setWindProtectionStatus('unprotected');
|
||||||
|
|
||||||
|
$FHEM::Automation::ShuttersControl::shutters->setDriveCmd(
|
||||||
|
$targetPos);
|
||||||
}
|
}
|
||||||
|
|
||||||
FHEM::Automation::ShuttersControl::ASC_Debug(
|
FHEM::Automation::ShuttersControl::ASC_Debug(
|
||||||
|
@ -154,6 +154,7 @@ sub _RainProtected {
|
|||||||
|
|
||||||
sub _RainUnprotected {
|
sub _RainUnprotected {
|
||||||
my $h = shift;
|
my $h = shift;
|
||||||
|
my $targetPos = $FHEM::Automation::ShuttersControl::shutters->getLastPos;
|
||||||
|
|
||||||
my $shuttersDev = $h->{shuttersdevice};
|
my $shuttersDev = $h->{shuttersdevice};
|
||||||
$FHEM::Automation::ShuttersControl::shutters->setShuttersDev($shuttersDev);
|
$FHEM::Automation::ShuttersControl::shutters->setShuttersDev($shuttersDev);
|
||||||
@ -170,29 +171,35 @@ sub _RainUnprotected {
|
|||||||
->setRainUnprotectionDelayObj('none');
|
->setRainUnprotectionDelayObj('none');
|
||||||
}
|
}
|
||||||
|
|
||||||
$FHEM::Automation::ShuttersControl::shutters->setDriveCmd(
|
if ( $FHEM::Automation::ShuttersControl::shutters->getIsDay
|
||||||
(
|
&& !$FHEM::Automation::ShuttersControl::shutters->getIfInShading
|
||||||
$FHEM::Automation::ShuttersControl::shutters->getIsDay
|
&& $FHEM::Automation::ShuttersControl::shutters->getLastPos ==
|
||||||
? $FHEM::Automation::ShuttersControl::shutters->getLastPos
|
$FHEM::Automation::ShuttersControl::shutters->getShadingPos )
|
||||||
: (
|
{
|
||||||
$FHEM::Automation::ShuttersControl::shutters->getShuttersPlace
|
$targetPos = $FHEM::Automation::ShuttersControl::shutters->getOpenPos;
|
||||||
eq 'awning'
|
}
|
||||||
? $FHEM::Automation::ShuttersControl::shutters->getOpenPos
|
else {
|
||||||
: (
|
$targetPos = $FHEM::Automation::ShuttersControl::shutters->getLastPos;
|
||||||
$FHEM::Automation::ShuttersControl::shutters
|
}
|
||||||
->getPrivacyDownStatus == 2
|
|
||||||
? $FHEM::Automation::ShuttersControl::shutters
|
if ( !$FHEM::Automation::ShuttersControl::shutters->getIsDay
|
||||||
->getPrivacyDownPos
|
&& $FHEM::Automation::ShuttersControl::shutters->getShuttersPlace ne
|
||||||
: $FHEM::Automation::ShuttersControl::shutters
|
'awning' )
|
||||||
->getClosedPos
|
{
|
||||||
)
|
$targetPos = (
|
||||||
)
|
$FHEM::Automation::ShuttersControl::shutters->getPrivacyDownStatus
|
||||||
)
|
== 2
|
||||||
) if ( IsAfterShuttersTimeBlocking($shuttersDev) );
|
? $FHEM::Automation::ShuttersControl::shutters->getPrivacyDownPos
|
||||||
|
: $FHEM::Automation::ShuttersControl::shutters->getClosedPos
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
$FHEM::Automation::ShuttersControl::shutters->setRainProtectionStatus(
|
$FHEM::Automation::ShuttersControl::shutters->setRainProtectionStatus(
|
||||||
'unprotected');
|
'unprotected');
|
||||||
|
|
||||||
|
$FHEM::Automation::ShuttersControl::shutters->setDriveCmd($targetPos)
|
||||||
|
if ( IsAfterShuttersTimeBlocking($shuttersDev) );
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -287,6 +287,8 @@ sub ShadingProcessing {
|
|||||||
|| $FHEM::Automation::ShuttersControl::shutters->getShadingMode eq 'off'
|
|| $FHEM::Automation::ShuttersControl::shutters->getShadingMode eq 'off'
|
||||||
|| $FHEM::Automation::ShuttersControl::ascDev
|
|| $FHEM::Automation::ShuttersControl::ascDev
|
||||||
->getAutoShuttersControlShading eq 'off'
|
->getAutoShuttersControlShading eq 'off'
|
||||||
|
|| $FHEM::Automation::ShuttersControl::shutters
|
||||||
|
->getExternalTriggerStatus
|
||||||
);
|
);
|
||||||
|
|
||||||
::Log3( $name, 4,
|
::Log3( $name, 4,
|
||||||
|
Loading…
Reference in New Issue
Block a user