add Winrec Reading for Attribut ASC_WindowRec
This commit is contained in:
		| @@ -957,8 +957,10 @@ sub EventProcessingWindowRec($@) { | ||||
|     my ( $hash, $shuttersDev, $events ) = @_; | ||||
|     my $name = $hash->{NAME}; | ||||
|  | ||||
|     my $reading = $shutters->getWinDevReading; | ||||
|  | ||||
|     if ( $events =~ | ||||
|         m#.*state:.*?([Oo]pen(?>ed)?|[Cc]losed?|tilt(?>ed)?|true|false)# | ||||
|         m#.*$reading:.*?([Oo]pen(?>ed)?|[Cc]losed?|tilt(?>ed)?|true|false)# | ||||
|         and IsAfterShuttersManualBlocking($shuttersDev) ) | ||||
|     { | ||||
|         my $match = $1; | ||||
| @@ -6080,7 +6082,8 @@ use GPUtils qw(GP_Import); | ||||
| BEGIN { | ||||
|     GP_Import( | ||||
|         qw( | ||||
|           AttrVal) | ||||
|           AttrVal | ||||
|           gettimeofday) | ||||
|     ); | ||||
| } | ||||
|  | ||||
| @@ -6093,7 +6096,47 @@ sub getSubTyp { | ||||
| sub _getWinDev { | ||||
|     my $self = shift; | ||||
|  | ||||
|     return AttrVal( $self->{shuttersDev}, 'ASC_WindowRec', 'none' ); | ||||
|     return $self->{ $self->{shuttersDev} }->{ASC_WindowRec}->{device} | ||||
|       if ( | ||||
|         exists( | ||||
|             $self->{ $self->{shuttersDev} }->{ASC_WindowRec}->{LASTGETTIME} | ||||
|         ) | ||||
|         and ( gettimeofday() - | ||||
|             $self->{ $self->{shuttersDev} }->{ASC_WindowRec}->{LASTGETTIME} ) < | ||||
|         2 | ||||
|       ); | ||||
|     $self->{ $self->{shuttersDev} }->{ASC_WindowRec}->{LASTGETTIME} = | ||||
|       int( gettimeofday() ); | ||||
|     my ( $device, $reading ) = | ||||
|       FHEM::AutoShuttersControl::GetAttrValues( $self->{shuttersDev}, | ||||
|         'ASC_WindowRec', 'none' ); | ||||
|  | ||||
|     ### erwartetes Ergebnis | ||||
|     # DEVICE:READING VALUEACTIVE:VALUEINACTIVE POSACTIVE:POSINACTIVE | ||||
|  | ||||
|     $self->{ $self->{shuttersDev} }->{ASC_WindowRec}->{device} = | ||||
|       $device; | ||||
|     $self->{ $self->{shuttersDev} }->{ASC_WindowRec}->{reading} = | ||||
|       ( $reading ne 'none' ? $reading : 'state' ); | ||||
|  | ||||
|     return $self->{ $self->{shuttersDev} }->{ASC_WindowRec}->{device}; | ||||
| } | ||||
|  | ||||
| sub getWinDevReading { | ||||
|     my $self = shift; | ||||
|  | ||||
|     return $self->{ $self->{shuttersDev} }->{ASC_WindowRec}->{reading} | ||||
|       if ( | ||||
|         exists( | ||||
|             $self->{ $self->{shuttersDev} }->{ASC_WindowRec}->{LASTGETTIME} | ||||
|         ) | ||||
|         and ( gettimeofday() - | ||||
|             $self->{ $self->{shuttersDev} }->{ASC_WindowRec}->{LASTGETTIME} ) < | ||||
|         2 | ||||
|       ); | ||||
|     $shutters->_getWinDev; | ||||
|  | ||||
|     return $self->{ $self->{shuttersDev} }->{ASC_WindowRec}->{reading}; | ||||
| } | ||||
|  | ||||
| ## Subklasse Readings von Klasse ASC_Window ## | ||||
| @@ -6115,7 +6158,8 @@ BEGIN { | ||||
| sub getWinStatus { | ||||
|     my $self = shift; | ||||
|  | ||||
|     return ReadingsVal( $shutters->_getWinDev, 'state', 'closed' ); | ||||
|     return ReadingsVal( $shutters->_getWinDev, $shutters->getWinDevReading, | ||||
|         'closed' ); | ||||
| } | ||||
|  | ||||
| ## Klasse ASC_Roommate ## | ||||
| @@ -7128,8 +7172,8 @@ sub getblockAscDrivesAfterManual { | ||||
|                 <em>THRESHOLD-OFF</em> sets the complementary value when the wind protection is disabled. Disabled | ||||
|                 if <em>THRESHOLD-ON</em> is set to -1. Defaults to <q>50:20 <em>ASC_Closed_Pos</em></q>. | ||||
|             </li> | ||||
|             <li><strong>ASC_WindowRec</strong> - Points to the window contact device, associated with the shutter. | ||||
|                 Defaults to none. | ||||
|             <li><strong>ASC_WindowRec</strong> - WINDOWREC:[READING], Points to the window contact device, associated with the shutter. | ||||
|                 Defaults to none. Reading is optional | ||||
|             </li> | ||||
|             <li><strong>ASC_WindowRec_subType</strong> - Model type of the used <em>ASC_WindowRec</em>: | ||||
|                 <ul> | ||||
| @@ -7548,7 +7592,7 @@ sub getblockAscDrivesAfterManual { | ||||
|             <li><strong>ASC_WiggleValue</strong> - Wert um welchen sich die Position des Rollladens ändern soll (default: 5)</li> | ||||
|             <li><strong>ASC_WindParameters - TRIGGERMAX[:HYSTERESE] [DRIVEPOSITION]</strong> / Angabe von Max Wert ab dem für Wind getriggert werden soll, Hytsrese Wert ab dem der Windschutz aufgehoben werden soll TRIGGERMAX - HYSTERESE / Ist es bei einigen Rollläden nicht gewünscht das gefahren werden soll, so ist der TRIGGERMAX Wert mit -1 an zu geben. (default: '50:20 ClosedPosition')</li> | ||||
|             <li><strong>ASC_WindowRec_PosAfterDayClosed</strong> - open,lastManual / auf welche Position soll das Rollo nach dem schließen am Tag fahren. Open Position oder letzte gespeicherte manuelle Position (default: open)</li> | ||||
|             <li><strong>ASC_WindowRec</strong> - Name des Fensterkontaktes, an dessen Fenster der Rollladen angebracht ist (default: none)</li> | ||||
|             <li><strong>ASC_WindowRec</strong> - WINDOWREC:[READING], Name des Fensterkontaktes, an dessen Fenster der Rollladen angebracht ist (default: none). Reading ist optional</li> | ||||
|             <li><strong>ASC_WindowRec_subType</strong> - Typ des verwendeten Fensterkontaktes: twostate (optisch oder magnetisch) oder threestate (Drehgriffkontakt) (default: twostate)</li> | ||||
|         </ul> | ||||
|     </ul> | ||||
| @@ -7633,7 +7677,7 @@ sub getblockAscDrivesAfterManual { | ||||
|   ], | ||||
|   "release_status": "under develop", | ||||
|   "license": "GPL_2", | ||||
|   "version": "v0.6.152", | ||||
|   "version": "v0.6.153", | ||||
|   "author": [ | ||||
|     "Marko Oldenburg <leongaultier@gmail.com>" | ||||
|   ], | ||||
|   | ||||
		Reference in New Issue
	
	Block a user