add support for wind data
This commit is contained in:
		| @@ -41,7 +41,7 @@ package main; | |||||||
| use strict; | use strict; | ||||||
| use warnings; | use warnings; | ||||||
|  |  | ||||||
| my $version = '0.4.0.9-patchWind'; | my $version = '0.4.0.10-patchWind'; | ||||||
|  |  | ||||||
| sub AutoShuttersControl_Initialize($) { | sub AutoShuttersControl_Initialize($) { | ||||||
|     my ($hash) = @_; |     my ($hash) = @_; | ||||||
| @@ -69,9 +69,6 @@ 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 ' | ||||||
| @@ -197,6 +194,10 @@ my %userAttrList = ( | |||||||
|     'ASC_BrightnessMinVal'            => -1, |     'ASC_BrightnessMinVal'            => -1, | ||||||
|     'ASC_BrightnessMaxVal'            => -1, |     'ASC_BrightnessMaxVal'            => -1, | ||||||
|     'ASC_WiggleValue'                 => 5, |     'ASC_WiggleValue'                 => 5, | ||||||
|  |     'ASC_Wind_SensorDevice'           => 'none', | ||||||
|  |     'ASC_Wind_SensorReading'          => 'wind', | ||||||
|  |     'ASC_Wind_minMaxSpeed'            => '30:50', | ||||||
|  |     'ASC_Wind_Pos'                    => [ '', 0,   100 ], | ||||||
| ); | ); | ||||||
|  |  | ||||||
| my %posSetCmds = ( | my %posSetCmds = ( | ||||||
| @@ -374,7 +375,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_windSensorDevice|.*ASC_Brightness_Sensor|.*ASC_twilightDevice)(\s.*|$)/, | /^(ATTR|DELETEATTR)\s(.*ASC_Roommate_Device|.*ASC_WindowRec|.*ASC_residentsDevice|.*ASC_rainSensorDevice|.*ASC_Wind_SensorDevice|.*ASC_Brightness_Sensor|.*ASC_twilightDevice)(\s.*|$)/, | ||||||
|             @{$events} |             @{$events} | ||||||
|           ) |           ) | ||||||
|         { |         { | ||||||
| @@ -419,7 +420,7 @@ sub EventProcessingGeneral($$$) { | |||||||
|             EventProcessingRain( $hash, $device, $events ) |             EventProcessingRain( $hash, $device, $events ) | ||||||
|               if ( $deviceAttr eq 'ASC_rainSensorDevice' ); |               if ( $deviceAttr eq 'ASC_rainSensorDevice' ); | ||||||
|             EventProcessingWind( $hash, $device, $events ) |             EventProcessingWind( $hash, $device, $events ) | ||||||
|               if ( $deviceAttr eq 'ASC_windSensorDevice' ); |               if ( $deviceAttr eq 'ASC_Wind_SensorDevice' ); | ||||||
|             EventProcessingTwilightDevice( $hash, $device, $events ) |             EventProcessingTwilightDevice( $hash, $device, $events ) | ||||||
|               if ( $deviceAttr eq 'ASC_twilightDevice' ); |               if ( $deviceAttr eq 'ASC_twilightDevice' ); | ||||||
|  |  | ||||||
| @@ -441,7 +442,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_windSensorDevice|ASC_Brightness_Sensor|ASC_twilightDevice)\s(.*)$# | m#^ATTR\s(.*)\s(ASC_Roommate_Device|ASC_WindowRec|ASC_residentsDevice|ASC_rainSensorDevice|ASC_Wind_SensorDevice|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' ); | ||||||
| @@ -449,7 +450,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_windSensorDevice|ASC_Brightness_Sensor|ASC_twilightDevice)$# | m#^DELETEATTR\s(.*)\s(ASC_Roommate_Device|ASC_WindowRec|ASC_residentsDevice|ASC_rainSensorDevice|ASC_Wind_SensorDevice|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, | ||||||
| @@ -580,31 +581,10 @@ sub ShuttersDeviceScan($) { | |||||||
|         push( @{ $hash->{helper}{shuttersList} }, $_ ) |         push( @{ $hash->{helper}{shuttersList} }, $_ ) | ||||||
|           ; ## einem Hash wird ein Array zugewiesen welches die Liste der erkannten Rollos beinhaltet |           ; ## einem Hash wird ein Array zugewiesen welches die Liste der erkannten Rollos beinhaltet | ||||||
|  |  | ||||||
|         delFromDevAttrList( $_, 'ASC_lock-out:soft,hard' ) | #         delFromDevAttrList( $_, 'ASC_Shading_Brightness_Sensor' ) | ||||||
|           ;    # temporär muss später gelöscht werden ab Version 0.2.0.6 | #           ;    # temporär muss später gelöscht werden ab Version 0.2.0.12 | ||||||
|         delFromDevAttrList( $_, 'ASC_lock-outCmd:inhibit,blocked' ) | #         delFromDevAttrList( $_, 'ASC_Shading_Brightness_Reading' ) | ||||||
|           ;    # temporär muss später gelöscht werden ab Version 0.2.0.6 | #           ;    # temporär muss später gelöscht werden ab Version 0.2.0.12 | ||||||
|         delFromDevAttrList( $_, |  | ||||||
|             'ASC_Pos_after_ComfortOpen:0,10,20,30,40,50,60,70,80,90,100' ) |  | ||||||
|           ;    # temporär muss später gelöscht werden ab Version 0.2.0.6 |  | ||||||
|  |  | ||||||
|         delFromDevAttrList( $_, 'ASC_Antifreeze:off,on' ) |  | ||||||
|           if ( AttrVal( $_, 'ASC_Antifreeze', 'on' ) eq 'on' |  | ||||||
|             or AttrVal( $_, 'ASC_Antifreeze', 'on' ) eq 'off' ) |  | ||||||
|           ;    # temporär muss später gelöscht werden ab Version 0.2.0.6 |  | ||||||
|  |  | ||||||
|         delFromDevAttrList( $_, |  | ||||||
| 'ASC_AntifreezePos:5,10,15,20,25,30,35,40,45,50,55,60,65,70,75,80,85,90,95,100' |  | ||||||
|         );     # temporär muss später gelöscht werden ab Version 0.2.0.7 |  | ||||||
|  |  | ||||||
|         delFromDevAttrList( $_, 'ASC_LockOut_Cmd:inhibit,blocked' ) |  | ||||||
|           if ( AttrVal( $_, 'ASC_LockOut_Cmd', 'none' ) eq 'none' ) |  | ||||||
|           ;    # temporär muss später gelöscht werden ab Version 0.2.0.10 |  | ||||||
|  |  | ||||||
|         delFromDevAttrList( $_, 'ASC_Shading_Brightness_Sensor' ) |  | ||||||
|           ;    # temporär muss später gelöscht werden ab Version 0.2.0.12 |  | ||||||
|         delFromDevAttrList( $_, 'ASC_Shading_Brightness_Reading' ) |  | ||||||
|           ;    # temporär muss später gelöscht werden ab Version 0.2.0.12 |  | ||||||
|  |  | ||||||
|         $shuttersList = $shuttersList . ',' . $_; |         $shuttersList = $shuttersList . ',' . $_; | ||||||
|         $shutters->setShuttersDev($_); |         $shutters->setShuttersDev($_); | ||||||
| @@ -1112,7 +1092,7 @@ sub EventProcessingRain($@) { | |||||||
|             $shutters->setShuttersDev($shuttersDev); |             $shutters->setShuttersDev($shuttersDev); | ||||||
|             if (    $val > 100 |             if (    $val > 100 | ||||||
|                 and $shutters->getStatus != |                 and $shutters->getStatus != | ||||||
|                 $ascDev->getRainSensorShuttersClosedPos ) |                     $ascDev->getRainSensorShuttersClosedPos ) | ||||||
|             { |             { | ||||||
|                 $shutters->setLastDrive('rain protection'); |                 $shutters->setLastDrive('rain protection'); | ||||||
|                 $shutters->setDriveCmd( |                 $shutters->setDriveCmd( | ||||||
| @@ -1120,7 +1100,7 @@ sub EventProcessingRain($@) { | |||||||
|             } |             } | ||||||
|             elsif ( $val == 0 |             elsif ( $val == 0 | ||||||
|                 and $shutters->getStatus == |                 and $shutters->getStatus == | ||||||
|                 $ascDev->getRainSensorShuttersClosedPos ) |                     $ascDev->getRainSensorShuttersClosedPos ) | ||||||
|             { |             { | ||||||
|                 $shutters->setLastDrive('rain un-protection'); |                 $shutters->setLastDrive('rain un-protection'); | ||||||
|                 $shutters->setDriveCmd( $shutters->getLastPos ); |                 $shutters->setDriveCmd( $shutters->getLastPos ); | ||||||
| @@ -1131,33 +1111,38 @@ sub EventProcessingRain($@) { | |||||||
|  |  | ||||||
| ######### Under Construction | ######### Under Construction | ||||||
| sub EventProcessingWind($@) { | sub EventProcessingWind($@) { | ||||||
|     my ( $hash, $device, $events ) = @_; |     my ( $hash, $shuttersDev, $events ) = @_; | ||||||
|     my $name    = $device; |     my $name = $hash->{NAME}; | ||||||
|     my $reading = $ascDev->getWindSensorReading; |     $shutters->setShuttersDev($shuttersDev); | ||||||
|     my $val; |  | ||||||
|  |  | ||||||
|  |     my $reading = $shutters->getWindSensorReading; | ||||||
|     if ( $events =~ m#$reading:\s(\d+)# ) { |     if ( $events =~ m#$reading:\s(\d+)# ) { | ||||||
|  |      | ||||||
|         foreach my $shuttersDev ( @{ $hash->{helper}{shuttersList} } ) { |         foreach my $shuttersDev ( @{ $hash->{helper}{shuttersList} } ) { | ||||||
|             $shutters->setShuttersDev($shuttersDev); |             $shutters->setShuttersDev($shuttersDev); | ||||||
|             if (    $val > 100 |              | ||||||
|                 and $shutters->getStatus != |             next if (  CheckIfShuttersWindowRecOpen($shuttersDev) != 0 | ||||||
|                 $ascDev->getRainSensorShuttersClosedPos ) |               and $shutters->getShuttersPlace eq 'terrace' ); | ||||||
|  |  | ||||||
|  |             if (  $1 > $shutters->getWindMax | ||||||
|  |               and $shutters->getStatus != | ||||||
|  |                   $shutters->getWindPos ) | ||||||
|             { |             { | ||||||
|                 $shutters->setLastDrive('rain protection'); |                 $shutters->setLastDrive('wind protection'); | ||||||
|                 $shutters->setDriveCmd( |                 $shutters->setDriveCmd( | ||||||
|                     $ascDev->getRainSensorShuttersClosedPos ); |                     $shutters->getWindPos ); | ||||||
|             } |             } | ||||||
|             elsif ( $val == 0 |             elsif ( $1 < $shutters->getWindMin | ||||||
|                 and $shutters->getStatus == |                 and $shutters->getStatus == | ||||||
|                 $ascDev->getRainSensorShuttersClosedPos ) |                     $shutters->getWindPos ) | ||||||
|             { |             { | ||||||
|                 $shutters->setLastDrive('rain un-protection'); |                 $shutters->setLastDrive('wind un-protection'); | ||||||
|                 $shutters->setDriveCmd( $shutters->getLastPos ); |                 $shutters->setDriveCmd( $shutters->getLastPos ); | ||||||
|             } |             } | ||||||
|         } |         } | ||||||
|     } |     } | ||||||
| } | } | ||||||
|  | ########## | ||||||
|  |  | ||||||
| sub EventProcessingBrightness($@) { | sub EventProcessingBrightness($@) { | ||||||
|     my ( $hash, $shuttersDev, $events ) = @_; |     my ( $hash, $shuttersDev, $events ) = @_; | ||||||
| @@ -1332,14 +1317,14 @@ sub EventProcessingTwilightDevice($@) { | |||||||
|     # |     # | ||||||
|     #     Astro |     #     Astro | ||||||
|     #     SunAz = azimuth = Sonnenwinkel |     #     SunAz = azimuth = Sonnenwinkel | ||||||
|     #     SunAlt = evaluation = Sonnenhöhe |     #     SunAlt = elevation = Sonnenhöhe | ||||||
|  |  | ||||||
|     if ( $events =~ m#(azimuth|evaluation|SunAz|SunAlt):\s(\d+.\d+)# ) { |     if ( $events =~ m#(azimuth|elevation|SunAz|SunAlt):\s(\d+.\d+)# ) { | ||||||
|         my $name = $device; |         my $name = $device; | ||||||
|         my ( $azimuth, $elevation ); |         my ( $azimuth, $elevation ); | ||||||
|  |  | ||||||
|         $azimuth   = $2 if ( $1 eq 'azimuth'    or $1 eq 'SunAz' ); |         $azimuth   = $2 if ( $1 eq 'azimuth'    or $1 eq 'SunAz' ); | ||||||
|         $elevation = $2 if ( $1 eq 'evaluation' or $1 eq 'SunAlt' ); |         $elevation = $2 if ( $1 eq 'elevation' or $1 eq 'SunAlt' ); | ||||||
|  |  | ||||||
|         $azimuth = $ascDev->getAzimuth |         $azimuth = $ascDev->getAzimuth | ||||||
|           if ( not defined($azimuth) and not $azimuth ); |           if ( not defined($azimuth) and not $azimuth ); | ||||||
| @@ -1888,6 +1873,9 @@ sub CreateNewNotifyDev($) { | |||||||
|         AddNotifyDev( $hash, AttrVal( $_, 'ASC_Brightness_Sensor', 'none' ), |         AddNotifyDev( $hash, AttrVal( $_, 'ASC_Brightness_Sensor', 'none' ), | ||||||
|             $_, 'ASC_Brightness_Sensor' ) |             $_, 'ASC_Brightness_Sensor' ) | ||||||
|           if ( AttrVal( $_, 'ASC_Brightness_Sensor', 'none' ) ne 'none' ); |           if ( AttrVal( $_, 'ASC_Brightness_Sensor', 'none' ) ne 'none' ); | ||||||
|  |         AddNotifyDev( $hash, AttrVal( $_, 'ASC_Wind_SensorDevice', 'none' ), | ||||||
|  |             $_, 'ASC_Wind_SensorDevice' ) | ||||||
|  |           if ( AttrVal( $_, 'ASC_Wind_SensorDevice', 'none' ) ne 'none' ); | ||||||
|         $shuttersList = $shuttersList . ',' . $_; |         $shuttersList = $shuttersList . ',' . $_; | ||||||
|     } |     } | ||||||
|     AddNotifyDev( $hash, AttrVal( $name, 'ASC_residentsDevice', 'none' ), |     AddNotifyDev( $hash, AttrVal( $name, 'ASC_residentsDevice', 'none' ), | ||||||
| @@ -1896,9 +1884,6 @@ 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' ); | ||||||
| @@ -3170,6 +3155,45 @@ sub getRoommatesReading { | |||||||
|     return AttrVal( $self->{shuttersDev}, 'ASC_Roommate_Reading', $default ); |     return AttrVal( $self->{shuttersDev}, 'ASC_Roommate_Reading', $default ); | ||||||
| } | } | ||||||
|  |  | ||||||
|  | sub _getWindSensor { | ||||||
|  |     my $self    = shift; | ||||||
|  |     my $name    = $self->{name}; | ||||||
|  |     my $default = $self->{defaultarg}; | ||||||
|  |  | ||||||
|  |     $default = 'none' if ( not defined($default) ); | ||||||
|  |     return AttrVal( $self->{shuttersDev}, 'ASC_Wind_SensorDevice', $default ); | ||||||
|  | } | ||||||
|  |  | ||||||
|  | sub getWindSensorReading { | ||||||
|  |     my $self    = shift; | ||||||
|  |     my $name    = $self->{name}; | ||||||
|  |     my $default = $self->{defaultarg}; | ||||||
|  |  | ||||||
|  |     $default = 'wind' if ( not defined($default) ); | ||||||
|  |     return AttrVal( $self->{shuttersDev}, 'ASC_Wind_SensorReading', $default ); | ||||||
|  | } | ||||||
|  |  | ||||||
|  | sub getWindPos { | ||||||
|  |     my $self = shift; | ||||||
|  |     my $name = $self->{name}; | ||||||
|  |  | ||||||
|  |     return AttrVal( $self->{shuttersDev}, 'ASC_Wind_Pos', 0 ); | ||||||
|  | } | ||||||
|  |  | ||||||
|  | sub getWindMax { | ||||||
|  |     my $self = shift; | ||||||
|  |     my $name = $self->{name}; | ||||||
|  |  | ||||||
|  |     return (split(':',AttrVal( $self->{shuttersDev}, 'ASC_Wind_minMaxSpeed', 30)))[1]; | ||||||
|  | } | ||||||
|  |  | ||||||
|  | sub getWindMin { | ||||||
|  |     my $self = shift; | ||||||
|  |     my $name = $self->{name}; | ||||||
|  |  | ||||||
|  |     return (split(':',AttrVal( $self->{shuttersDev}, 'ASC_Wind_minMaxSpeed', 30)))[0]; | ||||||
|  | } | ||||||
|  |  | ||||||
| sub getModeUp { | sub getModeUp { | ||||||
|     my $self = shift; |     my $self = shift; | ||||||
|  |  | ||||||
| @@ -3307,10 +3331,17 @@ BEGIN { | |||||||
| sub getBrightness { | sub getBrightness { | ||||||
|     my $self = shift; |     my $self = shift; | ||||||
|  |  | ||||||
|     return ReadingsVal( $shutters->_getBrightnessSensor, |     return ReadingsNum( $shutters->_getBrightnessSensor, | ||||||
|         $shutters->getBrightnessReading, -1 ); |         $shutters->getBrightnessReading, -1 ); | ||||||
| } | } | ||||||
|  |  | ||||||
|  | sub getWindStatus { | ||||||
|  |     my $self = shift; | ||||||
|  |  | ||||||
|  |     return ReadingsVal( $shutters->_getWindSensor, | ||||||
|  |         $shutters->getWindSensorReading, -1 ); | ||||||
|  | } | ||||||
|  |  | ||||||
| sub getStatus { | sub getStatus { | ||||||
|     my $self = shift; |     my $self = shift; | ||||||
|  |  | ||||||
| @@ -3768,31 +3799,6 @@ 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 | ||||||
| @@ -3932,6 +3938,9 @@ sub getWindSensorShuttersClosedPos { | |||||||
|       <li>ASC_BrightnessMinVal - minimum brightness value to activate check of conditions / if the value -1 is not changed, the value of the module device is used.</li> |       <li>ASC_BrightnessMinVal - minimum brightness value to activate check of conditions / if the value -1 is not changed, the value of the module device is used.</li> | ||||||
|       <li>ASC_BrightnessMaxVal - maximum brightness value to activate check of conditions / if the value -1 is not changed, the value of the module device is used.</li> |       <li>ASC_BrightnessMaxVal - maximum brightness value to activate check of conditions / if the value -1 is not changed, the value of the module device is used.</li> | ||||||
|       <li>ASC_ShuttersPlace - window/terrace, if this attribute is set to terrace and the residents device are in state "gone"and SelfDefence is active the shutter will be closed</li> |       <li>ASC_ShuttersPlace - window/terrace, if this attribute is set to terrace and the residents device are in state "gone"and SelfDefence is active the shutter will be closed</li> | ||||||
|  |       <li>ASC_Wind_SensorDevice - </li> | ||||||
|  |       <li>ASC_Wind_SensorReading - </li> | ||||||
|  |       <li>ASC_Wind_minMaxSpeed - </li> | ||||||
|     </ul> |     </ul> | ||||||
|   </ul> |   </ul> | ||||||
| </ul> | </ul> | ||||||
| @@ -4088,6 +4097,9 @@ sub getWindSensorShuttersClosedPos { | |||||||
|       <li>ASC_Shading_WaitingPeriod - wie viele Sekunden soll gewartet werden bevor eine weitere Auswertung der Sensordaten für die Beschattung statt finden soll</li> |       <li>ASC_Shading_WaitingPeriod - wie viele Sekunden soll gewartet werden bevor eine weitere Auswertung der Sensordaten für die Beschattung statt finden soll</li> | ||||||
|       <li>ASC_PrivacyDownTime_beforNightClose - wie viele Sekunden vor dem abendlichen schlie&zlig;en soll der Rollladen in die Sichtschutzposition fahren, -1 bedeutet das diese Funktion unbeachtet bleiben soll</li> |       <li>ASC_PrivacyDownTime_beforNightClose - wie viele Sekunden vor dem abendlichen schlie&zlig;en soll der Rollladen in die Sichtschutzposition fahren, -1 bedeutet das diese Funktion unbeachtet bleiben soll</li> | ||||||
|       <li>ASC_PrivacyDown_Pos - Position den Rollladens für den Sichtschutz</li> |       <li>ASC_PrivacyDown_Pos - Position den Rollladens für den Sichtschutz</li> | ||||||
|  |       <li>ASC_Wind_SensorDevice - Name des FHEM Devices für die Windgeschwindigkeit</li> | ||||||
|  |       <li>ASC_Wind_SensorReading - Name des Device Readings welches die Wind Informationen hält</li> | ||||||
|  |       <li>ASC_Wind_minMaxSpeed - min:max / Angabe von Minamaler und Maximaler Windgeschwindigkeit, durch doppel Punkt getrennt. Bsp.: schließen bei über max Wert und wieder auf vorherige Position fahren bei min Wert.</li> | ||||||
|     </ul> |     </ul> | ||||||
|   </ul> |   </ul> | ||||||
| </ul> | </ul> | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user