add first code parts for wind
This commit is contained in:
@@ -41,7 +41,7 @@ package main;
|
|||||||
use strict;
|
use strict;
|
||||||
use warnings;
|
use warnings;
|
||||||
|
|
||||||
my $version = '0.4.0.7';
|
my $version = '0.4.0.8-patchWind';
|
||||||
|
|
||||||
sub AutoShuttersControl_Initialize($) {
|
sub AutoShuttersControl_Initialize($) {
|
||||||
my ($hash) = @_;
|
my ($hash) = @_;
|
||||||
@@ -69,6 +69,9 @@ sub AutoShuttersControl_Initialize($) {
|
|||||||
. 'ASC_rainSensorDevice '
|
. 'ASC_rainSensorDevice '
|
||||||
. 'ASC_rainSensorReading '
|
. 'ASC_rainSensorReading '
|
||||||
. 'ASC_rainSensorShuttersClosedPos:0,10,20,30,40,50,60,70,80,90,100 '
|
. 'ASC_rainSensorShuttersClosedPos:0,10,20,30,40,50,60,70,80,90,100 '
|
||||||
|
. 'ASC_windSensorDevice '
|
||||||
|
. 'ASC_windSensorReading '
|
||||||
|
. 'ASC_windSensorShuttersClosedPos: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 '
|
||||||
@@ -79,12 +82,6 @@ sub AutoShuttersControl_Initialize($) {
|
|||||||
. 'ASC_expert:1 '
|
. 'ASC_expert:1 '
|
||||||
. $readingFnAttributes;
|
. $readingFnAttributes;
|
||||||
$hash->{NotifyOrderPrefix} = '51-'; # Order Nummer für NotifyFn
|
$hash->{NotifyOrderPrefix} = '51-'; # Order Nummer für NotifyFn
|
||||||
|
|
||||||
## Ist nur damit sich bei einem reload auch die Versionsnummer erneuert.
|
|
||||||
# foreach my $d ( sort keys %{ $modules{AutoShuttersControl}{defptr} } ) {
|
|
||||||
# my $hash = $modules{AutoShuttersControl}{defptr}{$d};
|
|
||||||
# $hash->{VERSION} = $version;
|
|
||||||
# }
|
|
||||||
}
|
}
|
||||||
|
|
||||||
## unserer packagename
|
## unserer packagename
|
||||||
@@ -377,7 +374,7 @@ 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_rainSensorDevice|.*ASC_Brightness_Sensor|.*ASC_twilightDevice)(\s.*|$)/,
|
/^(ATTR|DELETEATTR)\s(.*ASC_Roommate_Device|.*ASC_WindowRec|.*ASC_residentsDevice|.*ASC_rainSensorDevice|.*ASC_windSensorDevice|.*ASC_Brightness_Sensor|.*ASC_twilightDevice)(\s.*|$)/,
|
||||||
@{$events}
|
@{$events}
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
@@ -421,6 +418,8 @@ sub EventProcessingGeneral($$$) {
|
|||||||
if ( $deviceAttr eq 'ASC_residentsDevice' );
|
if ( $deviceAttr eq 'ASC_residentsDevice' );
|
||||||
EventProcessingRain( $hash, $device, $events )
|
EventProcessingRain( $hash, $device, $events )
|
||||||
if ( $deviceAttr eq 'ASC_rainSensorDevice' );
|
if ( $deviceAttr eq 'ASC_rainSensorDevice' );
|
||||||
|
EventProcessingWind( $hash, $device, $events )
|
||||||
|
if ( $deviceAttr eq 'ASC_windSensorDevice' );
|
||||||
EventProcessingTwilightDevice( $hash, $device, $events )
|
EventProcessingTwilightDevice( $hash, $device, $events )
|
||||||
if ( $deviceAttr eq 'ASC_twilightDevice' );
|
if ( $deviceAttr eq 'ASC_twilightDevice' );
|
||||||
|
|
||||||
@@ -442,7 +441,7 @@ sub EventProcessingGeneral($$$) {
|
|||||||
}
|
}
|
||||||
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_rainSensorDevice|ASC_Brightness_Sensor|ASC_twilightDevice)\s(.*)$#
|
m#^ATTR\s(.*)\s(ASC_Roommate_Device|ASC_WindowRec|ASC_residentsDevice|ASC_rainSensorDevice|ASC_windSensorDevice|ASC_Brightness_Sensor|ASC_twilightDevice)\s(.*)$#
|
||||||
)
|
)
|
||||||
{ # wurde den Attributen unserer Rolläden ein Wert zugewiesen ?
|
{ # wurde den Attributen unserer Rolläden ein Wert zugewiesen ?
|
||||||
AddNotifyDev( $hash, $3, $1, $2 ) if ( $3 ne 'none' );
|
AddNotifyDev( $hash, $3, $1, $2 ) if ( $3 ne 'none' );
|
||||||
@@ -450,7 +449,7 @@ m#^ATTR\s(.*)\s(ASC_Roommate_Device|ASC_WindowRec|ASC_residentsDevice|ASC_rainSe
|
|||||||
"AutoShuttersControl ($name) - EventProcessing: ATTR" );
|
"AutoShuttersControl ($name) - EventProcessing: ATTR" );
|
||||||
}
|
}
|
||||||
elsif ( $events =~
|
elsif ( $events =~
|
||||||
m#^DELETEATTR\s(.*)\s(ASC_Roommate_Device|ASC_WindowRec|ASC_residentsDevice|ASC_rainSensorDevice|ASC_Brightness_Sensor|ASC_twilightDevice)$#
|
m#^DELETEATTR\s(.*)\s(ASC_Roommate_Device|ASC_WindowRec|ASC_residentsDevice|ASC_rainSensorDevice|ASC_windSensorDevice|ASC_Brightness_Sensor|ASC_twilightDevice)$#
|
||||||
)
|
)
|
||||||
{ # wurde das Attribut unserer Rolläden gelöscht ?
|
{ # wurde das Attribut unserer Rolläden gelöscht ?
|
||||||
Log3( $name, 4,
|
Log3( $name, 4,
|
||||||
@@ -1130,6 +1129,36 @@ sub EventProcessingRain($@) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
######### Under Construction
|
||||||
|
sub EventProcessingWind($@) {
|
||||||
|
my ( $hash, $device, $events ) = @_;
|
||||||
|
my $name = $device;
|
||||||
|
my $reading = $ascDev->getWindSensorReading;
|
||||||
|
my $val;
|
||||||
|
|
||||||
|
if ( $events =~ m#$reading:\s(\d+)# ) {
|
||||||
|
|
||||||
|
foreach my $shuttersDev ( @{ $hash->{helper}{shuttersList} } ) {
|
||||||
|
$shutters->setShuttersDev($shuttersDev);
|
||||||
|
if ( $val > 100
|
||||||
|
and $shutters->getStatus !=
|
||||||
|
$ascDev->getRainSensorShuttersClosedPos )
|
||||||
|
{
|
||||||
|
$shutters->setLastDrive('rain protection');
|
||||||
|
$shutters->setDriveCmd(
|
||||||
|
$ascDev->getRainSensorShuttersClosedPos );
|
||||||
|
}
|
||||||
|
elsif ( $val == 0
|
||||||
|
and $shutters->getStatus ==
|
||||||
|
$ascDev->getRainSensorShuttersClosedPos )
|
||||||
|
{
|
||||||
|
$shutters->setLastDrive('rain un-protection');
|
||||||
|
$shutters->setDriveCmd( $shutters->getLastPos );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
sub EventProcessingBrightness($@) {
|
sub EventProcessingBrightness($@) {
|
||||||
my ( $hash, $shuttersDev, $events ) = @_;
|
my ( $hash, $shuttersDev, $events ) = @_;
|
||||||
my $name = $hash->{NAME};
|
my $name = $hash->{NAME};
|
||||||
@@ -1867,6 +1896,9 @@ sub CreateNewNotifyDev($) {
|
|||||||
AddNotifyDev( $hash, AttrVal( $name, 'ASC_rainSensorDevice', 'none' ),
|
AddNotifyDev( $hash, AttrVal( $name, 'ASC_rainSensorDevice', 'none' ),
|
||||||
$name, 'ASC_rainSensorDevice' )
|
$name, 'ASC_rainSensorDevice' )
|
||||||
if ( AttrVal( $name, 'ASC_rainSensorDevice', 'none' ) ne 'none' );
|
if ( AttrVal( $name, 'ASC_rainSensorDevice', 'none' ) ne 'none' );
|
||||||
|
AddNotifyDev( $hash, AttrVal( $name, 'ASC_windSensorDevice', 'none' ),
|
||||||
|
$name, 'ASC_windSensorDevice' )
|
||||||
|
if ( AttrVal( $name, 'ASC_windSensorDevice', 'none' ) ne 'none' );
|
||||||
AddNotifyDev( $hash, AttrVal( $name, 'ASC_twilightDevice', 'none' ),
|
AddNotifyDev( $hash, AttrVal( $name, 'ASC_twilightDevice', 'none' ),
|
||||||
$name, 'ASC_twilightDevice' )
|
$name, 'ASC_twilightDevice' )
|
||||||
if ( AttrVal( $name, 'ASC_twilightDevice', 'none' ) ne 'none' );
|
if ( AttrVal( $name, 'ASC_twilightDevice', 'none' ) ne 'none' );
|
||||||
@@ -3735,6 +3767,32 @@ sub getRainSensorShuttersClosedPos {
|
|||||||
|
|
||||||
return AttrVal( $name, 'ASC_rainSensorShuttersClosedPos', 50 );
|
return AttrVal( $name, 'ASC_rainSensorShuttersClosedPos', 50 );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
sub getWindSensor {
|
||||||
|
my $self = shift;
|
||||||
|
my $name = $self->{name};
|
||||||
|
my $default = $self->{defaultarg};
|
||||||
|
|
||||||
|
$default = 'none' if ( not defined($default) );
|
||||||
|
return AttrVal( $name, 'ASC_windSensorDevice', $default );
|
||||||
|
}
|
||||||
|
|
||||||
|
sub getWindSensorReading {
|
||||||
|
my $self = shift;
|
||||||
|
my $name = $self->{name};
|
||||||
|
my $default = $self->{defaultarg};
|
||||||
|
|
||||||
|
$default = 'state' if ( not defined($default) );
|
||||||
|
return AttrVal( $name, 'ASC_windSensorReading', $default );
|
||||||
|
}
|
||||||
|
|
||||||
|
sub getWindSensorShuttersClosedPos {
|
||||||
|
my $self = shift;
|
||||||
|
my $name = $self->{name};
|
||||||
|
|
||||||
|
return AttrVal( $name, 'ASC_windSensorShuttersClosedPos', 50 );
|
||||||
|
}
|
||||||
|
|
||||||
1;
|
1;
|
||||||
|
|
||||||
=pod
|
=pod
|
||||||
|
Reference in New Issue
Block a user