add Winrec Reading for Attribut ASC_WindowRec
This commit is contained in:
		| @@ -957,8 +957,10 @@ sub EventProcessingWindowRec($@) { | |||||||
|     my ( $hash, $shuttersDev, $events ) = @_; |     my ( $hash, $shuttersDev, $events ) = @_; | ||||||
|     my $name = $hash->{NAME}; |     my $name = $hash->{NAME}; | ||||||
|  |  | ||||||
|  |     my $reading = $shutters->getWinDevReading; | ||||||
|  |  | ||||||
|     if ( $events =~ |     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) ) |         and IsAfterShuttersManualBlocking($shuttersDev) ) | ||||||
|     { |     { | ||||||
|         my $match = $1; |         my $match = $1; | ||||||
| @@ -3934,30 +3936,30 @@ sub CheckIfShuttersWindowRecOpen($) { | |||||||
|     my $shuttersDev = shift; |     my $shuttersDev = shift; | ||||||
|     $shutters->setShuttersDev($shuttersDev); |     $shutters->setShuttersDev($shuttersDev); | ||||||
|  |  | ||||||
|     if ( $shutters->getWinStatus =~ /[Oo]pen|false/ )    # CK: covers: open|opened |     if ( $shutters->getWinStatus =~ /[Oo]pen|false/ )  # CK: covers: open|opened | ||||||
|     { |     { | ||||||
|         return 2; |         return 2; | ||||||
|     } |     } | ||||||
|     elsif ( $shutters->getWinStatus =~ /tilt/ |     elsif ( $shutters->getWinStatus =~ /tilt/ | ||||||
|         and $shutters->getSubTyp eq 'threestate' )    # CK: covers: tilt|tilted |         and $shutters->getSubTyp eq 'threestate' )     # CK: covers: tilt|tilted | ||||||
|     { |     { | ||||||
|         return 1; |         return 1; | ||||||
|     } |     } | ||||||
|     elsif ( $shutters->getWinStatus =~ /[Cc]lose|true/ ) { |     elsif ( $shutters->getWinStatus =~ /[Cc]lose|true/ ) { | ||||||
|         return 0; |         return 0; | ||||||
|     }                                                 # CK: covers: close|closed |     }    # CK: covers: close|closed | ||||||
| } | } | ||||||
|  |  | ||||||
| sub makeReadingName($) { | sub makeReadingName($) { | ||||||
|     my ($rname) = @_; |     my ($rname) = @_; | ||||||
|     my %charHash = ( |     my %charHash = ( | ||||||
|         chr(0xe4) => "ae",                            # ä |         chr(0xe4) => "ae",    # ä | ||||||
|         chr(0xc4) => "Ae",                            # Ä |         chr(0xc4) => "Ae",    # Ä | ||||||
|         chr(0xfc) => "ue",                            # ü |         chr(0xfc) => "ue",    # ü | ||||||
|         chr(0xdc) => "Ue",                            # Ü |         chr(0xdc) => "Ue",    # Ü | ||||||
|         chr(0xf6) => "oe",                            # ö |         chr(0xf6) => "oe",    # ö | ||||||
|         chr(0xd6) => "Oe",                            # Ö |         chr(0xd6) => "Oe",    # Ö | ||||||
|         chr(0xdf) => "ss"                             # ß |         chr(0xdf) => "ss"     # ß | ||||||
|     ); |     ); | ||||||
|     my $charHashkeys = join( "", keys(%charHash) ); |     my $charHashkeys = join( "", keys(%charHash) ); | ||||||
|  |  | ||||||
| @@ -6080,7 +6082,8 @@ use GPUtils qw(GP_Import); | |||||||
| BEGIN { | BEGIN { | ||||||
|     GP_Import( |     GP_Import( | ||||||
|         qw( |         qw( | ||||||
|           AttrVal) |           AttrVal | ||||||
|  |           gettimeofday) | ||||||
|     ); |     ); | ||||||
| } | } | ||||||
|  |  | ||||||
| @@ -6093,7 +6096,47 @@ sub getSubTyp { | |||||||
| sub _getWinDev { | sub _getWinDev { | ||||||
|     my $self = shift; |     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 ## | ## Subklasse Readings von Klasse ASC_Window ## | ||||||
| @@ -6115,7 +6158,8 @@ BEGIN { | |||||||
| sub getWinStatus { | sub getWinStatus { | ||||||
|     my $self = shift; |     my $self = shift; | ||||||
|  |  | ||||||
|     return ReadingsVal( $shutters->_getWinDev, 'state', 'closed' ); |     return ReadingsVal( $shutters->_getWinDev, $shutters->getWinDevReading, | ||||||
|  |         'closed' ); | ||||||
| } | } | ||||||
|  |  | ||||||
| ## Klasse ASC_Roommate ## | ## Klasse ASC_Roommate ## | ||||||
| @@ -7128,8 +7172,8 @@ sub getblockAscDrivesAfterManual { | |||||||
|                 <em>THRESHOLD-OFF</em> sets the complementary value when the wind protection is disabled. Disabled |                 <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>. |                 if <em>THRESHOLD-ON</em> is set to -1. Defaults to <q>50:20 <em>ASC_Closed_Pos</em></q>. | ||||||
|             </li> |             </li> | ||||||
|             <li><strong>ASC_WindowRec</strong> - Points to the window contact device, associated with the shutter. |             <li><strong>ASC_WindowRec</strong> - WINDOWREC:[READING], Points to the window contact device, associated with the shutter. | ||||||
|                 Defaults to none. |                 Defaults to none. Reading is optional | ||||||
|             </li> |             </li> | ||||||
|             <li><strong>ASC_WindowRec_subType</strong> - Model type of the used <em>ASC_WindowRec</em>: |             <li><strong>ASC_WindowRec_subType</strong> - Model type of the used <em>ASC_WindowRec</em>: | ||||||
|                 <ul> |                 <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_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_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_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> |             <li><strong>ASC_WindowRec_subType</strong> - Typ des verwendeten Fensterkontaktes: twostate (optisch oder magnetisch) oder threestate (Drehgriffkontakt) (default: twostate)</li> | ||||||
|         </ul> |         </ul> | ||||||
|     </ul> |     </ul> | ||||||
| @@ -7633,7 +7677,7 @@ sub getblockAscDrivesAfterManual { | |||||||
|   ], |   ], | ||||||
|   "release_status": "under develop", |   "release_status": "under develop", | ||||||
|   "license": "GPL_2", |   "license": "GPL_2", | ||||||
|   "version": "v0.6.152", |   "version": "v0.6.153", | ||||||
|   "author": [ |   "author": [ | ||||||
|     "Marko Oldenburg <leongaultier@gmail.com>" |     "Marko Oldenburg <leongaultier@gmail.com>" | ||||||
|   ], |   ], | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user