EventMap: Unterschied zwischen den Versionen
Krikan (Diskussion | Beiträge) (FHEM(R)) |
Andies (Diskussion | Beiträge) (einleitung) |
||
Zeile 2: | Zeile 2: | ||
<!-- Infobox Attribut sinnvoll? --> | <!-- Infobox Attribut sinnvoll? --> | ||
[[eventMap]] ist ein 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. | |||
== Syntax == | == Syntax == |
Version vom 31. Dezember 2018, 16:55 Uhr
eventMap ist ein 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.
Syntax
Das eventMap Attribut wird in der folgenden Weise spezifiziert:
attr <device> eventMap /old1:new1/old2:new2/[old_n:new_n/]
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, muss ein anderes Trennzeichen (Delimiter) wie z.B. "/" oder "," benutzt werden.
Es können auch mehrere "alte" Werte über reguläre Ausdrücke zusammengefasst auf einen einzelnen neuen Wert umgesetzt werden.
Ab der FHEM-Version vom 27.10.2015 ist es 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 zu An und off zu Aus "umdefiniert".
Sollen beispielsweise alle "off-for-timer..." Ereignisse auf "hell" und alle "on-for-timer..." auf "dunkel" umgesetzt werden, kann das mit
attr eventMap off.*:hell on.*:dunkel
erreicht werden.
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
- Ausführliche Beschreibung (mit Beispielen) zu eventMap, devStateIcon, setList und webCmd in diesem Forenthread