Implementation for rain unprotected delay drive,
split rain function in to new asc rain package
This commit is contained in:
parent
f1124548da
commit
36285e57bb
@ -4,10 +4,10 @@ UPD 2020-06-22_09:41:40 2657 lib/FHEM/Automation/ShuttersControl/Dev.pm
|
|||||||
UPD 2020-07-26_17:36:29 2496 lib/FHEM/Automation/ShuttersControl/Roommate.pm
|
UPD 2020-07-26_17:36:29 2496 lib/FHEM/Automation/ShuttersControl/Roommate.pm
|
||||||
UPD 2021-02-26_14:36:10 31487 lib/FHEM/Automation/ShuttersControl/Shutters.pm
|
UPD 2021-02-26_14:36:10 31487 lib/FHEM/Automation/ShuttersControl/Shutters.pm
|
||||||
UPD 2021-04-21_13:21:26 25329 lib/FHEM/Automation/ShuttersControl/Shading.pm
|
UPD 2021-04-21_13:21:26 25329 lib/FHEM/Automation/ShuttersControl/Shading.pm
|
||||||
UPD 2021-04-21_13:19:58 110498 lib/FHEM/Automation/ShuttersControl/EventProcessingFunctions.pm
|
UPD 2021-04-27_07:46:21 108203 lib/FHEM/Automation/ShuttersControl/EventProcessingFunctions.pm
|
||||||
UPD 2021-02-26_14:36:10 40628 lib/FHEM/Automation/ShuttersControl/Helper.pm
|
UPD 2021-02-26_14:36:10 40628 lib/FHEM/Automation/ShuttersControl/Helper.pm
|
||||||
UPD 2020-06-22_09:41:40 2175 lib/FHEM/Automation/ShuttersControl/Window.pm
|
UPD 2020-06-22_09:41:40 2175 lib/FHEM/Automation/ShuttersControl/Window.pm
|
||||||
UPD 2021-01-29_10:06:33 11742 lib/FHEM/Automation/ShuttersControl/Dev/Attr.pm
|
UPD 2021-04-27_07:52:31 11742 lib/FHEM/Automation/ShuttersControl/Dev/Attr.pm
|
||||||
UPD 2020-07-03_11:29:10 7251 lib/FHEM/Automation/ShuttersControl/Dev/Readings.pm
|
UPD 2020-07-03_11:29:10 7251 lib/FHEM/Automation/ShuttersControl/Dev/Readings.pm
|
||||||
UPD 2021-01-29_10:06:33 52525 lib/FHEM/Automation/ShuttersControl/Shutters/Attr.pm
|
UPD 2021-01-29_10:06:33 52525 lib/FHEM/Automation/ShuttersControl/Shutters/Attr.pm
|
||||||
UPD 2020-06-22_09:41:40 2903 lib/FHEM/Automation/ShuttersControl/Shutters/Readings.pm
|
UPD 2020-06-22_09:41:40 2903 lib/FHEM/Automation/ShuttersControl/Shutters/Readings.pm
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
#
|
#
|
||||||
# Developed with Kate
|
# Developed with Kate
|
||||||
#
|
#
|
||||||
# (c) 2018-2020 Copyright: Marko Oldenburg (fhemsupport@cooltux.net)
|
# (c) 2018-2021 Copyright: Marko Oldenburg (fhemdevelopment@cooltux.net)
|
||||||
# All rights reserved
|
# All rights reserved
|
||||||
#
|
#
|
||||||
# Special thanks goes to:
|
# Special thanks goes to:
|
||||||
@ -49,6 +49,7 @@ use Data::Dumper; #only for Debugging
|
|||||||
|
|
||||||
use FHEM::Automation::ShuttersControl::Helper qw (:ALL);
|
use FHEM::Automation::ShuttersControl::Helper qw (:ALL);
|
||||||
use FHEM::Automation::ShuttersControl::Shading qw (:ALL);
|
use FHEM::Automation::ShuttersControl::Shading qw (:ALL);
|
||||||
|
use FHEM::Automation::ShuttersControl::Rain qw (:ALL);
|
||||||
|
|
||||||
require Exporter;
|
require Exporter;
|
||||||
our @ISA = qw(Exporter);
|
our @ISA = qw(Exporter);
|
||||||
@ -1270,70 +1271,12 @@ sub EventProcessingRain {
|
|||||||
$FHEM::Automation::ShuttersControl::ascDev->getRainTriggerMax;
|
$FHEM::Automation::ShuttersControl::ascDev->getRainTriggerMax;
|
||||||
my $triggerMin =
|
my $triggerMin =
|
||||||
$FHEM::Automation::ShuttersControl::ascDev->getRainTriggerMin;
|
$FHEM::Automation::ShuttersControl::ascDev->getRainTriggerMin;
|
||||||
my $closedPos = $FHEM::Automation::ShuttersControl::ascDev
|
|
||||||
->getRainSensorShuttersClosedPos;
|
|
||||||
|
|
||||||
if ( $1 eq 'rain' ) { $val = $triggerMax + 1 }
|
if ( $1 eq 'rain' ) { $val = $triggerMax + 1 }
|
||||||
elsif ( $1 eq 'dry' ) { $val = $triggerMin }
|
elsif ( $1 eq 'dry' ) { $val = $triggerMin }
|
||||||
else { $val = $1 }
|
else { $val = $1 }
|
||||||
|
|
||||||
RainProtection( $hash, $val, $triggerMax, $triggerMin, $closedPos );
|
RainProtection( $hash, $val, $triggerMax, $triggerMin );
|
||||||
}
|
|
||||||
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
sub RainProtection {
|
|
||||||
my ( $hash, $val, $triggerMax, $triggerMin, $closedPos ) = @_;
|
|
||||||
|
|
||||||
for my $shuttersDev ( @{ $hash->{helper}{shuttersList} } ) {
|
|
||||||
$FHEM::Automation::ShuttersControl::shutters->setShuttersDev(
|
|
||||||
$shuttersDev);
|
|
||||||
|
|
||||||
next
|
|
||||||
if (
|
|
||||||
$FHEM::Automation::ShuttersControl::shutters->getRainProtection eq
|
|
||||||
'off' );
|
|
||||||
|
|
||||||
if ( $val > $triggerMax
|
|
||||||
&& $FHEM::Automation::ShuttersControl::shutters->getStatus !=
|
|
||||||
$closedPos
|
|
||||||
&& $FHEM::Automation::ShuttersControl::shutters
|
|
||||||
->getRainProtectionStatus eq 'unprotected' )
|
|
||||||
{
|
|
||||||
$FHEM::Automation::ShuttersControl::shutters->setLastDrive(
|
|
||||||
'rain protected');
|
|
||||||
$FHEM::Automation::ShuttersControl::shutters->setDriveCmd(
|
|
||||||
$closedPos);
|
|
||||||
$FHEM::Automation::ShuttersControl::shutters
|
|
||||||
->setRainProtectionStatus('protected');
|
|
||||||
}
|
|
||||||
elsif ( ( $val == 0 || $val < $triggerMin )
|
|
||||||
&& $FHEM::Automation::ShuttersControl::shutters->getStatus ==
|
|
||||||
$closedPos
|
|
||||||
&& IsAfterShuttersManualBlocking($shuttersDev)
|
|
||||||
&& $FHEM::Automation::ShuttersControl::shutters
|
|
||||||
->getRainProtectionStatus eq 'protected' )
|
|
||||||
{
|
|
||||||
$FHEM::Automation::ShuttersControl::shutters->setLastDrive(
|
|
||||||
'rain un-protected');
|
|
||||||
$FHEM::Automation::ShuttersControl::shutters->setDriveCmd(
|
|
||||||
(
|
|
||||||
$FHEM::Automation::ShuttersControl::shutters->getIsDay
|
|
||||||
? $FHEM::Automation::ShuttersControl::shutters->getLastPos
|
|
||||||
: (
|
|
||||||
$FHEM::Automation::ShuttersControl::shutters
|
|
||||||
->getPrivacyDownStatus == 2
|
|
||||||
? $FHEM::Automation::ShuttersControl::shutters
|
|
||||||
->getPrivacyDownPos
|
|
||||||
: $FHEM::Automation::ShuttersControl::shutters
|
|
||||||
->getClosedPos
|
|
||||||
)
|
|
||||||
)
|
|
||||||
);
|
|
||||||
$FHEM::Automation::ShuttersControl::shutters
|
|
||||||
->setRainProtectionStatus('unprotected');
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return;
|
return;
|
||||||
|
146
lib/FHEM/Automation/ShuttersControl/Rainprotection.pm
Normal file
146
lib/FHEM/Automation/ShuttersControl/Rainprotection.pm
Normal file
@ -0,0 +1,146 @@
|
|||||||
|
###############################################################################
|
||||||
|
#
|
||||||
|
# Developed with Kate
|
||||||
|
#
|
||||||
|
# (c) 2018-2021 Copyright: Marko Oldenburg (fhemdevelopment@cooltux.net)
|
||||||
|
# All rights reserved
|
||||||
|
#
|
||||||
|
# Special thanks goes to:
|
||||||
|
# - Bernd (Cluni) this module is based on the logic of his script "Rollladensteuerung für HM/ROLLO inkl. Abschattung und Komfortfunktionen in Perl" (https://forum.fhem.de/index.php/topic,73964.0.html)
|
||||||
|
# - Beta-User for many tests, many suggestions and good discussions
|
||||||
|
# - pc1246 write english commandref
|
||||||
|
# - FunkOdyssey commandref style
|
||||||
|
# - sledge fix many typo in commandref
|
||||||
|
# - many User that use with modul and report bugs
|
||||||
|
# - Christoph (christoph.kaiser.in) Patch that expand RegEx for Window Events
|
||||||
|
# - Julian (Loredo) expand Residents Events for new Residents functions
|
||||||
|
# - Christoph (Christoph Morrison) for fix Commandref, many suggestions and good discussions
|
||||||
|
#
|
||||||
|
#
|
||||||
|
# This script is free software; you can redistribute it and/or modify
|
||||||
|
# it under the terms of the GNU General Public License as published by
|
||||||
|
# the Free Software Foundation; either version 2 of the License,or
|
||||||
|
# any later version.
|
||||||
|
#
|
||||||
|
# The GNU General Public License can be found at
|
||||||
|
# http://www.gnu.org/copyleft/gpl.html.
|
||||||
|
# A copy is found in the textfile GPL.txt and important notices to the license
|
||||||
|
# from the author is found in LICENSE.txt distributed with these scripts.
|
||||||
|
#
|
||||||
|
# This script is distributed in the hope that it will be useful,
|
||||||
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
# GNU General Public License for more details.
|
||||||
|
#
|
||||||
|
#
|
||||||
|
# $Id$
|
||||||
|
#
|
||||||
|
###############################################################################
|
||||||
|
|
||||||
|
## unserer packagename
|
||||||
|
package FHEM::Automation::ShuttersControl::Rainprotection;
|
||||||
|
|
||||||
|
use strict;
|
||||||
|
use warnings;
|
||||||
|
use utf8;
|
||||||
|
|
||||||
|
require Exporter;
|
||||||
|
our @ISA = qw(Exporter);
|
||||||
|
our @EXPORT_OK = qw(
|
||||||
|
RainProcessing
|
||||||
|
);
|
||||||
|
our %EXPORT_TAGS = (
|
||||||
|
ALL => [
|
||||||
|
qw(
|
||||||
|
RainProcessing
|
||||||
|
)
|
||||||
|
],
|
||||||
|
);
|
||||||
|
|
||||||
|
|
||||||
|
sub RainProcessing {
|
||||||
|
my ( $hash, $val, $triggerMax, $triggerMin ) = @_;
|
||||||
|
|
||||||
|
my $rainClosedPos = $FHEM::Automation::ShuttersControl::ascDev
|
||||||
|
->getRainSensorShuttersClosedPos;
|
||||||
|
|
||||||
|
for my $shuttersDev ( @{ $hash->{helper}{shuttersList} } ) {
|
||||||
|
$FHEM::Automation::ShuttersControl::shutters->setShuttersDev(
|
||||||
|
$shuttersDev);
|
||||||
|
|
||||||
|
next
|
||||||
|
if (
|
||||||
|
$FHEM::Automation::ShuttersControl::shutters->getRainProtection eq
|
||||||
|
'off' );
|
||||||
|
|
||||||
|
if ( $val > $triggerMax
|
||||||
|
&& $FHEM::Automation::ShuttersControl::shutters->getStatus !=
|
||||||
|
$rainClosedPos
|
||||||
|
&& $FHEM::Automation::ShuttersControl::shutters
|
||||||
|
->getRainProtectionStatus eq 'unprotected' )
|
||||||
|
{
|
||||||
|
_RainProtected();
|
||||||
|
}
|
||||||
|
elsif ( ( $val == 0 || $val < $triggerMin )
|
||||||
|
&& $FHEM::Automation::ShuttersControl::shutters->getStatus ==
|
||||||
|
$rainClosedPos
|
||||||
|
&& IsAfterShuttersManualBlocking($shuttersDev)
|
||||||
|
&& $FHEM::Automation::ShuttersControl::shutters
|
||||||
|
->getRainProtectionStatus eq 'protected' )
|
||||||
|
{
|
||||||
|
%funcHash = (
|
||||||
|
shuttersdevice => $shuttersDev,
|
||||||
|
);
|
||||||
|
|
||||||
|
InternalTimer( InternalTimer( ::gettimeofday() + $FHEM::Automation::ShuttersControl::shutters->getRainWaitingTime
|
||||||
|
, \&_RainUnprotected
|
||||||
|
, \%funcHash );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
### es muss noch beobachtet werden ob die Auswahl des Rollos welches bearbeitet werden soll bestehen bleibt oder mit in die neuen Funktionen übergeben werden muss
|
||||||
|
sub _RainProtected {
|
||||||
|
$FHEM::Automation::ShuttersControl::shutters->setLastDrive(
|
||||||
|
'rain protected');
|
||||||
|
$FHEM::Automation::ShuttersControl::shutters->setDriveCmd(
|
||||||
|
$FHEM::Automation::ShuttersControl::ascDev
|
||||||
|
->getRainSensorShuttersClosedPos);
|
||||||
|
$FHEM::Automation::ShuttersControl::shutters
|
||||||
|
->setRainProtectionStatus('protected');
|
||||||
|
}
|
||||||
|
|
||||||
|
sub _RainUnprotected {
|
||||||
|
my $h = shift;
|
||||||
|
|
||||||
|
my $shuttersDev = $h->{shuttersdevice};
|
||||||
|
$FHEM::Automation::ShuttersControl::shutters->setShuttersDev(
|
||||||
|
$shuttersDev);
|
||||||
|
|
||||||
|
$FHEM::Automation::ShuttersControl::shutters->setLastDrive(
|
||||||
|
'rain un-protected');
|
||||||
|
$FHEM::Automation::ShuttersControl::shutters->setDriveCmd(
|
||||||
|
(
|
||||||
|
$FHEM::Automation::ShuttersControl::shutters->getIsDay
|
||||||
|
? $FHEM::Automation::ShuttersControl::shutters->getLastPos
|
||||||
|
: (
|
||||||
|
$FHEM::Automation::ShuttersControl::shutters
|
||||||
|
->getPrivacyDownStatus == 2
|
||||||
|
? $FHEM::Automation::ShuttersControl::shutters
|
||||||
|
->getPrivacyDownPos
|
||||||
|
: $FHEM::Automation::ShuttersControl::shutters
|
||||||
|
->getClosedPos
|
||||||
|
)
|
||||||
|
)
|
||||||
|
);
|
||||||
|
|
||||||
|
$FHEM::Automation::ShuttersControl::shutters
|
||||||
|
->setRainProtectionStatus('unprotected');
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
1;
|
Loading…
x
Reference in New Issue
Block a user