EventMap: Unterschied zwischen den Versionen

Aus FHEMWiki
(Beispiel "dim xx" aus Forum als Beispiel eingefügt)
K (globales Attribut)
 
(10 dazwischenliegende Versionen von 4 Benutzern werden nicht angezeigt)
Zeile 2: Zeile 2:
<!-- Infobox Attribut sinnvoll? -->
<!-- Infobox Attribut sinnvoll? -->


Das Attribut [[eventMap]] dient dazu, Ereignisse (bzw. Status), die ein Device unterstützt, auf
[[eventMap]] ist ein [[Attribut#Globale_Attribute|globales Attribut]]. Es hat mehrere Funktionen, die es gleichzeitig ausführt. Beispielsweise möchte man die Bezeichnung eines Zustandes ändern: Statt des Zustandes ''on'' soll es ''aus'' oder statt des Zustandes ''off'' soll es ''ausgelöst'' heißen. Eine solche Änderung kann mit eventMap vorgenommen werden. eventMap ersetzt damit Ausdrücke durch andere Ausdrücke.
eine andere Schreibweise oder Übersetzung umzuleiten (zu '''mappen''') oder mehrere gleichartige Werte auf einen einzelnen neuen Wert zusammenzufassen.
 
Gleichzeitig erlaubt eventMap, dass auch Befehle anders lauten. Das Kommando ''set <device> off'' könnte dann auch als ''set <device> ausschalten'' lauten. Die früheren Befehle sind jedoch nicht gelöscht und können immer noch ausgeführt werden. Zuletzt können mehrere gleichartige Werte zu einen einzelnen neuen Wert zusammengefasst werden.
 
Wer eventMap verwendet, sollte sich über webCmd sowie setList informieren. webCmd sorgt dafür, dass bestimmte Kommandos auf der Weboberfläche auftauchen; allerdings definiert webCmd nicht, was passiert, wenn man auf diese Kommandowörter in der Weboberfläche tippt. Die eigentliche Befehlsausführung kann dann beispielsweise durch eventMap erfolgen.


== Syntax ==
== Syntax ==
Das ''eventMap'' Attribut wird in der folgenden Weise spezifiziert:
Das ''eventMap'' Attribut wird in der folgenden Weise spezifiziert:
:<code><nowiki>attr <device> eventMap /old1:new1/old2:new2/[old_n:new_n/]</nowiki></code>
:<code><nowiki>attr <device> eventMap /old1:new1/old2:new2/[old_n:new_n/]</nowiki></code>
wobei der Wert des Attributs eine Liste von Wertepaaren ist, bei der der alte Wert vom darauffolgenden neuen Werte durch einen Doppelpunkt getrennt wird. Die Wertepaare können im einfachsten Fall durch Leerzeichen voneinander getrennt sein, sofern die spezifizierten Wertepaare jedoch selbst Leerzeichen enthalten können, muss ein anderes Trennzeichen (Delimiter) wie z.B. "/" oder "," benutzt werden.  
Es muss also eine Liste von Wertepaaren angegeben werden. Dabei wird jeder alte Wert vom darauffolgenden neuen Werte durch einen Doppelpunkt getrennt. Zwischen den Wertepaare können im einfachsten Fall nur Leerzeichen stehen. Wenn aber die Wertepaare selbst Leerzeichen enthalten, muss ein anderes Trennzeichen (Delimiter) wie z.B. "/" oder "," benutzt werden.
 
Es können auch mehrere Werte über reguläre Ausdrücke zusammengefasst und durch einen einzelnen neuen Wert ersetzt werden.


Es können auch mehrere "alte" Werte über reguläre Ausdrücke zusammengefasst auf einen einzelnen neuen Wert umgesetzt werden.
Es ist auch möglich, zur Verbesserung der Übersichtlichkeit und Lesbarkeit, das ''eventMap'' Attribut mehrzeilig zu formulieren. Siehe dazu auch  {{Link2Forum|Topic=43023|Message=350289|LinkText=diesen Forenbeitrag}}.


== Einschränkungen ==  
== Einschränkungen ==  
Zeile 18: Zeile 23:
Mit der Definition  
Mit der Definition  
:<code>attr meinDevice eventMap on:An off:Aus</code>
:<code>attr meinDevice eventMap on:An off:Aus</code>
wird '''on''' zu '''An''' und '''off''' zu '''Aus''' "umdefiniert".
wird '''on''' durch '''An''' und '''off''' durch '''Aus''' ersetzt.


Sollen beispielsweise alle "off-for-timer..." Ereignisse auf "hell" und alle "on-for-timer..." auf "dunkel" umgesetzt werden, kann das mit  
Sollen beispielsweise alle "off-for-timer..." Ereignisse durch "hell" und alle "on-for-timer..." durch "dunkel" ersetzt werden, wird das mit  
:<code>attr eventMap off.*:hell on.*:dunkel</code>
:<code>attr eventMap off.*:hell on.*:dunkel</code>
erreicht werden.
erreicht.


=== Dimmstufen zusammenfassen ===
=== Dimmstufen zusammenfassen ===
Zeile 29: Zeile 34:
Eine ''eventMap'' Definition, die das erfüllt:
Eine ''eventMap'' Definition, die das erfüllt:
:<code>on:Hoch off:Runter dim.[789]\d:Hoch dim.*:Runter</code>
:<code>on:Hoch off:Runter dim.[789]\d:Hoch dim.*:Runter</code>
=== Reguläre Ausdrücke in eventMap ===
Eine ''eventMap'' mit komplexeren [[Regulärer Ausdruck|regulären Ausdrücken]] und unsymmetrischem "Device" zu "User" mapping ist in {{Link2Forum|Topic=43023|Message=350289|LinkText=diesem Forenbeitrag}} erläutert.


== Links ==
== Links ==

Aktuelle Version vom 13. Februar 2019, 14:35 Uhr


eventMap ist ein globales Attribut. Es hat mehrere Funktionen, die es gleichzeitig ausführt. Beispielsweise möchte man die Bezeichnung eines Zustandes ändern: Statt des Zustandes on soll es aus oder statt des Zustandes off soll es ausgelöst heißen. Eine solche Änderung kann mit eventMap vorgenommen werden. eventMap ersetzt damit Ausdrücke durch andere Ausdrücke.

Gleichzeitig erlaubt eventMap, dass auch Befehle anders lauten. Das Kommando set <device> off könnte dann auch als set <device> ausschalten lauten. Die früheren Befehle sind jedoch nicht gelöscht und können immer noch ausgeführt werden. Zuletzt können mehrere gleichartige Werte zu einen einzelnen neuen Wert zusammengefasst werden.

Wer eventMap verwendet, sollte sich über webCmd sowie setList informieren. webCmd sorgt dafür, dass bestimmte Kommandos auf der Weboberfläche auftauchen; allerdings definiert webCmd nicht, was passiert, wenn man auf diese Kommandowörter in der Weboberfläche tippt. Die eigentliche Befehlsausführung kann dann beispielsweise durch eventMap erfolgen.

Syntax

Das eventMap Attribut wird in der folgenden Weise spezifiziert:

attr <device> eventMap /old1:new1/old2:new2/[old_n:new_n/]

Es muss also eine Liste von Wertepaaren angegeben werden. Dabei wird jeder alte Wert vom darauffolgenden neuen Werte durch einen Doppelpunkt getrennt. Zwischen den Wertepaare können im einfachsten Fall nur Leerzeichen stehen. Wenn aber die Wertepaare selbst Leerzeichen enthalten, muss ein anderes Trennzeichen (Delimiter) wie z.B. "/" oder "," benutzt werden.

Es können auch mehrere Werte über reguläre Ausdrücke zusammengefasst und durch einen einzelnen neuen Wert ersetzt werden.

Es ist auch möglich, zur Verbesserung der Übersichtlichkeit und Lesbarkeit, das eventMap Attribut mehrzeilig zu formulieren. Siehe dazu auch diesen Forenbeitrag.

Einschränkungen

Werden mit eventMap Werte umdefiniert, müssen zumindest in manchen Situationen (z.B. devStateIcon) die "neuen" Werte verwendet werden.

Beispiele

Mit der Definition

attr meinDevice eventMap on:An off:Aus

wird on durch An und off durch Aus ersetzt.

Sollen beispielsweise alle "off-for-timer..." Ereignisse durch "hell" und alle "on-for-timer..." durch "dunkel" ersetzt werden, wird das mit

attr eventMap off.*:hell on.*:dunkel

erreicht.

Dimmstufen zusammenfassen

Aus diesem Thema stammt die "Aufgabe"

dim 70 bis dim 99 soll als Hoch interpretiert werden, alles andere mit dim als Runter. Weiterhin on als Hoch und off als Runter

Eine eventMap Definition, die das erfüllt:

on:Hoch off:Runter dim.[789]\d:Hoch dim.*:Runter

Reguläre Ausdrücke in eventMap

Eine eventMap mit komplexeren regulären Ausdrücken und unsymmetrischem "Device" zu "User" mapping ist in diesem Forenbeitrag erläutert.

Links