add setter so enable/disable ASC control global or shutter
This commit is contained in:
parent
e68b156d3d
commit
5928914e21
@ -338,6 +338,8 @@ sub Notify($$) {
|
||||
if ( $ascDev->getSelfDefense eq 'none' );
|
||||
readingsSingleUpdate( $hash, 'controlShading', 'off', 0 )
|
||||
if ( $ascDev->getAutoShuttersControlShading eq 'none' );
|
||||
readingsSingleUpdate( $hash, 'ascEnable', 'on', 0 )
|
||||
if ( $ascDev->getASCenable eq 'none' );
|
||||
|
||||
# Ist der Event ein globaler und passt zum Rest der Abfrage oben wird nach neuen Rolläden Devices gescannt und eine Liste im Rolladenmodul sortiert nach Raum generiert
|
||||
ShuttersDeviceScan($hash)
|
||||
@ -504,20 +506,41 @@ sub Set($$@) {
|
||||
return "usage: $cmd" if ( @args > 1 );
|
||||
readingsSingleUpdate( $hash, $cmd, join( ' ', @args ), 1 );
|
||||
}
|
||||
elsif ( lc $cmd eq 'ascenable' ) {
|
||||
return "usage: $cmd" if ( @args > 1 );
|
||||
readingsSingleUpdate( $hash, $cmd, join( ' ', @args ), 1 );
|
||||
}
|
||||
elsif ( lc $cmd eq 'shutterascenabletoggle' ) {
|
||||
return "usage: $cmd" if ( @args > 1 );
|
||||
readingsSingleUpdate(
|
||||
$defs{ $args[0] },
|
||||
'ASC_Enable',
|
||||
(
|
||||
ReadingsVal( $args[0], 'ASC_Enable', 'off' ) eq 'on'
|
||||
? 'off'
|
||||
: 'on'
|
||||
),
|
||||
1
|
||||
);
|
||||
}
|
||||
elsif ( lc $cmd eq 'wiggle' ) {
|
||||
return "usage: $cmd" if ( @args > 1 );
|
||||
|
||||
( $args[0] eq 'all' ? wiggleAll($hash) : wiggle( $hash, $args[0] ) );
|
||||
}
|
||||
else {
|
||||
my $list = "scanForShutters:noArg";
|
||||
my $list = 'scanForShutters:noArg';
|
||||
$list .=
|
||||
" renewSetSunriseSunsetTimer:noArg partyMode:on,off hardLockOut:on,off sunriseTimeWeHoliday:on,off controlShading:on,off selfDefense:on,off wiggle:all,"
|
||||
' renewSetSunriseSunsetTimer:noArg partyMode:on,off hardLockOut:on,off sunriseTimeWeHoliday:on,off controlShading:on,off selfDefense:on,off ascEnable:on,off wiggle:all,'
|
||||
. join( ',', @{ $hash->{helper}{shuttersList} } )
|
||||
if ( ReadingsVal( $name, 'userAttrList', 'none' ) eq 'rolled out' );
|
||||
$list .= " createNewNotifyDev:noArg"
|
||||
$list .= ' createNewNotifyDev:noArg'
|
||||
if ( ReadingsVal( $name, 'userAttrList', 'none' ) eq 'rolled out'
|
||||
and AttrVal( $name, 'ASC_expert', 0 ) == 1 );
|
||||
$list .=
|
||||
' shutterASCenableToggle:'
|
||||
. join( ',', @{ $hash->{helper}{shuttersList} } )
|
||||
if ( ReadingsVal( $name, 'userAttrList', 'none' ) eq 'rolled out' );
|
||||
|
||||
return "Unknown argument $cmd,choose one of $list";
|
||||
}
|
||||
@ -596,6 +619,8 @@ sub ShuttersDeviceScan($) {
|
||||
$shutters->setShadingStatus(
|
||||
( $shutters->getStatus != $shutters->getShadingPos ? 'out' : 'in' )
|
||||
);
|
||||
readingsSingleUpdate( $defs{$_}, 'ASC_Enable', 'on', 0 )
|
||||
if ( ReadingsVal( $_, 'ASC_Enable', 'none' ) eq 'none' );
|
||||
}
|
||||
|
||||
### Temporär und muss später entfernt werden
|
||||
@ -1356,10 +1381,12 @@ sub EventProcessingBrightness($@) {
|
||||
computeAlignTime( '24:00',
|
||||
$shutters->getTimeUpEarly ) / 86400
|
||||
)
|
||||
and ( not IsWe()
|
||||
and (
|
||||
not IsWe()
|
||||
or ( IsWe()
|
||||
and $ascDev->getSunriseTimeWeHoliday eq 'off' )
|
||||
) )
|
||||
)
|
||||
)
|
||||
or (
|
||||
int( gettimeofday() / 86400 ) != int(
|
||||
computeAlignTime( '24:00',
|
||||
@ -1435,10 +1462,12 @@ sub EventProcessingBrightness($@) {
|
||||
computeAlignTime( '24:00',
|
||||
$shutters->getTimeUpEarly ) / 86400
|
||||
)
|
||||
and ( not IsWe()
|
||||
and (
|
||||
not IsWe()
|
||||
or ( IsWe()
|
||||
and $ascDev->getSunriseTimeWeHoliday eq 'off' )
|
||||
) )
|
||||
)
|
||||
)
|
||||
or (
|
||||
int( gettimeofday() / 86400 ) != int(
|
||||
computeAlignTime( '24:00',
|
||||
@ -2096,12 +2125,10 @@ sub ShuttersCommandSet($$$) {
|
||||
or $shutters->getComfortOpenPos != $posValue )
|
||||
and $shutters->getVentilateOpen eq 'on'
|
||||
)
|
||||
or (
|
||||
CheckIfShuttersWindowRecOpen($shuttersDev) == 2
|
||||
or ( CheckIfShuttersWindowRecOpen($shuttersDev) == 2
|
||||
and $shutters->getSubTyp eq 'threestate'
|
||||
and $ascDev->getAutoShuttersControlComfort eq 'on'
|
||||
and $shutters->getVentilateOpen eq 'off'
|
||||
)
|
||||
and $shutters->getVentilateOpen eq 'off' )
|
||||
or (
|
||||
CheckIfShuttersWindowRecOpen($shuttersDev) == 2
|
||||
and ( $shutters->getLockOut eq 'soft'
|
||||
@ -3286,7 +3313,8 @@ sub SetCmdFn($) {
|
||||
if ( defined( $h->{lastDrive} ) );
|
||||
|
||||
return
|
||||
unless ( $shutters->getASC != 0 );
|
||||
unless ( $shutters->getASCenable eq 'on'
|
||||
and $ascDev->getASCenable eq 'on' );
|
||||
|
||||
if ( $shutters->getStatus != $posValue ) {
|
||||
$shutters->setLastPos( $shutters->getStatus );
|
||||
@ -3857,13 +3885,6 @@ BEGIN {
|
||||
);
|
||||
}
|
||||
|
||||
sub getASC {
|
||||
## Dient der Erkennung des Rolladen, 0 bedeutet soll nicht erkannt werden beim ersten Scan und soll nicht bediehnt werden wenn Events kommen
|
||||
my $self = shift;
|
||||
|
||||
return AttrVal( $self->{shuttersDev}, 'ASC', 0 );
|
||||
}
|
||||
|
||||
sub getAntiFreezePos {
|
||||
my $self = shift;
|
||||
|
||||
@ -4391,6 +4412,12 @@ sub getDelayCmd {
|
||||
return $self->{ $self->{shuttersDev} }{delayCmd};
|
||||
}
|
||||
|
||||
sub getASCenable {
|
||||
my $self = shift;
|
||||
|
||||
return ReadingsVal( $self->{shuttersDev}, 'ASC_Enable', 'on' );
|
||||
}
|
||||
|
||||
## Klasse Fenster (Window) und die Subklassen Attr und Readings ##
|
||||
package ASC_Window;
|
||||
our @ISA = qw(ASC_Window::Attr ASC_Window::Readings);
|
||||
@ -4658,6 +4685,13 @@ sub getElevation {
|
||||
return $elevation;
|
||||
}
|
||||
|
||||
sub getASCenable {
|
||||
my $self = shift;
|
||||
my $name = $self->{name};
|
||||
|
||||
return ReadingsVal( $name, 'ascEnable', 'none' );
|
||||
}
|
||||
|
||||
## Subklasse Attr ##
|
||||
package ASC_Dev::Attr;
|
||||
|
||||
@ -5197,7 +5231,9 @@ sub getblockAscDrivesAfterManual {
|
||||
<li>..._lastPosValue - letzte Position des Rollladen</li>
|
||||
<li>..._lastDelayPosValue - letzter abgesetzter Fahrbefehl, welcher beim nächsten zulässigen Event ausgeführt wird.</li>
|
||||
<li>partyMode - on/off - aktiviert den globalen Partymodus: Alle Rollladen Devices, welche das Attribut ASC_Partymode auf on gestellt haben, werden nicht mehr gesteuert. Der letzte Schaltbefehl, der durch ein Fensterevent oder Bewohnerstatus an die Rollläden gesendet wurde, wird beim off setzen durch set ASC-Device partyMode off ausgeführt</li>
|
||||
<li>lockOut - on/off - für das Aktivieren des Aussperrschutzes gemäß des entsprechenden Attributs ASC_LockOut im jeweiligen Rollladen. (siehe Beschreibung bei den Attributen für die Rollladendevices)</li>
|
||||
<li>ascEnable - on/off, globale ASC Steuerung bei den Rolllos aktiv oder inaktiv
|
||||
<li>controlShading - on/off, globale Beschattungsfunktion aktiv oder inaktiv
|
||||
<li>hardLockOut - on/off - für das Aktivieren des Aussperrschutzes gemäß des entsprechenden Attributs ASC_LockOut im jeweiligen Rollladen. (siehe Beschreibung bei den Attributen für die Rollladendevices)</li>
|
||||
<li>room_... - Auflistung aller Rollläden, welche in den jeweiligen Rämen gefunden wurde,Bsp.: room_Schlafzimmer,Terrasse</li>
|
||||
<li>state - Status des Devices: active,enabled,disabled oder Info zur letzten Fahrt</li>
|
||||
<li>sunriseTimeWeHoliday - on/off - wird das Rollladen Device Attribut ASC_Time_Up_WE_Holiday beachtet oder nicht</li>
|
||||
@ -5205,6 +5241,7 @@ sub getblockAscDrivesAfterManual {
|
||||
</ul><br>
|
||||
In den Rollläden Devices
|
||||
<ul>
|
||||
<li>ASC_Enable - on/off, wird das Rolllo über ASC gesteuert oder nicht</li>
|
||||
<li>ASC_Time_DriveUp - Sonnenaufgangszeit für das Rollo</li>
|
||||
<li>ASC_Time_DriveDown - Sonnenuntergangszeit für das Rollo</li>
|
||||
<li>ASC_ShuttersLastDrive - Grund des letzten Fahrens vom Rollladen</li>
|
||||
@ -5214,6 +5251,7 @@ sub getblockAscDrivesAfterManual {
|
||||
<a name="AutoShuttersControlSet"></a>
|
||||
<b>Set</b>
|
||||
<ul>
|
||||
<li>ascEnable - on/off, aktivieren oder deaktiveren der globalen ASC Steuerung</li>
|
||||
<li>partyMode - on/off - aktiviert den globalen Partymodus. Siehe Reading partyMode</li>
|
||||
<li>lockOut - on/off - aktiviert den globalen Aussperrschutz. Siehe Reading partyMode</li>
|
||||
<li>renewSetSunriseSunsetTimer - erneuert bei allen Rollläden die Zeiten für Sunset und Sunrise und setzt die internen Timer neu.</li>
|
||||
@ -5221,6 +5259,7 @@ sub getblockAscDrivesAfterManual {
|
||||
<li>sunriseTimeWeHoliday - on/off - aktiviert/deaktiviert die Beachtung des Rollladen Device Attributes ASC_Time_Up_WE_Holiday</li>
|
||||
<li>createNewNotifyDev - Legt die interne Struktur für NOTIFYDEV neu an - das Attribut ASC_expert muss 1 sein.</li>
|
||||
<li>selfDefense - on/off - aktiviert/deaktiviert den Selbstschutz, wenn das Residents Device absent meldet, selfDefense aktiv ist und ein Fenster im Haus noch offen steht, wird an diesem Fenster das Rollo runtergefahren</li>
|
||||
<li>shutterASCenableToggle - on/off, aktivieren oder deaktiveren der ASC Kontrolle beim einzelnen Rolllo</li>
|
||||
<li>wiggle - bewegt einen Rollladen oder alle Rollläden (für Abschreckungszwecke bei der Alarmierung) um 5%, und nach 1 Minute wieder zurück zur Ursprungsposition</li>
|
||||
</ul>
|
||||
<br><br>
|
||||
|
Loading…
Reference in New Issue
Block a user