mirror of
https://github.com/fhem/fhem-mirror.git
synced 2025-05-04 22:19:38 +00:00
73_AutoShuttersControl: add attribut ASC_RainProtection, bugfix
git-svn-id: https://svn.fhem.de/fhem/trunk@19287 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
parent
81da7016f4
commit
4e67e97ca6
@ -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.
|
||||
- feature: 73_AutoShuttersControl: add attribut ASC_RainProtection, bugfix
|
||||
- feature: 73_AutoShuttersControl: add attribut ASC_WindProtection
|
||||
- bugfix: 73_AutoShuttersControl: fix shutters drive after partyMode off and
|
||||
shutter have partyMode off attribut
|
||||
|
@ -44,7 +44,7 @@ use strict;
|
||||
use warnings;
|
||||
use FHEM::Meta;
|
||||
|
||||
my $version = '0.6.2';
|
||||
my $version = '0.6.3';
|
||||
|
||||
sub AutoShuttersControl_Initialize($) {
|
||||
my ($hash) = @_;
|
||||
@ -207,6 +207,7 @@ my %userAttrList = (
|
||||
'ASC_WindParameters' => '-',
|
||||
'ASC_DriveUpMaxDuration' => '-',
|
||||
'ASC_WindProtection:on,off' => '-',
|
||||
'ASC_RainProtection:on,off' => '-',
|
||||
);
|
||||
|
||||
my %posSetCmds = (
|
||||
@ -1187,7 +1188,7 @@ sub EventProcessingRain($@) {
|
||||
my $name = $device;
|
||||
my $reading = $ascDev->getRainSensorReading;
|
||||
|
||||
if ( $events =~ m#$reading:\s(\d+|rain|dry)# ) {
|
||||
if ( $events =~ m#$reading:\s(\d+(\.\d+)?|rain|dry)# ) {
|
||||
my $val;
|
||||
my $triggerMax = $ascDev->getRainTriggerMax;
|
||||
my $triggerMin = $ascDev->getRainTriggerMin;
|
||||
@ -1199,6 +1200,10 @@ sub EventProcessingRain($@) {
|
||||
|
||||
foreach my $shuttersDev ( @{ $hash->{helper}{shuttersList} } ) {
|
||||
$shutters->setShuttersDev($shuttersDev);
|
||||
|
||||
next
|
||||
if ( $shutters->getRainProtection eq 'off' );
|
||||
|
||||
if ( $val > $triggerMax
|
||||
and $shutters->getStatus != $closedPos
|
||||
and IsAfterShuttersManualBlocking($shuttersDev) )
|
||||
@ -1223,7 +1228,7 @@ sub EventProcessingWind($@) {
|
||||
$shutters->setShuttersDev($shuttersDev);
|
||||
|
||||
my $reading = $ascDev->getWindSensorReading;
|
||||
if ( $events =~ m#$reading:\s(\d+)# ) {
|
||||
if ( $events =~ m#$reading:\s(\d+(\.\d+)?)# ) {
|
||||
foreach my $shuttersDev ( @{ $hash->{helper}{shuttersList} } ) {
|
||||
$shutters->setShuttersDev($shuttersDev);
|
||||
|
||||
@ -1340,7 +1345,7 @@ sub EventProcessingBrightness($@) {
|
||||
);
|
||||
|
||||
my $reading = $shutters->getBrightnessReading;
|
||||
if ( $events =~ m#$reading:\s(\d+)# ) {
|
||||
if ( $events =~ m#$reading:\s(\d+(\.\d+)?)# ) {
|
||||
my $brightnessMinVal;
|
||||
if ( $shutters->getBrightnessMinVal > -1 ) {
|
||||
$brightnessMinVal = $shutters->getBrightnessMinVal;
|
||||
@ -1533,7 +1538,7 @@ sub EventProcessingShadingBrightness($@) {
|
||||
. ' - Es wird nun geprüft ob der übergebene Event ein nummerischer Wert vom Brightnessreading ist.'
|
||||
);
|
||||
|
||||
if ( $events =~ m#$reading:\s(\d+)# ) {
|
||||
if ( $events =~ m#$reading:\s(\d+(\.\d+)?)# ) {
|
||||
Log3(
|
||||
$name, 4,
|
||||
"AutoShuttersControl ($shuttersDev) - EventProcessingShadingBrightness
|
||||
@ -3965,7 +3970,7 @@ sub getWindMax {
|
||||
|
||||
$self->{ $self->{shuttersDev} }->{ASC_WindParameters}->{triggermax} = $max;
|
||||
$self->{ $self->{shuttersDev} }->{ASC_WindParameters}->{triggerhyst} =
|
||||
$hyst;
|
||||
( $hyst ne 'none' ? $max - $hyst : $max - 20 );
|
||||
$self->{ $self->{shuttersDev} }->{ASC_WindParameters}->{closedPos} =
|
||||
( $pos ne 'none' ? $pos : $shutters->getOpenPos );
|
||||
|
||||
@ -3996,6 +4001,12 @@ sub getWindProtection {
|
||||
return AttrVal( $self->{shuttersDev}, 'ASC_WindProtection', 'on' );
|
||||
}
|
||||
|
||||
sub getRainProtection {
|
||||
my $self = shift;
|
||||
|
||||
return AttrVal( $self->{shuttersDev}, 'ASC_RainProtection', 'on' );
|
||||
}
|
||||
|
||||
sub getModeUp {
|
||||
my $self = shift;
|
||||
|
||||
@ -4647,9 +4658,11 @@ sub _getRainSensor {
|
||||
( $reading ne 'none' ? $reading : 'state' );
|
||||
$self->{ASC_rainSensor}->{triggermax} = ( $max ne 'none' ? $max : 1000 );
|
||||
$self->{ASC_rainSensor}->{triggerhyst} =
|
||||
( $hyst ne 'none' ? $max - $hyst : ( $max * 0 ) );
|
||||
( $hyst ne 'none'
|
||||
? $max - $hyst
|
||||
: ( $self->{ASC_rainSensor}->{triggermax} * 0 ) );
|
||||
$self->{ASC_rainSensor}->{shuttersClosedPos} =
|
||||
( $pos ne 'none' ? $pos : 50 );
|
||||
( $pos ne 'none' ? $pos : $shutters->getClosedPos );
|
||||
|
||||
return $self->{ASC_rainSensor}->{device};
|
||||
}
|
||||
@ -5129,7 +5142,7 @@ sub getblockAscDrivesAfterManual {
|
||||
<li>ASC_Ventilate_Pos - in 10 Schritten von 0 bis 100, Default ist abhängig vom Attribut ASC</li>
|
||||
<li>ASC_Ventilate_Window_Open - auf lüften, wenn das Fenster gekippt/geöffnet wird und aktuelle Position unterhalb der Lüften-Position ist / default on wenn nicht gesetzt</li>
|
||||
<li>ASC_WiggleValue - Wert um welchen sich die Position des Rollladens ändern soll / default 5 wenn nicht gesetzt</li>
|
||||
<li>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' wenn nicht gesetzt</li>
|
||||
<li>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 das Attribut ASC_WindProtection auf off zu setzen. / default '50:20 ClosedPosition' wenn nicht gesetzt</li>
|
||||
<li>ASC_WindProtection - on/off aktiviert den Windschutz für diesen Rollladen. / default on wenn nicht gesetzt.</li>
|
||||
<li>ASC_WindowRec - Name des Fensterkontaktes, an dessen Fenster der Rollladen angebracht ist / default none wenn nicht gesetzt</li>
|
||||
<li>ASC_WindowRec_subType - Typ des verwendeten Fensterkontaktes: twostate (optisch oder magnetisch) oder threestate (Drehgriffkontakt) / default twostate wenn nicht gesetzt</li>
|
||||
|
Loading…
x
Reference in New Issue
Block a user