add rainsensor support, add trigger all timer attribut events and renew timers
This commit is contained in:
parent
8dcbd75ef5
commit
4e9ddbf4e2
@ -38,7 +38,7 @@ package main;
|
|||||||
use strict;
|
use strict;
|
||||||
use warnings;
|
use warnings;
|
||||||
|
|
||||||
my $version = "0.1.81";
|
my $version = "0.1.81.13";
|
||||||
|
|
||||||
sub AutoShuttersControl_Initialize($) {
|
sub AutoShuttersControl_Initialize($) {
|
||||||
my ($hash) = @_;
|
my ($hash) = @_;
|
||||||
@ -69,6 +69,9 @@ sub AutoShuttersControl_Initialize($) {
|
|||||||
. "ASC_sunElevationReading "
|
. "ASC_sunElevationReading "
|
||||||
. "ASC_residentsDevice "
|
. "ASC_residentsDevice "
|
||||||
. "ASC_residentsDeviceReading "
|
. "ASC_residentsDeviceReading "
|
||||||
|
. "ASC_rainSensorDevice "
|
||||||
|
. "ASC_rainSensorReading "
|
||||||
|
. "ASC_rainSensorShuttersClosedPos:0,10,20,30,40,50,60,70,80,90,100 "
|
||||||
. "ASC_autoAstroModeMorning:REAL,CIVIL,NAUTIC,ASTRONOMIC,HORIZON "
|
. "ASC_autoAstroModeMorning:REAL,CIVIL,NAUTIC,ASTRONOMIC,HORIZON "
|
||||||
. "ASC_autoAstroModeMorningHorizon:-9,-8,-7,-6,-5,-4,-3,-2,-1,0,1,2,3,4,5,6,7,8,9 "
|
. "ASC_autoAstroModeMorningHorizon:-9,-8,-7,-6,-5,-4,-3,-2,-1,0,1,2,3,4,5,6,7,8,9 "
|
||||||
. "ASC_autoAstroModeEvening:REAL,CIVIL,NAUTIC,ASTRONOMIC,HORIZON "
|
. "ASC_autoAstroModeEvening:REAL,CIVIL,NAUTIC,ASTRONOMIC,HORIZON "
|
||||||
@ -76,6 +79,7 @@ sub AutoShuttersControl_Initialize($) {
|
|||||||
. "ASC_antifreezeTemp:-5,-4,-3,-2,-1,0,1,2,3,4,5 "
|
. "ASC_antifreezeTemp:-5,-4,-3,-2,-1,0,1,2,3,4,5 "
|
||||||
. "ASC_timeUpHolidayDevice "
|
. "ASC_timeUpHolidayDevice "
|
||||||
. $readingFnAttributes;
|
. $readingFnAttributes;
|
||||||
|
$hash->{NotifyOrderPrefix} = "51-"; # Order Nummer für NotifyFn
|
||||||
|
|
||||||
## Ist nur damit sich bei einem reload auch die Versionsnummer erneuert.
|
## Ist nur damit sich bei einem reload auch die Versionsnummer erneuert.
|
||||||
foreach my $d ( sort keys %{ $modules{AutoShuttersControl}{defptr} } ) {
|
foreach my $d ( sort keys %{ $modules{AutoShuttersControl}{defptr} } ) {
|
||||||
@ -218,7 +222,6 @@ sub Define($$) {
|
|||||||
$hash->{VERSION} = $version;
|
$hash->{VERSION} = $version;
|
||||||
$hash->{MID} = 'da39a3ee5e6b4b0d3255bfef95601890afd80709'
|
$hash->{MID} = 'da39a3ee5e6b4b0d3255bfef95601890afd80709'
|
||||||
; # eine Ein Eindeutige ID für interne FHEM Belange / nicht weiter wichtig
|
; # eine Ein Eindeutige ID für interne FHEM Belange / nicht weiter wichtig
|
||||||
$hash->{NotifyOrderPrefix} = "51-"; # Order Nummer für NotifyFn
|
|
||||||
$hash->{NOTIFYDEV} = "global,"
|
$hash->{NOTIFYDEV} = "global,"
|
||||||
. $name; # Liste aller Devices auf deren Events gehört werden sollen
|
. $name; # Liste aller Devices auf deren Events gehört werden sollen
|
||||||
$ascDev->setName($name);
|
$ascDev->setName($name);
|
||||||
@ -316,7 +319,7 @@ sub Notify($$) {
|
|||||||
my $events = deviceEvents( $dev, 1 );
|
my $events = deviceEvents( $dev, 1 );
|
||||||
return if ( !$events );
|
return if ( !$events );
|
||||||
|
|
||||||
Log3( $name, 4,
|
Log3( $name, 5,
|
||||||
"AutoShuttersControl ($name) - Devname: "
|
"AutoShuttersControl ($name) - Devname: "
|
||||||
. $devname
|
. $devname
|
||||||
. " Name: "
|
. " Name: "
|
||||||
@ -381,17 +384,19 @@ sub Notify($$) {
|
|||||||
{ # Kommt ein globales Event und beinhaltet folgende Syntax wird die Funktion zur Verarbeitung aufgerufen
|
{ # Kommt ein globales Event und beinhaltet folgende Syntax wird die Funktion zur Verarbeitung aufgerufen
|
||||||
if (
|
if (
|
||||||
grep
|
grep
|
||||||
/^(ATTR|DELETEATTR)\s(.*ASC_Roommate_Device|.*ASC_WindowRec|.*ASC_residentsDevice|.*ASC_Shading_Brightness_Sensor)(\s.*|$)/,
|
/^(ATTR|DELETEATTR)\s(.*ASC_Roommate_Device|.*ASC_WindowRec|.*ASC_residentsDevice|.*ASC_rainSensorDevice|.*ASC_Shading_Brightness_Sensor)(\s.*|$)/,
|
||||||
@{$events}
|
@{$events}
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
GeneralEventProcessing( $hash, undef, join( ' ', @{$events} ) );
|
GeneralEventProcessing( $hash, undef, join( ' ', @{$events} ) );
|
||||||
}
|
}
|
||||||
elsif ( grep /^(ATTR|DELETEATTR)\s(.*ASC_Time_Up_WE_Holiday)(\s.*|$)/,
|
elsif (
|
||||||
@{$events} )
|
grep
|
||||||
|
/^(ATTR|DELETEATTR)\s(.*ASC_Time_Up_WE_Holiday|.*ASC_Up|.*ASC_Down|.*ASC_AutoAstroModeMorning|.*ASC_AutoAstroModeMorningHorizon|.*ASC_AutoAstroModeEvening|.*ASC_AutoAstroModeEveningHorizon|.*ASC_Time_Up_Early|.*ASC_Time_Up_Late|.*ASC_Time_Down_Early|.*ASC_Time_Down_Late|.*ASC_Offset_Minutes_Morning|.*ASC_Offset_Minutes_Evening)(\s.*|$)/,
|
||||||
|
@{$events}
|
||||||
|
)
|
||||||
{
|
{
|
||||||
RenewSunRiseSetShuttersTimer($hash)
|
GeneralEventProcessing( $hash, undef, join( ' ', @{$events} ) );
|
||||||
unless ( $ascDev->getSunriseTimeWeHoliday eq 'off' );
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
elsif ( grep /^($posReading):\s\d+$/, @{$events} ) {
|
elsif ( grep /^($posReading):\s\d+$/, @{$events} ) {
|
||||||
@ -421,6 +426,8 @@ sub GeneralEventProcessing($$$) {
|
|||||||
; # ist es ein Bewohner Device wird diese Funktion gestartet
|
; # ist es ein Bewohner Device wird diese Funktion gestartet
|
||||||
ResidentsEventProcessing( $hash, $device, $events )
|
ResidentsEventProcessing( $hash, $device, $events )
|
||||||
if ( $deviceAttr eq 'ASC_residentsDevice' );
|
if ( $deviceAttr eq 'ASC_residentsDevice' );
|
||||||
|
RainEventProcessing( $hash, $device, $events )
|
||||||
|
if ( $deviceAttr eq 'ASC_rainSensorDevice' );
|
||||||
|
|
||||||
$shutters->setShuttersDev($device)
|
$shutters->setShuttersDev($device)
|
||||||
if ( $deviceAttr eq 'ASC_Shading_Brightness_Sensor' );
|
if ( $deviceAttr eq 'ASC_Shading_Brightness_Sensor' );
|
||||||
@ -434,7 +441,7 @@ sub GeneralEventProcessing($$$) {
|
|||||||
}
|
}
|
||||||
else { # alles was kein Devicenamen mit übergeben hat landet hier
|
else { # alles was kein Devicenamen mit übergeben hat landet hier
|
||||||
if ( $events =~
|
if ( $events =~
|
||||||
m#^ATTR\s(.*)\s(ASC_Roommate_Device|ASC_WindowRec|ASC_residentsDevice|ASC_Shading_Brightness_Sensor)\s(.*)$#
|
m#^ATTR\s(.*)\s(ASC_Roommate_Device|ASC_WindowRec|ASC_residentsDevice|ASC_rainSensorDevice|ASC_Shading_Brightness_Sensor)\s(.*)$#
|
||||||
)
|
)
|
||||||
{ # wurde den Attributen unserer Rolläden ein Wert zugewiesen ?
|
{ # wurde den Attributen unserer Rolläden ein Wert zugewiesen ?
|
||||||
AddNotifyDev( $hash, $3, $1, $2 );
|
AddNotifyDev( $hash, $3, $1, $2 );
|
||||||
@ -442,13 +449,24 @@ m#^ATTR\s(.*)\s(ASC_Roommate_Device|ASC_WindowRec|ASC_residentsDevice|ASC_Shadin
|
|||||||
"AutoShuttersControl ($name) - EventProcessing: ATTR" );
|
"AutoShuttersControl ($name) - EventProcessing: ATTR" );
|
||||||
}
|
}
|
||||||
elsif ( $events =~
|
elsif ( $events =~
|
||||||
m#^DELETEATTR\s(.*)\s(ASC_Roommate_Device|ASC_WindowRec|ASC_residentsDevice|ASC_Shading_Brightness_Sensor)$#
|
m#^DELETEATTR\s(.*)\s(ASC_Roommate_Device|ASC_WindowRec|ASC_residentsDevice|ASC_rainSensorDevice|ASC_Shading_Brightness_Sensor)$#
|
||||||
)
|
)
|
||||||
{ # wurde das Attribut unserer Rolläden gelöscht ?
|
{ # wurde das Attribut unserer Rolläden gelöscht ?
|
||||||
Log3( $name, 4,
|
Log3( $name, 4,
|
||||||
"AutoShuttersControl ($name) - EventProcessing: DELETEATTR" );
|
"AutoShuttersControl ($name) - EventProcessing: DELETEATTR" );
|
||||||
DeleteNotifyDev( $hash, $1, $2 );
|
DeleteNotifyDev( $hash, $1, $2 );
|
||||||
}
|
}
|
||||||
|
elsif ( $events =~
|
||||||
|
m#^ATTR\s(.*)\s(ASC_Time_Up_WE_Holiday|ASC_Up|ASC_Down|ASC_AutoAstroModeMorning|ASC_AutoAstroModeMorningHorizon|ASC_AutoAstroModeEvening|ASC_AutoAstroModeEveningHorizon|ASC_Time_Up_Early|ASC_Time_Up_Late|ASC_Time_Down_Early|ASC_Time_Down_Late|ASC_Offset_Minutes_Morning|ASC_Offset_Minutes_Evening)\s(.*)$#
|
||||||
|
)
|
||||||
|
{
|
||||||
|
CreateSunRiseSetShuttersTimer( $hash, $1 )
|
||||||
|
if (
|
||||||
|
$2 ne 'ASC_Time_Up_WE_Holiday'
|
||||||
|
or ( $2 eq 'ASC_Time_Up_WE_Holiday'
|
||||||
|
and $ascDev->getSunriseTimeWeHoliday eq 'on' )
|
||||||
|
);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -516,6 +534,9 @@ sub Get($$@) {
|
|||||||
$list .=
|
$list .=
|
||||||
" showShuttersInformations:noArg showNotifyDevsInformations:noArg"
|
" showShuttersInformations:noArg showNotifyDevsInformations:noArg"
|
||||||
if ( ReadingsVal( $name, 'userAttrList', 'none' ) eq 'rolled out' );
|
if ( ReadingsVal( $name, 'userAttrList', 'none' ) eq 'rolled out' );
|
||||||
|
" showNotifyDevsInformations:noArg"
|
||||||
|
if ( ReadingsVal( $name, 'userAttrList', 'none' ) eq 'rolled out'
|
||||||
|
and AttrVal( $name, 'verbose', 3 ) > 3 );
|
||||||
return "Unknown argument $cmd,choose one of $list";
|
return "Unknown argument $cmd,choose one of $list";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -531,8 +552,6 @@ sub ShuttersDeviceScan($) {
|
|||||||
@list = devspec2array('ASC=[1-2]');
|
@list = devspec2array('ASC=[1-2]');
|
||||||
|
|
||||||
CommandDeleteReading( undef, $name . ' .*_nextAstroTimeEvent' );
|
CommandDeleteReading( undef, $name . ' .*_nextAstroTimeEvent' );
|
||||||
CommandDeleteReading( undef, $name . ' .*_lastDelayPosValue' );
|
|
||||||
CommandDeleteReading( undef, $name . ' .*_lastPosValue' );
|
|
||||||
|
|
||||||
unless ( scalar(@list) > 0 ) {
|
unless ( scalar(@list) > 0 ) {
|
||||||
readingsBeginUpdate($hash);
|
readingsBeginUpdate($hash);
|
||||||
@ -569,9 +588,12 @@ sub ShuttersDeviceScan($) {
|
|||||||
CommandDeleteReading( undef,
|
CommandDeleteReading( undef,
|
||||||
$_ . ' .AutoShuttersControl_LastPosition' )
|
$_ . ' .AutoShuttersControl_LastPosition' )
|
||||||
; # temporär muss später gelöscht werden ab Version 0.1.81
|
; # temporär muss später gelöscht werden ab Version 0.1.81
|
||||||
|
CommandDeleteReading( undef, $_ . ' .AutoShuttersControl_DelayCmd' )
|
||||||
|
; # temporär muss später gelöscht werden ab Version 0.1.82
|
||||||
$shuttersList = $shuttersList . ',' . $_;
|
$shuttersList = $shuttersList . ',' . $_;
|
||||||
$shutters->setShuttersDev($_);
|
$shutters->setShuttersDev($_);
|
||||||
$shutters->setLastManPos( $shutters->getStatus );
|
$shutters->setLastManPos( $shutters->getStatus );
|
||||||
|
$shutters->setDelayCmd('none');
|
||||||
}
|
}
|
||||||
$hash->{NOTIFYDEV} = $hash->{NOTIFYDEV} . $shuttersList;
|
$hash->{NOTIFYDEV} = $hash->{NOTIFYDEV} . $shuttersList;
|
||||||
|
|
||||||
@ -799,6 +821,7 @@ sub RoommateEventProcessing($@) {
|
|||||||
"AutoShuttersControl ($name) - RoommateEventProcessing: $shuttersDev und Events $events"
|
"AutoShuttersControl ($name) - RoommateEventProcessing: $shuttersDev und Events $events"
|
||||||
);
|
);
|
||||||
|
|
||||||
|
$shutters->setLastDrive('roommate awoken');
|
||||||
ShuttersCommandSet( $hash, $shuttersDev, $shutters->getOpenPos )
|
ShuttersCommandSet( $hash, $shuttersDev, $shutters->getOpenPos )
|
||||||
if (
|
if (
|
||||||
( $1 eq 'home' or $1 eq 'awoken' )
|
( $1 eq 'home' or $1 eq 'awoken' )
|
||||||
@ -823,6 +846,7 @@ sub RoommateEventProcessing($@) {
|
|||||||
}
|
}
|
||||||
else { $position = $shutters->getVentilatePos; }
|
else { $position = $shutters->getVentilatePos; }
|
||||||
|
|
||||||
|
$shutters->setLastDrive('roommate asleep');
|
||||||
ShuttersCommandSet( $hash, $shuttersDev, $position );
|
ShuttersCommandSet( $hash, $shuttersDev, $position );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -839,7 +863,7 @@ sub ResidentsEventProcessing($@) {
|
|||||||
{
|
{
|
||||||
foreach my $shuttersDev ( @{ $hash->{helper}{shuttersList} } ) {
|
foreach my $shuttersDev ( @{ $hash->{helper}{shuttersList} } ) {
|
||||||
$shutters->setShuttersDev($shuttersDev);
|
$shutters->setShuttersDev($shuttersDev);
|
||||||
$shutters->setLastPos( $shutters->getStatus );
|
$shutters->setLastDrive('selfeDefense active');
|
||||||
|
|
||||||
$shutters->setDriveCmd( $shutters->getClosedPos )
|
$shutters->setDriveCmd( $shutters->getClosedPos )
|
||||||
if ( CheckIfShuttersWindowRecOpen($shuttersDev) != 0
|
if ( CheckIfShuttersWindowRecOpen($shuttersDev) != 0
|
||||||
@ -851,20 +875,73 @@ sub ResidentsEventProcessing($@) {
|
|||||||
{
|
{
|
||||||
foreach my $shuttersDev ( @{ $hash->{helper}{shuttersList} } ) {
|
foreach my $shuttersDev ( @{ $hash->{helper}{shuttersList} } ) {
|
||||||
$shutters->setShuttersDev($shuttersDev);
|
$shutters->setShuttersDev($shuttersDev);
|
||||||
|
$shutters->setLastDrive('selfeDefense terrace');
|
||||||
$shutters->setDriveCmd( $shutters->getClosedPos )
|
$shutters->setDriveCmd( $shutters->getClosedPos )
|
||||||
if ( $shutters->getShuttersPlace eq 'terrace' );
|
if ( $shutters->getShuttersPlace eq 'terrace' );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
elsif ( $events =~ m#$reading:\s(home)#
|
elsif (
|
||||||
|
$events =~ m#$reading:\s(home)#
|
||||||
and $ascDev->getSelfDefense eq 'on'
|
and $ascDev->getSelfDefense eq 'on'
|
||||||
and ($ascDev->getResidentsLastStatus eq 'absent'
|
and ( $ascDev->getResidentsLastStatus eq 'absent'
|
||||||
or $ascDev->getResidentsLastStatus eq 'gone') )
|
or $ascDev->getResidentsLastStatus eq 'gone' )
|
||||||
|
)
|
||||||
{
|
{
|
||||||
foreach my $shuttersDev ( @{ $hash->{helper}{shuttersList} } ) {
|
foreach my $shuttersDev ( @{ $hash->{helper}{shuttersList} } ) {
|
||||||
$shutters->setShuttersDev($shuttersDev);
|
$shutters->setShuttersDev($shuttersDev);
|
||||||
|
$shutters->setLastDrive('selfeDefense inactive');
|
||||||
$shutters->setDriveCmd( $shutters->getLastPos )
|
$shutters->setDriveCmd( $shutters->getLastPos )
|
||||||
if ( CheckIfShuttersWindowRecOpen($shuttersDev) != 0
|
if (
|
||||||
and $shutters->getSelfDefenseExclude eq 'off' );
|
CheckIfShuttersWindowRecOpen($shuttersDev) != 0
|
||||||
|
and $shutters->getSelfDefenseExclude eq 'off'
|
||||||
|
or ( $ascDev->getResidentsLastStatus eq 'gone'
|
||||||
|
and $shutters->getShuttersPlace eq 'terrace' )
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
sub RainEventProcessing($@) {
|
||||||
|
my ( $hash, $device, $events ) = @_;
|
||||||
|
|
||||||
|
my $name = $device;
|
||||||
|
$ascDev->setName($name);
|
||||||
|
my $reading = $ascDev->getRainSensorReading;
|
||||||
|
|
||||||
|
if ( $events =~ m#$reading:\s(\d+)# ) {
|
||||||
|
if ( $1 > 5 ) {
|
||||||
|
foreach my $shuttersDev ( @{ $hash->{helper}{shuttersList} } ) {
|
||||||
|
$shutters->setShuttersDev($shuttersDev);
|
||||||
|
$shutters->setLastDrive('rain protection');
|
||||||
|
$shutters->setLastPos;
|
||||||
|
$shutters->setDriveCmd(
|
||||||
|
$ascDev->getRainSensorShuttersClosedPos );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
elsif ( $1 == 0 ) {
|
||||||
|
foreach my $shuttersDev ( @{ $hash->{helper}{shuttersList} } ) {
|
||||||
|
$shutters->setShuttersDev($shuttersDev);
|
||||||
|
$shutters->setLastDrive('rain un-protection');
|
||||||
|
$shutters->setDriveCmd( $ascDev->getLastPos );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
elsif ( $events =~ m#$reading:\s(rain|dry)# ) {
|
||||||
|
if ( $1 eq 'rain' ) {
|
||||||
|
foreach my $shuttersDev ( @{ $hash->{helper}{shuttersList} } ) {
|
||||||
|
$shutters->setShuttersDev($shuttersDev);
|
||||||
|
$shutters->setLastDrive('rain protection');
|
||||||
|
$shutters->setLastPos;
|
||||||
|
$shutters->setDriveCmd(
|
||||||
|
$ascDev->getRainSensorShuttersClosedPos );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
elsif ( $1 eq 'dry' ) {
|
||||||
|
foreach my $shuttersDev ( @{ $hash->{helper}{shuttersList} } ) {
|
||||||
|
$shutters->setShuttersDev($shuttersDev);
|
||||||
|
$shutters->setLastDrive('rain un-protection');
|
||||||
|
$shutters->setDriveCmd( $ascDev->getLastPos );
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -910,6 +987,7 @@ sub BrightnessEventProcessing($@) {
|
|||||||
Log3( $name, 4,
|
Log3( $name, 4,
|
||||||
"AutoShuttersControl ($shuttersDev) - BrightnessEventProcessing: Steuerung für Morgens"
|
"AutoShuttersControl ($shuttersDev) - BrightnessEventProcessing: Steuerung für Morgens"
|
||||||
);
|
);
|
||||||
|
$shutters->setLastDrive('minimum brightness threshold exceeded');
|
||||||
ShuttersCommandSet( $hash, $shuttersDev, $shutters->getOpenPos );
|
ShuttersCommandSet( $hash, $shuttersDev, $shutters->getOpenPos );
|
||||||
}
|
}
|
||||||
elsif (
|
elsif (
|
||||||
@ -925,6 +1003,7 @@ sub BrightnessEventProcessing($@) {
|
|||||||
Log3( $name, 4,
|
Log3( $name, 4,
|
||||||
"AutoShuttersControl ($shuttersDev) - BrightnessEventProcessing: Steuerung für Abends"
|
"AutoShuttersControl ($shuttersDev) - BrightnessEventProcessing: Steuerung für Abends"
|
||||||
);
|
);
|
||||||
|
$shutters->setLastDrive('minimum brightness threshold fell below');
|
||||||
ShuttersCommandSet( $hash, $shuttersDev, $shutters->getClosedPos );
|
ShuttersCommandSet( $hash, $shuttersDev, $shutters->getClosedPos );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -942,7 +1021,7 @@ sub PartyModeEventProcessing($) {
|
|||||||
Log3( $name, 4,
|
Log3( $name, 4,
|
||||||
"AutoShuttersControl ($name) - PartyModeEventProcessing Fenster offen"
|
"AutoShuttersControl ($name) - PartyModeEventProcessing Fenster offen"
|
||||||
);
|
);
|
||||||
$shutters->setDelayDriveCmd( $shutters->getClosedPos );
|
$shutters->setDelayCmd( $shutters->getClosedPos );
|
||||||
Log3( $name, 4,
|
Log3( $name, 4,
|
||||||
"AutoShuttersControl ($name) - PartyModeEventProcessing - Spring in ShuttersCommandDelaySet"
|
"AutoShuttersControl ($name) - PartyModeEventProcessing - Spring in ShuttersCommandDelaySet"
|
||||||
);
|
);
|
||||||
@ -970,8 +1049,11 @@ sub ShuttersEventProcessing($@) {
|
|||||||
|
|
||||||
if ( $events =~ m#.*:\s(\d+)# ) {
|
if ( $events =~ m#.*:\s(\d+)# ) {
|
||||||
$shutters->setShuttersDev($shuttersDev);
|
$shutters->setShuttersDev($shuttersDev);
|
||||||
$shutters->setLastManPos($1)
|
if ( ( int( gettimeofday() ) - $shutters->getLastPosTimestamp ) > 60 ) {
|
||||||
if ( ( int( gettimeofday() ) - $shutters->getLastPosTimestamp ) > 5 );
|
$shutters->setLastDrive('manual');
|
||||||
|
$shutters->setLastDriveReading;
|
||||||
|
$shutters->setLastManPos($1);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1000,19 +1082,15 @@ sub ShuttersCommandSet($$$) {
|
|||||||
and $ascDev->getOutTemp <= $ascDev->getAntifreezeTemp )
|
and $ascDev->getOutTemp <= $ascDev->getAntifreezeTemp )
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
$shutters->setDelayDriveCmd($posValue);
|
$shutters->setDelayCmd($posValue);
|
||||||
readingsBulkUpdateIfChanged( $hash,
|
$ascDev->setDelayCmdReading;
|
||||||
$shuttersDev . '_lastDelayPosValue', $posValue );
|
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
$shutters->setDriveCmd($posValue);
|
$shutters->setDriveCmd($posValue);
|
||||||
readingsSingleUpdate( $defs{$shuttersDev},
|
$shutters->setDelayCmd('none')
|
||||||
'.AutoShuttersControl_DelayCmd',
|
|
||||||
'none', 0 )
|
|
||||||
if ( $shutters->getDelayCmd ne 'none' )
|
if ( $shutters->getDelayCmd ne 'none' )
|
||||||
; # setzt den Wert des Readings auf none da der Rolladen nun gesteuert werden kann. Dieses Reading setzt die Delay Funktion ShuttersCommandDelaySet
|
; # setzt den Wert des Readings auf none da der Rolladen nun gesteuert werden kann. Dieses Reading setzt die Delay Funktion ShuttersCommandDelaySet
|
||||||
readingsBulkUpdateIfChanged( $hash, $shuttersDev . '_lastPosValue',
|
$ascDev->setLastPosReading;
|
||||||
$posValue );
|
|
||||||
}
|
}
|
||||||
readingsEndUpdate( $hash, 1 );
|
readingsEndUpdate( $hash, 1 );
|
||||||
}
|
}
|
||||||
@ -1160,6 +1238,7 @@ sub SunSetShuttersAfterTimerFn($) {
|
|||||||
my $hash = $funcHash->{hash};
|
my $hash = $funcHash->{hash};
|
||||||
my $shuttersDev = $funcHash->{shuttersdevice};
|
my $shuttersDev = $funcHash->{shuttersdevice};
|
||||||
$shutters->setShuttersDev($shuttersDev);
|
$shutters->setShuttersDev($shuttersDev);
|
||||||
|
$shutters->setLastDrive('night close');
|
||||||
|
|
||||||
my $posValue;
|
my $posValue;
|
||||||
if ( CheckIfShuttersWindowRecOpen($shuttersDev) == 0
|
if ( CheckIfShuttersWindowRecOpen($shuttersDev) == 0
|
||||||
@ -1168,6 +1247,7 @@ sub SunSetShuttersAfterTimerFn($) {
|
|||||||
$posValue = $shutters->getClosedPos;
|
$posValue = $shutters->getClosedPos;
|
||||||
}
|
}
|
||||||
else { $posValue = $shutters->getVentilatePos; }
|
else { $posValue = $shutters->getVentilatePos; }
|
||||||
|
|
||||||
ShuttersCommandSet( $hash, $shuttersDev, $posValue )
|
ShuttersCommandSet( $hash, $shuttersDev, $posValue )
|
||||||
if ( $shutters->getModeDown eq $shutters->getRoommatesStatus
|
if ( $shutters->getModeDown eq $shutters->getRoommatesStatus
|
||||||
or $shutters->getModeDown eq 'always' );
|
or $shutters->getModeDown eq 'always' );
|
||||||
@ -1181,6 +1261,7 @@ sub SunRiseShuttersAfterTimerFn($) {
|
|||||||
my $hash = $funcHash->{hash};
|
my $hash = $funcHash->{hash};
|
||||||
my $shuttersDev = $funcHash->{shuttersdevice};
|
my $shuttersDev = $funcHash->{shuttersdevice};
|
||||||
$shutters->setShuttersDev($shuttersDev);
|
$shutters->setShuttersDev($shuttersDev);
|
||||||
|
$shutters->setLastDrive('day open');
|
||||||
$ascDev->setName( $hash->{NAME} );
|
$ascDev->setName( $hash->{NAME} );
|
||||||
|
|
||||||
if ( $shutters->getModeUp eq $shutters->getRoommatesStatus
|
if ( $shutters->getModeUp eq $shutters->getRoommatesStatus
|
||||||
@ -1228,6 +1309,9 @@ sub CreateNewNotifyDev($) {
|
|||||||
AddNotifyDev( $hash, AttrVal( $name, 'ASC_residentsDevice', 'none' ),
|
AddNotifyDev( $hash, AttrVal( $name, 'ASC_residentsDevice', 'none' ),
|
||||||
$name, 'ASC_residentsDevice' )
|
$name, 'ASC_residentsDevice' )
|
||||||
if ( AttrVal( $name, 'ASC_residentsDevice', 'none' ) ne 'none' );
|
if ( AttrVal( $name, 'ASC_residentsDevice', 'none' ) ne 'none' );
|
||||||
|
AddNotifyDev( $hash, AttrVal( $name, 'ASC_rainSensorDevice', 'none' ),
|
||||||
|
$name, 'ASC_rainSensorDevice' )
|
||||||
|
if ( AttrVal( $name, 'ASC_rainSensorDevice', 'none' ) ne 'none' );
|
||||||
$hash->{NOTIFYDEV} = $hash->{NOTIFYDEV} . $shuttersList;
|
$hash->{NOTIFYDEV} = $hash->{NOTIFYDEV} . $shuttersList;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1246,14 +1330,15 @@ sub GetShuttersInformation($) {
|
|||||||
$ret .= "<td><b>Partymode</b></td>";
|
$ret .= "<td><b>Partymode</b></td>";
|
||||||
$ret .= "<td> </td>";
|
$ret .= "<td> </td>";
|
||||||
$ret .= "<td><b>Lock-Out</b></td>";
|
$ret .= "<td><b>Lock-Out</b></td>";
|
||||||
$ret .= "<td> </td>";
|
|
||||||
$ret .= "<td><b>Sunrise</b></td>";
|
# $ret .= "<td> </td>";
|
||||||
$ret .= "<td> </td>";
|
# $ret .= "<td><b>Sunrise</b></td>";
|
||||||
$ret .= "<td><b>Sunset</b></td>";
|
# $ret .= "<td> </td>";
|
||||||
$ret .= "<td> </td>";
|
# $ret .= "<td><b>Sunset</b></td>";
|
||||||
$ret .= "<td><b>Last manual Position</b></td>";
|
# $ret .= "<td> </td>";
|
||||||
$ret .= "<td> </td>";
|
# $ret .= "<td><b>Last manual Position</b></td>";
|
||||||
$ret .= "<td><b>Last manual Position Timestamp</b></td>";
|
# $ret .= "<td> </td>";
|
||||||
|
# $ret .= "<td><b>Last manual Position Timestamp</b></td>";
|
||||||
$ret .= '</tr>';
|
$ret .= '</tr>';
|
||||||
|
|
||||||
if ( ref($shuttersInformations) eq "HASH" ) {
|
if ( ref($shuttersInformations) eq "HASH" ) {
|
||||||
@ -1273,20 +1358,21 @@ sub GetShuttersInformation($) {
|
|||||||
$ret .= "<td>$shuttersInformations->{$shutter}{Partymode}</td>";
|
$ret .= "<td>$shuttersInformations->{$shutter}{Partymode}</td>";
|
||||||
$ret .= "<td> </td>";
|
$ret .= "<td> </td>";
|
||||||
$ret .= "<td>$shuttersInformations->{$shutter}{'Lock-Out'}</td>";
|
$ret .= "<td>$shuttersInformations->{$shutter}{'Lock-Out'}</td>";
|
||||||
$ret .= "<td> </td>";
|
|
||||||
$ret .=
|
# $ret .= "<td> </td>";
|
||||||
"<td>" . $shutters->getInTimerFuncHash->{sunrisetime} . "</td>"
|
# $ret .=
|
||||||
if ( defined( $shutters->getInTimerFuncHash )
|
# "<td>" . $shutters->getInTimerFuncHash->{sunrisetime} . "</td>"
|
||||||
and defined( $shutters->getInTimerFuncHash->{sunrisetime} ) );
|
# if ( defined( $shutters->getInTimerFuncHash )
|
||||||
$ret .= "<td> </td>";
|
# and defined( $shutters->getInTimerFuncHash->{sunrisetime} ) );
|
||||||
$ret .=
|
# $ret .= "<td> </td>";
|
||||||
"<td>" . $shutters->getInTimerFuncHash->{sunsettime} . "</td>"
|
# $ret .=
|
||||||
if ( defined( $shutters->getInTimerFuncHash )
|
# "<td>" . $shutters->getInTimerFuncHash->{sunsettime} . "</td>"
|
||||||
and defined( $shutters->getInTimerFuncHash->{sunsettime} ) );
|
# if ( defined( $shutters->getInTimerFuncHash )
|
||||||
$ret .= "<td> </td>";
|
# and defined( $shutters->getInTimerFuncHash->{sunsettime} ) );
|
||||||
$ret .= "<td>" . $shutters->getLastManPos . "</td>";
|
# $ret .= "<td> </td>";
|
||||||
$ret .= "<td> </td>";
|
# $ret .= "<td>" . $shutters->getLastManPos . "</td>";
|
||||||
$ret .= "<td>" . $shutters->getLastManPosTimestamp . "</td>";
|
# $ret .= "<td> </td>";
|
||||||
|
# $ret .= "<td>" . $shutters->getLastManPosTimestamp . "</td>";
|
||||||
$ret .= '</tr>';
|
$ret .= '</tr>';
|
||||||
$linecount++;
|
$linecount++;
|
||||||
}
|
}
|
||||||
@ -1763,6 +1849,12 @@ sub setShuttersDev {
|
|||||||
return $self->{shuttersDev};
|
return $self->{shuttersDev};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
sub getShuttersDev {
|
||||||
|
my $self = shift;
|
||||||
|
|
||||||
|
return $self->{shuttersDev};
|
||||||
|
}
|
||||||
|
|
||||||
sub setDriveCmd {
|
sub setDriveCmd {
|
||||||
my ( $self, $posValue ) = @_;
|
my ( $self, $posValue ) = @_;
|
||||||
my $shuttersDev = $self->{shuttersDev};
|
my $shuttersDev = $self->{shuttersDev};
|
||||||
@ -1775,14 +1867,31 @@ sub setDriveCmd {
|
|||||||
. $posValue . ' '
|
. $posValue . ' '
|
||||||
. $shutters->getPosCmd . ' '
|
. $shutters->getPosCmd . ' '
|
||||||
. $posValue );
|
. $posValue );
|
||||||
|
|
||||||
|
$shutters->setLastDriveReading if ( $shutters->getLastPos != $posValue );
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
sub setDelayDriveCmd {
|
sub setDelayCmd {
|
||||||
my ( $self, $posValue ) = @_;
|
my ( $self, $posValue ) = @_;
|
||||||
|
|
||||||
|
$self->{ $self->{shuttersDev} }{delayCmd} = $posValue;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
sub setLastDrive {
|
||||||
|
my ( $self, $lastDrive ) = @_;
|
||||||
|
|
||||||
|
$self->{ $self->{shuttersDev} }{lastDrive} = $lastDrive;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
sub setLastDriveReading {
|
||||||
|
my $self = shift;
|
||||||
my $shuttersDevHash = $defs{ $self->{shuttersDev} };
|
my $shuttersDevHash = $defs{ $self->{shuttersDev} };
|
||||||
readingsSingleUpdate( $shuttersDevHash, '.AutoShuttersControl_DelayCmd',
|
|
||||||
$posValue, 0 );
|
readingsSingleUpdate( $shuttersDevHash, 'ASC_ShuttersLastDrive',
|
||||||
|
$shutters->getLastDrive, 0 );
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1830,10 +1939,15 @@ sub setInTimerFuncHash {
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
sub getLastDrive {
|
||||||
|
my $self = shift;
|
||||||
|
|
||||||
|
return $self->{ $self->{shuttersDev} }{lastDrive};
|
||||||
|
}
|
||||||
|
|
||||||
sub getLastPos
|
sub getLastPos
|
||||||
{ # letzte ermittelte Position bevor die Position des Rolladen über ASC geändert wurde
|
{ # letzte ermittelte Position bevor die Position des Rolladen über ASC geändert wurde
|
||||||
my $self = shift;
|
my $self = shift;
|
||||||
my $shuttersDev = $self->{shuttersDev};
|
|
||||||
|
|
||||||
return $self->{ $self->{shuttersDev} }{lastPos}{VAL}
|
return $self->{ $self->{shuttersDev} }{lastPos}{VAL}
|
||||||
if ( defined( $self->{ $self->{shuttersDev} }{lastPos} )
|
if ( defined( $self->{ $self->{shuttersDev} }{lastPos} )
|
||||||
@ -1842,7 +1956,6 @@ sub getLastPos
|
|||||||
|
|
||||||
sub getLastPosTimestamp {
|
sub getLastPosTimestamp {
|
||||||
my $self = shift;
|
my $self = shift;
|
||||||
my $shuttersDev = $self->{shuttersDev};
|
|
||||||
|
|
||||||
return $self->{ $self->{shuttersDev} }{lastPos}{TIME}
|
return $self->{ $self->{shuttersDev} }{lastPos}{TIME}
|
||||||
if ( defined( $self->{ $self->{shuttersDev} } )
|
if ( defined( $self->{ $self->{shuttersDev} } )
|
||||||
@ -1853,7 +1966,6 @@ sub getLastPosTimestamp {
|
|||||||
sub getLastManPos
|
sub getLastManPos
|
||||||
{ # letzte ermittelte Position bevor die Position des Rolladen manuell (nicht über ASC) geändert wurde
|
{ # letzte ermittelte Position bevor die Position des Rolladen manuell (nicht über ASC) geändert wurde
|
||||||
my $self = shift;
|
my $self = shift;
|
||||||
my $shuttersDev = $self->{shuttersDev};
|
|
||||||
|
|
||||||
return $self->{ $self->{shuttersDev} }{lastManPos}{VAL}
|
return $self->{ $self->{shuttersDev} }{lastManPos}{VAL}
|
||||||
if ( defined( $self->{ $self->{shuttersDev} }{lastManPos} )
|
if ( defined( $self->{ $self->{shuttersDev} }{lastManPos} )
|
||||||
@ -1862,7 +1974,6 @@ sub getLastManPos
|
|||||||
|
|
||||||
sub getLastManPosTimestamp {
|
sub getLastManPosTimestamp {
|
||||||
my $self = shift;
|
my $self = shift;
|
||||||
my $shuttersDev = $self->{shuttersDev};
|
|
||||||
|
|
||||||
return $self->{ $self->{shuttersDev} }{lastManPos}{TIME}
|
return $self->{ $self->{shuttersDev} }{lastManPos}{TIME}
|
||||||
if ( defined( $self->{ $self->{shuttersDev} } )
|
if ( defined( $self->{ $self->{shuttersDev} } )
|
||||||
@ -1872,14 +1983,12 @@ sub getLastManPosTimestamp {
|
|||||||
|
|
||||||
sub getInTimerFuncHash {
|
sub getInTimerFuncHash {
|
||||||
my $self = shift;
|
my $self = shift;
|
||||||
my $shuttersDev = $self->{shuttersDev};
|
|
||||||
|
|
||||||
return $self->{ $self->{shuttersDev} }{inTimerFuncHash};
|
return $self->{ $self->{shuttersDev} }{inTimerFuncHash};
|
||||||
}
|
}
|
||||||
|
|
||||||
sub getRoommatesStatus {
|
sub getRoommatesStatus {
|
||||||
my $self = shift;
|
my $self = shift;
|
||||||
my $shuttersDev = $self->{shuttersDev};
|
|
||||||
my $loop = 0;
|
my $loop = 0;
|
||||||
my @roState;
|
my @roState;
|
||||||
my %statePrio = (
|
my %statePrio = (
|
||||||
@ -1905,7 +2014,6 @@ sub getRoommatesStatus {
|
|||||||
|
|
||||||
sub getRoommatesLastStatus {
|
sub getRoommatesLastStatus {
|
||||||
my $self = shift;
|
my $self = shift;
|
||||||
my $shuttersDev = $self->{shuttersDev};
|
|
||||||
my $loop = 0;
|
my $loop = 0;
|
||||||
my @roState;
|
my @roState;
|
||||||
my %statePrio = (
|
my %statePrio = (
|
||||||
@ -1947,238 +2055,213 @@ BEGIN {
|
|||||||
|
|
||||||
sub getShuttersPlace {
|
sub getShuttersPlace {
|
||||||
my $self = shift;
|
my $self = shift;
|
||||||
my $shuttersDev = $self->{shuttersDev};
|
|
||||||
|
|
||||||
return AttrVal( $shuttersDev, 'ASC_ShuttersPlace', 'window' );
|
return AttrVal( $self->{shuttersDev}, 'ASC_ShuttersPlace', 'window' );
|
||||||
}
|
}
|
||||||
|
|
||||||
sub getSelfDefenseExclude {
|
sub getSelfDefenseExclude {
|
||||||
my $self = shift;
|
my $self = shift;
|
||||||
my $shuttersDev = $self->{shuttersDev};
|
|
||||||
|
|
||||||
return AttrVal( $shuttersDev, 'ASC_Self_Defense_Exclude', 'off' );
|
return AttrVal( $self->{shuttersDev}, 'ASC_Self_Defense_Exclude', 'off' );
|
||||||
}
|
}
|
||||||
|
|
||||||
sub getShadingBrightnessSensor {
|
sub getShadingBrightnessSensor {
|
||||||
my $self = shift;
|
my $self = shift;
|
||||||
my $shuttersDev = $self->{shuttersDev};
|
|
||||||
my $default = $self->{defaultarg};
|
my $default = $self->{defaultarg};
|
||||||
|
|
||||||
$default = 'none' if ( not defined($default) );
|
$default = 'none' if ( not defined($default) );
|
||||||
return AttrVal( $shuttersDev, 'ASC_Shading_Brightness_Sensor', $default );
|
return AttrVal( $self->{shuttersDev}, 'ASC_Shading_Brightness_Sensor',
|
||||||
|
$default );
|
||||||
}
|
}
|
||||||
|
|
||||||
sub getShadingBrightnessReading {
|
sub getShadingBrightnessReading {
|
||||||
my $self = shift;
|
my $self = shift;
|
||||||
my $shuttersDev = $self->{shuttersDev};
|
|
||||||
my $default = $self->{defaultarg};
|
my $default = $self->{defaultarg};
|
||||||
|
|
||||||
$default = 'brightness' if ( not defined($default) );
|
$default = 'brightness' if ( not defined($default) );
|
||||||
return AttrVal( $shuttersDev, 'ASC_Shading_Brightness_Reading', $default );
|
return AttrVal( $self->{shuttersDev}, 'ASC_Shading_Brightness_Reading',
|
||||||
|
$default );
|
||||||
}
|
}
|
||||||
|
|
||||||
sub getPosCmd {
|
sub getPosCmd {
|
||||||
my $self = shift;
|
my $self = shift;
|
||||||
my $shuttersDev = $self->{shuttersDev};
|
|
||||||
|
|
||||||
return AttrVal( $shuttersDev, 'ASC_Pos_Cmd', 'pct' );
|
return AttrVal( $self->{shuttersDev}, 'ASC_Pos_Cmd', 'pct' );
|
||||||
}
|
}
|
||||||
|
|
||||||
sub getOpenPos {
|
sub getOpenPos {
|
||||||
my $self = shift;
|
my $self = shift;
|
||||||
my $shuttersDev = $self->{shuttersDev};
|
|
||||||
|
|
||||||
return AttrVal( $shuttersDev, 'ASC_Open_Pos', 0 );
|
return AttrVal( $self->{shuttersDev}, 'ASC_Open_Pos', 0 );
|
||||||
}
|
}
|
||||||
|
|
||||||
sub getVentilatePos {
|
sub getVentilatePos {
|
||||||
my $self = shift;
|
my $self = shift;
|
||||||
my $shuttersDev = $self->{shuttersDev};
|
|
||||||
|
|
||||||
return AttrVal( $shuttersDev, 'ASC_Ventilate_Pos', 80 );
|
return AttrVal( $self->{shuttersDev}, 'ASC_Ventilate_Pos', 80 );
|
||||||
}
|
}
|
||||||
|
|
||||||
sub getClosedPos {
|
sub getClosedPos {
|
||||||
my $self = shift;
|
my $self = shift;
|
||||||
my $shuttersDev = $self->{shuttersDev};
|
|
||||||
|
|
||||||
return AttrVal( $shuttersDev, 'ASC_Closed_Pos', 100 );
|
return AttrVal( $self->{shuttersDev}, 'ASC_Closed_Pos', 100 );
|
||||||
}
|
}
|
||||||
|
|
||||||
sub getVentilateOpen {
|
sub getVentilateOpen {
|
||||||
my $self = shift;
|
my $self = shift;
|
||||||
my $shuttersDev = $self->{shuttersDev};
|
|
||||||
|
|
||||||
return AttrVal( $shuttersDev, 'ASC_Ventilate_Window_Open', 'off' );
|
return AttrVal( $self->{shuttersDev}, 'ASC_Ventilate_Window_Open', 'off' );
|
||||||
}
|
}
|
||||||
|
|
||||||
sub getPosAfterComfortOpen {
|
sub getPosAfterComfortOpen {
|
||||||
my $self = shift;
|
my $self = shift;
|
||||||
my $shuttersDev = $self->{shuttersDev};
|
|
||||||
|
|
||||||
return AttrVal( $shuttersDev, 'ASC_Pos_after_ComfortOpen', 50 );
|
return AttrVal( $self->{shuttersDev}, 'ASC_Pos_after_ComfortOpen', 50 );
|
||||||
}
|
}
|
||||||
|
|
||||||
sub getPartyMode {
|
sub getPartyMode {
|
||||||
my $self = shift;
|
my $self = shift;
|
||||||
my $shuttersDev = $self->{shuttersDev};
|
|
||||||
|
|
||||||
return AttrVal( $shuttersDev, 'ASC_Partymode', 'off' );
|
return AttrVal( $self->{shuttersDev}, 'ASC_Partymode', 'off' );
|
||||||
}
|
}
|
||||||
|
|
||||||
sub getRoommates {
|
sub getRoommates {
|
||||||
my $self = shift;
|
my $self = shift;
|
||||||
my $shuttersDev = $self->{shuttersDev};
|
|
||||||
my $default = $self->{defaultarg};
|
my $default = $self->{defaultarg};
|
||||||
|
|
||||||
$default = 'none' if ( not defined($default) );
|
$default = 'none' if ( not defined($default) );
|
||||||
return AttrVal( $shuttersDev, 'ASC_Roommate_Device', $default );
|
return AttrVal( $self->{shuttersDev}, 'ASC_Roommate_Device', $default );
|
||||||
}
|
}
|
||||||
|
|
||||||
sub getRoommatesReading {
|
sub getRoommatesReading {
|
||||||
my $self = shift;
|
my $self = shift;
|
||||||
my $shuttersDev = $self->{shuttersDev};
|
|
||||||
my $default = $self->{defaultarg};
|
my $default = $self->{defaultarg};
|
||||||
|
|
||||||
$default = 'state' if ( not defined($default) );
|
$default = 'state' if ( not defined($default) );
|
||||||
return AttrVal( $shuttersDev, 'ASC_Roommate_Reading', $default );
|
return AttrVal( $self->{shuttersDev}, 'ASC_Roommate_Reading', $default );
|
||||||
}
|
}
|
||||||
|
|
||||||
sub getModeUp {
|
sub getModeUp {
|
||||||
my $self = shift;
|
my $self = shift;
|
||||||
my $shuttersDev = $self->{shuttersDev};
|
|
||||||
|
|
||||||
return AttrVal( $shuttersDev, 'ASC_Mode_Up', 'off' );
|
return AttrVal( $self->{shuttersDev}, 'ASC_Mode_Up', 'off' );
|
||||||
}
|
}
|
||||||
|
|
||||||
sub getModeDown {
|
sub getModeDown {
|
||||||
my $self = shift;
|
my $self = shift;
|
||||||
my $shuttersDev = $self->{shuttersDev};
|
|
||||||
|
|
||||||
return AttrVal( $shuttersDev, 'ASC_Mode_Down', 'off' );
|
return AttrVal( $self->{shuttersDev}, 'ASC_Mode_Down', 'off' );
|
||||||
}
|
}
|
||||||
|
|
||||||
sub getLockOut {
|
sub getLockOut {
|
||||||
my $self = shift;
|
my $self = shift;
|
||||||
my $shuttersDev = $self->{shuttersDev};
|
|
||||||
|
|
||||||
return AttrVal( $shuttersDev, 'ASC_lock-out', 'soft' );
|
return AttrVal( $self->{shuttersDev}, 'ASC_lock-out', 'soft' );
|
||||||
}
|
}
|
||||||
|
|
||||||
sub getAntiFreeze {
|
sub getAntiFreeze {
|
||||||
my $self = shift;
|
my $self = shift;
|
||||||
my $shuttersDev = $self->{shuttersDev};
|
|
||||||
|
|
||||||
return AttrVal( $shuttersDev, 'ASC_Antifreeze', 'off' );
|
return AttrVal( $self->{shuttersDev}, 'ASC_Antifreeze', 'off' );
|
||||||
}
|
}
|
||||||
|
|
||||||
sub getOffsetMorning {
|
sub getOffsetMorning {
|
||||||
my $self = shift;
|
my $self = shift;
|
||||||
my $shuttersDev = $self->{shuttersDev};
|
|
||||||
|
|
||||||
return AttrVal( $shuttersDev, 'ASC_Offset_Minutes_Morning', 0 );
|
return AttrVal( $self->{shuttersDev}, 'ASC_Offset_Minutes_Morning', 0 );
|
||||||
}
|
}
|
||||||
|
|
||||||
sub getOffsetEvening {
|
sub getOffsetEvening {
|
||||||
my $self = shift;
|
my $self = shift;
|
||||||
my $shuttersDev = $self->{shuttersDev};
|
|
||||||
|
|
||||||
return AttrVal( $shuttersDev, 'ASC_Offset_Minutes_Evening', 0 );
|
return AttrVal( $self->{shuttersDev}, 'ASC_Offset_Minutes_Evening', 0 );
|
||||||
}
|
}
|
||||||
|
|
||||||
sub getAutoAstroModeMorning {
|
sub getAutoAstroModeMorning {
|
||||||
my $self = shift;
|
my $self = shift;
|
||||||
my $shuttersDev = $self->{shuttersDev};
|
|
||||||
my $default = $self->{defaultarg};
|
my $default = $self->{defaultarg};
|
||||||
|
|
||||||
$default = 'none' if ( not defined($default) );
|
$default = 'none' if ( not defined($default) );
|
||||||
return AttrVal( $shuttersDev, 'ASC_AutoAstroModeMorning', $default );
|
return AttrVal( $self->{shuttersDev}, 'ASC_AutoAstroModeMorning',
|
||||||
|
$default );
|
||||||
}
|
}
|
||||||
|
|
||||||
sub getAutoAstroModeEvening {
|
sub getAutoAstroModeEvening {
|
||||||
my $self = shift;
|
my $self = shift;
|
||||||
my $shuttersDev = $self->{shuttersDev};
|
|
||||||
my $default = $self->{defaultarg};
|
my $default = $self->{defaultarg};
|
||||||
|
|
||||||
$default = 'none' if ( not defined($default) );
|
$default = 'none' if ( not defined($default) );
|
||||||
return AttrVal( $shuttersDev, 'ASC_AutoAstroModeEvening', $default );
|
return AttrVal( $self->{shuttersDev}, 'ASC_AutoAstroModeEvening',
|
||||||
|
$default );
|
||||||
}
|
}
|
||||||
|
|
||||||
sub getAutoAstroModeMorningHorizon {
|
sub getAutoAstroModeMorningHorizon {
|
||||||
my $self = shift;
|
my $self = shift;
|
||||||
my $shuttersDev = $self->{shuttersDev};
|
|
||||||
|
|
||||||
return AttrVal( $shuttersDev, 'ASC_AutoAstroModeMorningHorizon', 0 );
|
return AttrVal( $self->{shuttersDev}, 'ASC_AutoAstroModeMorningHorizon',
|
||||||
|
0 );
|
||||||
}
|
}
|
||||||
|
|
||||||
sub getAutoAstroModeEveningHorizon {
|
sub getAutoAstroModeEveningHorizon {
|
||||||
my $self = shift;
|
my $self = shift;
|
||||||
my $shuttersDev = $self->{shuttersDev};
|
|
||||||
|
|
||||||
return AttrVal( $shuttersDev, 'ASC_AutoAstroModeEveningHorizon', 0 );
|
return AttrVal( $self->{shuttersDev}, 'ASC_AutoAstroModeEveningHorizon',
|
||||||
|
0 );
|
||||||
}
|
}
|
||||||
|
|
||||||
sub getUpMode {
|
sub getUpMode {
|
||||||
my $self = shift;
|
my $self = shift;
|
||||||
my $shuttersDev = $self->{shuttersDev};
|
|
||||||
|
|
||||||
return AttrVal( $shuttersDev, 'ASC_Up', 'astro' );
|
return AttrVal( $self->{shuttersDev}, 'ASC_Up', 'astro' );
|
||||||
}
|
}
|
||||||
|
|
||||||
sub getDownMode {
|
sub getDownMode {
|
||||||
my $self = shift;
|
my $self = shift;
|
||||||
my $shuttersDev = $self->{shuttersDev};
|
|
||||||
|
|
||||||
return AttrVal( $shuttersDev, 'ASC_Down', 'astro' );
|
return AttrVal( $self->{shuttersDev}, 'ASC_Down', 'astro' );
|
||||||
}
|
}
|
||||||
|
|
||||||
sub getTimeUpEarly {
|
sub getTimeUpEarly {
|
||||||
my $self = shift;
|
my $self = shift;
|
||||||
my $shuttersDev = $self->{shuttersDev};
|
|
||||||
|
|
||||||
return AttrVal( $shuttersDev, 'ASC_Time_Up_Early', '04:30:00' );
|
return AttrVal( $self->{shuttersDev}, 'ASC_Time_Up_Early', '04:30:00' );
|
||||||
}
|
}
|
||||||
|
|
||||||
sub getTimeUpLate {
|
sub getTimeUpLate {
|
||||||
my $self = shift;
|
my $self = shift;
|
||||||
my $shuttersDev = $self->{shuttersDev};
|
|
||||||
|
|
||||||
return AttrVal( $shuttersDev, 'ASC_Time_Up_Late', '09:00:00' );
|
return AttrVal( $self->{shuttersDev}, 'ASC_Time_Up_Late', '09:00:00' );
|
||||||
}
|
}
|
||||||
|
|
||||||
sub getTimeDownEarly {
|
sub getTimeDownEarly {
|
||||||
my $self = shift;
|
my $self = shift;
|
||||||
my $shuttersDev = $self->{shuttersDev};
|
|
||||||
|
|
||||||
return AttrVal( $shuttersDev, 'ASC_Time_Down_Early', '15:30:00' );
|
return AttrVal( $self->{shuttersDev}, 'ASC_Time_Down_Early', '15:30:00' );
|
||||||
}
|
}
|
||||||
|
|
||||||
sub getTimeDownLate {
|
sub getTimeDownLate {
|
||||||
my $self = shift;
|
my $self = shift;
|
||||||
my $shuttersDev = $self->{shuttersDev};
|
|
||||||
|
|
||||||
return AttrVal( $shuttersDev, 'ASC_Time_Down_Late', '22:00:00' );
|
return AttrVal( $self->{shuttersDev}, 'ASC_Time_Down_Late', '22:00:00' );
|
||||||
}
|
}
|
||||||
|
|
||||||
sub getTimeUpWeHoliday {
|
sub getTimeUpWeHoliday {
|
||||||
my $self = shift;
|
my $self = shift;
|
||||||
my $shuttersDev = $self->{shuttersDev};
|
|
||||||
|
|
||||||
return AttrVal( $shuttersDev, 'ASC_Time_Up_WE_Holiday', '04:00:00' );
|
return AttrVal( $self->{shuttersDev}, 'ASC_Time_Up_WE_Holiday',
|
||||||
|
'04:00:00' );
|
||||||
}
|
}
|
||||||
|
|
||||||
sub getBrightnessMinVal {
|
sub getBrightnessMinVal {
|
||||||
my $self = shift;
|
my $self = shift;
|
||||||
my $shuttersDev = $self->{shuttersDev};
|
|
||||||
|
|
||||||
return AttrVal( $shuttersDev, 'ASC_BrightnessMinVal', -1 );
|
return AttrVal( $self->{shuttersDev}, 'ASC_BrightnessMinVal', -1 );
|
||||||
}
|
}
|
||||||
|
|
||||||
sub getBrightnessMaxVal {
|
sub getBrightnessMaxVal {
|
||||||
my $self = shift;
|
my $self = shift;
|
||||||
my $shuttersDev = $self->{shuttersDev};
|
|
||||||
|
|
||||||
return AttrVal( $shuttersDev, 'ASC_BrightnessMaxVal', -1 );
|
return AttrVal( $self->{shuttersDev}, 'ASC_BrightnessMaxVal', -1 );
|
||||||
}
|
}
|
||||||
|
|
||||||
## Subklasse Readings von ASC_Shutters ##
|
## Subklasse Readings von ASC_Shutters ##
|
||||||
@ -2199,7 +2282,6 @@ BEGIN {
|
|||||||
|
|
||||||
sub getBrightness {
|
sub getBrightness {
|
||||||
my $self = shift;
|
my $self = shift;
|
||||||
my $shuttersDev = $self->{shuttersDev};
|
|
||||||
|
|
||||||
return ReadingsVal( $shutters->getShadingBrightnessSensor,
|
return ReadingsVal( $shutters->getShadingBrightnessSensor,
|
||||||
$shutters->getShadingBrightnessReading, 0 );
|
$shutters->getShadingBrightnessReading, 0 );
|
||||||
@ -2207,18 +2289,15 @@ sub getBrightness {
|
|||||||
|
|
||||||
sub getStatus {
|
sub getStatus {
|
||||||
my $self = shift;
|
my $self = shift;
|
||||||
my $shuttersDev = $self->{shuttersDev};
|
|
||||||
|
|
||||||
return ReadingsVal( $shuttersDev, $shutters->getPosCmd, 0 );
|
return ReadingsVal( $self->{shuttersDev}, $shutters->getPosCmd, 0 );
|
||||||
}
|
}
|
||||||
|
|
||||||
sub getDelayCmd {
|
sub getDelayCmd {
|
||||||
my $self = shift;
|
my $self = shift;
|
||||||
my $shuttersDev = $self->{shuttersDev};
|
|
||||||
my $default = $self->{defaultarg};
|
my $default = $self->{defaultarg};
|
||||||
|
|
||||||
$default = 'none' if ( not defined($default) );
|
return $self->{ $self->{shuttersDev} }{delayCmd};
|
||||||
return ReadingsVal( $shuttersDev, '.ASC_DelayCmd', $default );
|
|
||||||
}
|
}
|
||||||
|
|
||||||
## Klasse Fenster (Window) und die Subklassen Attr und Readings ##
|
## Klasse Fenster (Window) und die Subklassen Attr und Readings ##
|
||||||
@ -2243,20 +2322,18 @@ BEGIN {
|
|||||||
|
|
||||||
sub getSubTyp {
|
sub getSubTyp {
|
||||||
my $self = shift;
|
my $self = shift;
|
||||||
my $shuttersDev = $self->{shuttersDev};
|
|
||||||
my $default = $self->{defaultarg};
|
my $default = $self->{defaultarg};
|
||||||
|
|
||||||
$default = 'twostate' if ( not defined($default) );
|
$default = 'twostate' if ( not defined($default) );
|
||||||
return AttrVal( $shuttersDev, 'ASC_WindowRec_subType', $default );
|
return AttrVal( $self->{shuttersDev}, 'ASC_WindowRec_subType', $default );
|
||||||
}
|
}
|
||||||
|
|
||||||
sub getWinDev {
|
sub getWinDev {
|
||||||
my $self = shift;
|
my $self = shift;
|
||||||
my $shuttersDev = $self->{shuttersDev};
|
|
||||||
my $default = $self->{defaultarg};
|
my $default = $self->{defaultarg};
|
||||||
|
|
||||||
$default = 'none' if ( not defined($default) );
|
$default = 'none' if ( not defined($default) );
|
||||||
return AttrVal( $shuttersDev, 'ASC_WindowRec', $default );
|
return AttrVal( $self->{shuttersDev}, 'ASC_WindowRec', $default );
|
||||||
}
|
}
|
||||||
|
|
||||||
## Subklasse Readings von Klasse ASC_Window ##
|
## Subklasse Readings von Klasse ASC_Window ##
|
||||||
@ -2277,7 +2354,6 @@ BEGIN {
|
|||||||
|
|
||||||
sub getWinStatus {
|
sub getWinStatus {
|
||||||
my $self = shift;
|
my $self = shift;
|
||||||
my $shuttersDev = $self->{shuttersDev};
|
|
||||||
my $default = $self->{defaultarg};
|
my $default = $self->{defaultarg};
|
||||||
|
|
||||||
$default = 'closed' if ( not defined($default) );
|
$default = 'closed' if ( not defined($default) );
|
||||||
@ -2305,7 +2381,7 @@ sub getRoommateStatus {
|
|||||||
my $roommate = $self->{roommate};
|
my $roommate = $self->{roommate};
|
||||||
my $default = $self->{defaultarg};
|
my $default = $self->{defaultarg};
|
||||||
|
|
||||||
$default = 'home' if ( not defined($default) );
|
$default = 'awoken' if ( not defined($default) );
|
||||||
return ReadingsVal( $roommate, $shutters->getRoommatesReading, $default );
|
return ReadingsVal( $roommate, $shutters->getRoommatesReading, $default );
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2314,7 +2390,7 @@ sub getRoommateLastStatus {
|
|||||||
my $roommate = $self->{roommate};
|
my $roommate = $self->{roommate};
|
||||||
my $default = $self->{defaultarg};
|
my $default = $self->{defaultarg};
|
||||||
|
|
||||||
$default = 'home' if ( not defined($default) );
|
$default = 'awoken' if ( not defined($default) );
|
||||||
return ReadingsVal( $roommate, 'lastState', $default );
|
return ReadingsVal( $roommate, 'lastState', $default );
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2359,10 +2435,33 @@ use GPUtils qw(:all);
|
|||||||
BEGIN {
|
BEGIN {
|
||||||
GP_Import(
|
GP_Import(
|
||||||
qw(
|
qw(
|
||||||
ReadingsVal)
|
readingsSingleUpdate
|
||||||
|
ReadingsVal
|
||||||
|
defs)
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
sub setDelayCmdReading {
|
||||||
|
my $self = shift;
|
||||||
|
my $name = $self->{name};
|
||||||
|
my $hash = $defs{$name};
|
||||||
|
|
||||||
|
readingsSingleUpdate( $hash,
|
||||||
|
$shutters->getShuttersDev . '_lastDelayPosValue',
|
||||||
|
$shutters->getDelayCmd, 1 );
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
sub setLastPosReading {
|
||||||
|
my $self = shift;
|
||||||
|
my $name = $self->{name};
|
||||||
|
my $hash = $defs{$name};
|
||||||
|
|
||||||
|
readingsSingleUpdate( $hash, $shutters->getShuttersDev . '_lastPosValue',
|
||||||
|
$shutters->getLastPos, 1 );
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
sub getPartyModeStatus {
|
sub getPartyModeStatus {
|
||||||
my $self = shift;
|
my $self = shift;
|
||||||
my $name = $self->{name};
|
my $name = $self->{name};
|
||||||
@ -2562,6 +2661,31 @@ sub getResidentsReading {
|
|||||||
$default = 'state' if ( not defined($default) );
|
$default = 'state' if ( not defined($default) );
|
||||||
return AttrVal( $name, 'ASC_residentsDeviceReading', $default );
|
return AttrVal( $name, 'ASC_residentsDeviceReading', $default );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
sub getRainSensor {
|
||||||
|
my $self = shift;
|
||||||
|
my $name = $self->{name};
|
||||||
|
my $default = $self->{defaultarg};
|
||||||
|
|
||||||
|
$default = 'none' if ( not defined($default) );
|
||||||
|
return AttrVal( $name, 'ASC_rainSensorDevice', $default );
|
||||||
|
}
|
||||||
|
|
||||||
|
sub getRainSensorReading {
|
||||||
|
my $self = shift;
|
||||||
|
my $name = $self->{name};
|
||||||
|
my $default = $self->{defaultarg};
|
||||||
|
|
||||||
|
$default = 'state' if ( not defined($default) );
|
||||||
|
return AttrVal( $name, 'ASC_rainSensorReading', $default );
|
||||||
|
}
|
||||||
|
|
||||||
|
sub getRainSensorShuttersClosedPos {
|
||||||
|
my $self = shift;
|
||||||
|
my $name = $self->{name};
|
||||||
|
|
||||||
|
return AttrVal( $name, 'ASC_rainSensorShuttersClosedPos', 50 );
|
||||||
|
}
|
||||||
1;
|
1;
|
||||||
|
|
||||||
=pod
|
=pod
|
||||||
@ -2732,6 +2856,7 @@ sub getResidentsReading {
|
|||||||
<ul>
|
<ul>
|
||||||
<li>ASC_Time_DriveUp - Sonnenaufgangszei für das Rollo</li>
|
<li>ASC_Time_DriveUp - Sonnenaufgangszei für das Rollo</li>
|
||||||
<li>ASC_Time_DriveDown - Sonnenuntergangszeit für das Rollo</li>
|
<li>ASC_Time_DriveDown - Sonnenuntergangszeit für das Rollo</li>
|
||||||
|
<li>ASC_ShuttersLastDrive - Grund des letzten fahrens vom Rolladen</li>
|
||||||
</ul>
|
</ul>
|
||||||
</ul>
|
</ul>
|
||||||
<br><br>
|
<br><br>
|
||||||
@ -2774,6 +2899,9 @@ sub getResidentsReading {
|
|||||||
<li>ASC_residentsDeviceReading - Status Reading vom Residents Device der obersten Ebene</li>
|
<li>ASC_residentsDeviceReading - Status Reading vom Residents Device der obersten Ebene</li>
|
||||||
<li>ASC_brightnessMinVal - minimaler Lichtwert ab welchen Schaltbedingungen geprüft werden sollen</li>
|
<li>ASC_brightnessMinVal - minimaler Lichtwert ab welchen Schaltbedingungen geprüft werden sollen</li>
|
||||||
<li>ASC_brightnessMaxVal - maximaler Lichtwert ab welchen Schaltbedingungen geprüft werden sollen</li>
|
<li>ASC_brightnessMaxVal - maximaler Lichtwert ab welchen Schaltbedingungen geprüft werden sollen</li>
|
||||||
|
<li>ASC_rainSensorDevice - Device welches bei Regen getriggert werden soll</li>
|
||||||
|
<li>ASC_rainSensorReading - das ensprechende Reading zum Regendevice</li>
|
||||||
|
<li>ASC_rainSensorShuttersClosedPos - Position n welche der Rolladen fahren soll wenn es Regnet</li>
|
||||||
</ul><br>
|
</ul><br>
|
||||||
In den Rolläden Devices
|
In den Rolläden Devices
|
||||||
<ul>
|
<ul>
|
||||||
@ -2785,8 +2913,8 @@ sub getResidentsReading {
|
|||||||
<li>ASC_AutoAstroModeMorningHorizon - Höhe über Horizont wenn beim Attribut ASC_autoAstroModeMorning HORIZON ausgewählt</li>
|
<li>ASC_AutoAstroModeMorningHorizon - Höhe über Horizont wenn beim Attribut ASC_autoAstroModeMorning HORIZON ausgewählt</li>
|
||||||
<li>ASC_Closed_Pos - in 10 Schritten von 0 bis 100,default Vorgabe ist abhängig vom Attribut AutoShuttersControl</li>
|
<li>ASC_Closed_Pos - in 10 Schritten von 0 bis 100,default Vorgabe ist abhängig vom Attribut AutoShuttersControl</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 Rolladen runter gefahren</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 Rolladen runter gefahren</li>
|
||||||
<li>ASC_Mode_Down - always/absent/off wann darf die Automatik steuern. immer,niemals,bei abwesenheit des Roomate (ist kein Roommate und absent eingestellt wird gar nicht gesteuert)</li>
|
<li>ASC_Mode_Down - always/home/absent/off wann darf die Automatik steuern. immer,niemals,bei abwesenheit des Roomate (ist kein Roommate und absent eingestellt wird gar nicht gesteuert)</li>
|
||||||
<li>ASC_Mode_Up - always/absent/off wann darf die Automatik steuern. immer,niemals,bei abwesenheit des Roomate (ist kein Roommate und absent eingestellt wird gar nicht gesteuert)</li>
|
<li>ASC_Mode_Up - always/home/absent/off wann darf die Automatik steuern. immer,niemals,bei abwesenheit des Roomate (ist kein Roommate und absent eingestellt wird gar nicht gesteuert)</li>
|
||||||
<li>ASC_Offset_Minutes_Evening - maximale zufällige Verzögerung in Minuten (minimal 1) bei der Berechnung der Fahrzeiten für Abends</li>
|
<li>ASC_Offset_Minutes_Evening - maximale zufällige Verzögerung in Minuten (minimal 1) bei der Berechnung der Fahrzeiten für Abends</li>
|
||||||
<li>ASC_Offset_Minutes_Morning - maximale zufällige Verzögerung in Minuten (minimal 1) bei der Berechnung der Fahrzeiten für Morgens</li>
|
<li>ASC_Offset_Minutes_Morning - maximale zufällige Verzögerung in Minuten (minimal 1) bei der Berechnung der Fahrzeiten für Morgens</li>
|
||||||
<li>ASC_Open_Pos - in 10 Schritten von 0 bis 100,default Vorgabe ist abhängig vom Attribut AutoShuttersControl</li>
|
<li>ASC_Open_Pos - in 10 Schritten von 0 bis 100,default Vorgabe ist abhängig vom Attribut AutoShuttersControl</li>
|
||||||
@ -2806,8 +2934,9 @@ sub getResidentsReading {
|
|||||||
<li>ASC_WindowRec - Name des Fensterkontaktes an welchen Fenster der Rolladen angebracht ist</li>
|
<li>ASC_WindowRec - Name des Fensterkontaktes an welchen Fenster der Rolladen angebracht ist</li>
|
||||||
<li>ASC_WindowRec_subType - Typ des verwendeten Fensterkontakts: twostate (optisch oder magnetisch) oder threestate (Drehgriffkontakt)</li>
|
<li>ASC_WindowRec_subType - Typ des verwendeten Fensterkontakts: twostate (optisch oder magnetisch) oder threestate (Drehgriffkontakt)</li>
|
||||||
<li>ASC_lock-out - soft/hard stellt entsprechend den Aussperrschutz ein. Bei global aktiven Aussperrschutz (set ASC-Device lockOut soft) und einem Fensterkontakt open bleibt dann der Rolladen oben. Dies gilt nur bei Steuerbefehle über das ASC Modul. Stellt man global auf hard,wird bei entsprechender Möglichkeit versucht den Rolladen Hardwareseitig zu blockieren. Dann ist auch ein fahren über die Taster nicht mehr möglich.</li>
|
<li>ASC_lock-out - soft/hard stellt entsprechend den Aussperrschutz ein. Bei global aktiven Aussperrschutz (set ASC-Device lockOut soft) und einem Fensterkontakt open bleibt dann der Rolladen oben. Dies gilt nur bei Steuerbefehle über das ASC Modul. Stellt man global auf hard,wird bei entsprechender Möglichkeit versucht den Rolladen Hardwareseitig zu blockieren. Dann ist auch ein fahren über die Taster nicht mehr möglich.</li>
|
||||||
<li>ASC_lock-outCmd - inhibit/blocked set Befehl für das Rolladen-Device zum Hardware sperren. Zum gesetzt werden wenn man "ASC_lock-out" auf hard setzt</li>
|
<li>ASC_lock-outCmd - inhibit/blocked set Befehl für das Rolladen-Device zum Hardware sperren. Zum gesetzt werden wenn man "ASC_lock-out" auf hard setzt</li>
|
||||||
<li>ASC_Self_Defense_Exclude - on/off bei on Wert wird dieser Rolladen bei aktiven Self Defense und offenen Fenster nicht runter gefahren wenn Residents absent ist.</li>
|
<li>ASC_Self_Defense_Exclude - on/off bei on Wert wird dieser Rolladen bei aktiven Self Defense und offenen Fenster nicht runter gefahren wenn Residents absent ist.</li>
|
||||||
|
<li>ASC_Shading_Brightness_Sensor - Sensor Device welches für die Lichtwerte verwendet wird. ACHTUNG! Findet auch Verwendung bei ASC_Down - brightness</li>
|
||||||
<li>ASC_BrightnessMinVal - minimaler Lichtwert ab welchen Schaltbedingungen geprüft werden sollen / wird der Wert von -1 nicht geändert, so wird automatisch der Wert aus dem Moduldevice genommen</li>
|
<li>ASC_BrightnessMinVal - minimaler Lichtwert ab welchen Schaltbedingungen geprüft werden sollen / wird der Wert von -1 nicht geändert, so wird automatisch der Wert aus dem Moduldevice genommen</li>
|
||||||
<li>ASC_BrightnessMaxVal - maximaler Lichtwert ab welchen Schaltbedingungen geprüft werden sollen / wird der Wert von -1 nicht geändert, so wird automatisch der Wert aus dem Moduldevice genommen</li>
|
<li>ASC_BrightnessMaxVal - maximaler Lichtwert ab welchen Schaltbedingungen geprüft werden sollen / wird der Wert von -1 nicht geändert, so wird automatisch der Wert aus dem Moduldevice genommen</li>
|
||||||
<li>ASC_ShuttersPlace - window/terrace, wenn dieses Attribut auf terrace gesetzt ist und das Residence Device in den Status "done" geht und SelfDefence aktiv ist wird das Rollo geschlossen</li>
|
<li>ASC_ShuttersPlace - window/terrace, wenn dieses Attribut auf terrace gesetzt ist und das Residence Device in den Status "done" geht und SelfDefence aktiv ist wird das Rollo geschlossen</li>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user