add Wind and Rain Protection query for shading
This commit is contained in:
parent
6c3f5735fc
commit
54926ed6df
@ -44,7 +44,7 @@ use strict;
|
|||||||
use warnings;
|
use warnings;
|
||||||
use FHEM::Meta;
|
use FHEM::Meta;
|
||||||
|
|
||||||
my $version = '0.6.5.3';
|
my $version = '0.6.5.8';
|
||||||
|
|
||||||
sub AutoShuttersControl_Initialize($) {
|
sub AutoShuttersControl_Initialize($) {
|
||||||
my ($hash) = @_;
|
my ($hash) = @_;
|
||||||
@ -1234,17 +1234,23 @@ sub EventProcessingRain($@) {
|
|||||||
|
|
||||||
if ( $val > $triggerMax
|
if ( $val > $triggerMax
|
||||||
and $shutters->getStatus != $closedPos
|
and $shutters->getStatus != $closedPos
|
||||||
and IsAfterShuttersManualBlocking($shuttersDev) )
|
and IsAfterShuttersManualBlocking($shuttersDev)
|
||||||
|
and $shutters->getRainProtectionStatus eq 'unprotection'
|
||||||
|
)
|
||||||
{
|
{
|
||||||
$shutters->setLastDrive('rain protection');
|
$shutters->setLastDrive('rain protection');
|
||||||
$shutters->setDriveCmd($closedPos);
|
$shutters->setDriveCmd($closedPos);
|
||||||
|
$shutters->setRainProtectionStatus('protection');
|
||||||
}
|
}
|
||||||
elsif ( ( $val == 0 or $val < $triggerMax )
|
elsif ( ( $val == 0 or $val < $triggerMax )
|
||||||
and $shutters->getStatus == $closedPos
|
and $shutters->getStatus == $closedPos
|
||||||
and IsAfterShuttersManualBlocking($shuttersDev) )
|
and IsAfterShuttersManualBlocking($shuttersDev)
|
||||||
|
and $shutters->getRainProtectionStatus eq 'protection'
|
||||||
|
)
|
||||||
{
|
{
|
||||||
$shutters->setLastDrive('rain un-protection');
|
$shutters->setLastDrive('rain un-protection');
|
||||||
$shutters->setDriveCmd( $shutters->getLastPos );
|
$shutters->setDriveCmd( $shutters->getLastPos );
|
||||||
|
$shutters->setRainProtectionStatus('unprotection');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1271,10 +1277,6 @@ sub EventProcessingWind($@) {
|
|||||||
. ' Bekommender Wert1: '
|
. ' Bekommender Wert1: '
|
||||||
. $1 );
|
. $1 );
|
||||||
|
|
||||||
$shutters->setWindProtectionStatus('unprotection')
|
|
||||||
if ( not defined( $shutters->getWindProtectionStatus )
|
|
||||||
or not $shutters->getWindProtectionStatus );
|
|
||||||
|
|
||||||
next
|
next
|
||||||
if (
|
if (
|
||||||
(
|
(
|
||||||
@ -1589,6 +1591,8 @@ sub EventProcessingShadingBrightness($@) {
|
|||||||
)
|
)
|
||||||
and IsDay($shuttersDev)
|
and IsDay($shuttersDev)
|
||||||
and $ascDev->getAutoShuttersControlShading eq 'on'
|
and $ascDev->getAutoShuttersControlShading eq 'on'
|
||||||
|
and $shutters->getRainProtectionStatus eq 'unprotection'
|
||||||
|
and $shutters->getWindProtectionStatus eq 'unprotection'
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
ShadingProcessing(
|
ShadingProcessing(
|
||||||
@ -1657,6 +1661,8 @@ sub EventProcessingTwilightDevice($@) {
|
|||||||
)
|
)
|
||||||
and IsDay($shuttersDev)
|
and IsDay($shuttersDev)
|
||||||
and $ascDev->getAutoShuttersControlShading eq 'on'
|
and $ascDev->getAutoShuttersControlShading eq 'on'
|
||||||
|
and $shutters->getRainProtectionStatus eq 'unprotection'
|
||||||
|
and $shutters->getWindProtectionStatus eq 'unprotection'
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
ShadingProcessing(
|
ShadingProcessing(
|
||||||
@ -3637,6 +3643,14 @@ sub setWindProtectionStatus { # Werte protection, unprotection
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
sub setRainProtectionStatus { # Werte protection, unprotection
|
||||||
|
my ( $self, $value ) = @_;
|
||||||
|
|
||||||
|
$self->{ $self->{shuttersDev} }->{RainProtection}->{VAL} = $value
|
||||||
|
if ( defined($value) );
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
sub getShadingStatus { # Werte für value = in, out, in reserved, out reserved
|
sub getShadingStatus { # Werte für value = in, out, in reserved, out reserved
|
||||||
my $self = shift;
|
my $self = shift;
|
||||||
|
|
||||||
@ -3660,11 +3674,19 @@ sub getIfInShading {
|
|||||||
sub getWindProtectionStatus { # Werte protection, unprotection
|
sub getWindProtectionStatus { # Werte protection, unprotection
|
||||||
my $self = shift;
|
my $self = shift;
|
||||||
|
|
||||||
return $self->{ $self->{shuttersDev} }->{ASC_WindParameters}->{VAL}
|
return ( defined( $self->{ $self->{shuttersDev} }->{ASC_WindParameters})
|
||||||
if ( defined( $self->{ $self->{shuttersDev} }->{ASC_WindParameters} )
|
|
||||||
and
|
and
|
||||||
defined( $self->{ $self->{shuttersDev} }->{ASC_WindParameters}->{VAL} )
|
defined( $self->{ $self->{shuttersDev} }->{ASC_WindParameters}->{VAL})
|
||||||
);
|
? $self->{ $self->{shuttersDev} }->{ASC_WindParameters}->{VAL} : 'unprotection' );
|
||||||
|
}
|
||||||
|
|
||||||
|
sub getRainProtectionStatus { # Werte protection, unprotection
|
||||||
|
my $self = shift;
|
||||||
|
|
||||||
|
return ( defined( $self->{ $self->{shuttersDev} }->{RainProtection})
|
||||||
|
and
|
||||||
|
defined( $self->{ $self->{shuttersDev} }->{RainProtection}->{VAL})
|
||||||
|
? $self->{ $self->{shuttersDev} }->{RainProtection}->{VAL} : 'unprotection' );
|
||||||
}
|
}
|
||||||
|
|
||||||
sub getShadingStatusTimestamp {
|
sub getShadingStatusTimestamp {
|
||||||
@ -4951,7 +4973,7 @@ sub getblockAscDrivesAfterManual {
|
|||||||
<li>ASC_BlockingTime_afterManual - wie viel Sekunden soll die Automatik nach einer manuellen Fahrt aus setzen. / default 1200 wenn nicht gesetzt</li>
|
<li>ASC_BlockingTime_afterManual - wie viel Sekunden soll die Automatik nach einer manuellen Fahrt aus setzen. / default 1200 wenn nicht gesetzt</li>
|
||||||
<li>ASC_BlockingTime_beforDayOpen - wie viel Sekunden vor dem morgendlichen öffnen soll keine schließen Fahrt mehr statt finden. / default 3600 wenn nicht gesetzt</li>
|
<li>ASC_BlockingTime_beforDayOpen - wie viel Sekunden vor dem morgendlichen öffnen soll keine schließen Fahrt mehr statt finden. / default 3600 wenn nicht gesetzt</li>
|
||||||
<li>ASC_BlockingTime_beforNightClose - wie viel Sekunden vor dem nächtlichen schlie&zlig;en soll keine öffnen Fahrt mehr statt finden. / default 3600 wenn nicht gesetzt</li>
|
<li>ASC_BlockingTime_beforNightClose - wie viel Sekunden vor dem nächtlichen schlie&zlig;en soll keine öffnen Fahrt mehr statt finden. / default 3600 wenn nicht gesetzt</li>
|
||||||
<li>ASC_BrightnessSensor - DEVICE:READING WERT-MORGENS:WERT-ABENDS / 'Helligkeit:brightness 400:800' Angaben zum Helligkeitssensor und den Brightnesswerten für Sonnenuntergang und Sonnenaufgang. Die Sensor Device Angaben werden auch für die Beschattung verwendet. / default none wenn nicht gesetzt</li>
|
<li>ASC_BrightnessSensor - DEVICE[:READING] WERT-MORGENS:WERT-ABENDS / 'Sensorname[:brightness [400:800]]' Angaben zum Helligkeitssensor mit (Readingname, optional) für die Beschattung und dem Fahren der Rollladen nach brightness und den optionalen Brightnesswerten für Sonnenauf- und Sonnenuntergang. / default none wenn nicht gesetzt</li>
|
||||||
<li>ASC_Closed_Pos - in 10 Schritten von 0 bis 100, Default ist abhängig vom Attribut ASC</li>
|
<li>ASC_Closed_Pos - in 10 Schritten von 0 bis 100, Default ist abhängig vom Attribut ASC</li>
|
||||||
<li>ASC_ComfortOpen_Pos - in 10 Schritten von 0 bis 100, Default ist abhängig vom Attribut ASC</li>
|
<li>ASC_ComfortOpen_Pos - in 10 Schritten von 0 bis 100, Default ist abhängig vom Attribut ASC</li>
|
||||||
<li>ASC_Down - astro/time/brightness - bei astro wird Sonnenuntergang berechnet, bei time wird der Wert aus ASC_Time_Down_Early als Fahrzeit verwendet und bei brightness muss ASC_Time_Down_Early und ASC_Time_Down_Late korrekt gesetzt werden. Der Timer läuft dann nach ASC_Time_Down_Late Zeit, es wird aber in der Zeit zwischen ASC_Time_Down_Early und ASC_Time_Down_Late geschaut, ob die als Attribut im Moduldevice hinterlegte ASC_brightnessMinVal erreicht wurde. Wenn ja, wird der Rollladen runter gefahren / default astro wenn nicht gesetzt</li>
|
<li>ASC_Down - astro/time/brightness - bei astro wird Sonnenuntergang berechnet, bei time wird der Wert aus ASC_Time_Down_Early als Fahrzeit verwendet und bei brightness muss ASC_Time_Down_Early und ASC_Time_Down_Late korrekt gesetzt werden. Der Timer läuft dann nach ASC_Time_Down_Late Zeit, es wird aber in der Zeit zwischen ASC_Time_Down_Early und ASC_Time_Down_Late geschaut, ob die als Attribut im Moduldevice hinterlegte ASC_brightnessMinVal erreicht wurde. Wenn ja, wird der Rollladen runter gefahren / default astro wenn nicht gesetzt</li>
|
||||||
@ -5162,6 +5184,7 @@ sub getblockAscDrivesAfterManual {
|
|||||||
<li>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</li>
|
<li>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</li>
|
||||||
<li>ASC_PrivacyDownTime_beforNightClose - wie viele Sekunden vor dem abendlichen schließen soll der Rollladen in die Sichtschutzposition fahren, / default -1 wenn nicht gesetzt</li>
|
<li>ASC_PrivacyDownTime_beforNightClose - wie viele Sekunden vor dem abendlichen schließen soll der Rollladen in die Sichtschutzposition fahren, / default -1 wenn nicht gesetzt</li>
|
||||||
<li>ASC_PrivacyDown_Pos - Position den Rollladens für den Sichtschutz / default 50 wenn nicht gesetzt</li>
|
<li>ASC_PrivacyDown_Pos - Position den Rollladens für den Sichtschutz / default 50 wenn nicht gesetzt</li>
|
||||||
|
<li>ASC_WindProtection - on/off soll das Rolllo beim Regenschutz beachtet werden. On=JA, off=NEIN.</li>
|
||||||
<li>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 wenn nicht gesetzt</li>
|
<li>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 wenn nicht gesetzt</li>
|
||||||
<li>ASC_Roommate_Reading - das Reading zum Roommate Device, welches den Status wieder gibt / default state wenn nicht gesetzt</li>
|
<li>ASC_Roommate_Reading - das Reading zum Roommate Device, welches den Status wieder gibt / default state wenn nicht gesetzt</li>
|
||||||
<li>ASC_Self_Defense_Exclude - on/off - bei on Wert wird dieser Rollladen bei aktiven Self Defense und offenen Fenster nicht runter gefahren, wenn Residents absent ist. / default off wenn nicht gesetzt</li>
|
<li>ASC_Self_Defense_Exclude - on/off - bei on Wert wird dieser Rollladen bei aktiven Self Defense und offenen Fenster nicht runter gefahren, wenn Residents absent ist. / default off wenn nicht gesetzt</li>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user