Event: Unterschied zwischen den Versionen

Aus FHEMWiki
KKeine Bearbeitungszusammenfassung
Zeile 1: Zeile 1:
== Definition ==
== Definition ==
Ein Event (Ereignis) ist eine ungerichtete Nachricht, die vom FHEM-Server gesendet wird.<br>
Ein Event (Ereignis) ist eine ungerichtete Nachricht, die vom FHEM-Server gesendet wird.<br>
Das Event enthält Informationen über den Zustand eines Gerätes (Device).<br>
Das Event enthält Informationen über den Zustand eines [[Gerät|Gerätes] ([[Device]]).<br>
Der Anstoss zum Senden eines Events geht vom Gerät aus.<br>
Der Anstoss zum Senden eines Events geht vom [[Gerät]] aus.<br>
Ein Event beinhaltet den Zeitpunkt der Entstehung seines Inhalts.<br>
Ein [[Event]] beinhaltet den Zeitpunkt der Entstehung seines Inhalts.<br>


=== Sprachgebrauch ===
=== Sprachgebrauch ===
Zeile 34: Zeile 34:


== Verwendung ==
== Verwendung ==
Events stehen allen Geräten des FHEM-Servers zur Weiterverarbeitung zur Verfügung.
Events stehen allen [[Gerät|Geräten]] des FHEM-Servers zur Weiterverarbeitung zur Verfügung.
Einige Gerätetypen erfordern die Angabe von Ereignisfiltern in Form eines [[Regulärer_Ausdruck|regulären Ausdrucks]]. Im Gerät werden dann nur die gefilterten Events in die Weiterverarbeitung einbezogen, das sind z.B.
Einige Gerätetypen erfordern die Angabe von Ereignisfiltern in Form eines [[Regulärer_Ausdruck|regulären Ausdrucks]]. Im [[Gerät]] werden dann nur die gefilterten Events in die Weiterverarbeitung einbezogen, das sind z.B.


* [[DbLog]]
* [[DbLog]]
Zeile 49: Zeile 49:
==Besonderheiten==
==Besonderheiten==
===Events des Reading '''state'''===
===Events des Reading '''state'''===
Wenn ein Gerät ein Event für das [[Readings|Reading]] '''state''' generiert, dann wird der Readingname weggelassen.
Wenn ein [[Gerät]] ein Event für das [[Readings|Reading]] '''state''' generiert, dann wird der Readingname weggelassen.
====Beispiel====
====Beispiel====
<pre>2016-12-13 11:48:26 PRESENCE LaptopAn present</pre>
<pre>2016-12-13 11:48:26 PRESENCE LaptopAn present</pre>
Zeile 63: Zeile 63:
Manchmal ist es sinnvoll bei der [[Event#Verwendung|Verwendung]] von Events einen [[regulärer Ausdruck|regulären Ausdruck]] mit '''state''' zu formulieren.  
Manchmal ist es sinnvoll bei der [[Event#Verwendung|Verwendung]] von Events einen [[regulärer Ausdruck|regulären Ausdruck]] mit '''state''' zu formulieren.  


Die Ergänzung eines Events mit dem Reading '''state''' erfolgt in dem Gerät, das als Empfänger des Events dient, dort ist das Attribut <code>addStateEvent</code> zu setzen.
Die Ergänzung eines Events mit dem Reading '''state''' erfolgt in dem [[Gerät]], das als Empfänger des Events dient, dort ist das Attribut <code>addStateEvent</code> zu setzen.


D.h. bei gesetztem Attribut addStateEvent enthalten auch diese Events den Readingnamen und lassen sich z.b. in der Regex eines [[notify]], [[watchdog]] oder [[DOIF]] wie die Events anderer Readings behandeln.
D.h. bei gesetztem Attribut addStateEvent enthalten auch diese Events den Readingnamen und lassen sich z.b. in der Regex eines [[notify]], [[watchdog]] oder [[DOIF]] wie die Events anderer Readings behandeln.

Version vom 7. März 2017, 21:28 Uhr

Definition

Ein Event (Ereignis) ist eine ungerichtete Nachricht, die vom FHEM-Server gesendet wird.
Das Event enthält Informationen über den Zustand eines [[Gerät|Gerätes] (Device).
Der Anstoss zum Senden eines Events geht vom Gerät aus.
Ein Event beinhaltet den Zeitpunkt der Entstehung seines Inhalts.

Sprachgebrauch

Unter Event oder Ereignis wird oft nur der Teil <Gerätename> ⟨<Readingname>: ⟩<Wert> verstanden.

Aufbau

Aufbau eines Events:

<Datum> <Uhrzeit> <TYPE> <Gerätename> ⟨<Readingname>: ⟩<Wert>

Beispiele

Beispiel eines globalen Events, bei dem der Readingname fehlt:

2016-12-13 11:40:33 Global global MODIFIED Test
  • Datum: 2016-12-13
  • Uhrzeit: 11:40:33
  • TYPE: Global
  • Gerätename: global
  • Readingname: N/A
  • Wert: MODIFIED Test

Beispiel eines Geräte-Events mit Readingname:

2016-12-13 11:48:26 PRESENCE LaptopAn presence: present
  • Datum: 2016-12-13
  • Uhrzeit: 11:48:26
  • TYPE: PRESENCE
  • Gerätename: LaptopAn
  • Readingname: presence
  • Wert: present

Verwendung

Events stehen allen Geräten des FHEM-Servers zur Weiterverarbeitung zur Verfügung. Einige Gerätetypen erfordern die Angabe von Ereignisfiltern in Form eines regulären Ausdrucks. Im Gerät werden dann nur die gefilterten Events in die Weiterverarbeitung einbezogen, das sind z.B.

Zur Erstellung eines Ereignisfilter ist die genaue Kenntnis über den Inhalt eines Events erforderlich. Die aktuellen Ereignisse können im Eventmonitor angezeigt werden. Der Befehl trigger simuliert den Anstoss eines Gerätes an den FHEM-Server ein Event zu senden.

Besonderheiten

Events des Reading state

Wenn ein Gerät ein Event für das Reading state generiert, dann wird der Readingname weggelassen.

Beispiel

2016-12-13 11:48:26 PRESENCE LaptopAn present
  • Datum: 2016-12-13
  • Uhrzeit: 11:48:26
  • TYPE: PRESENCE
  • Gerätename: LaptopAn
  • Readingname: N/A
  • Wert: present

Ergänzen des Reading state im Event

Manchmal ist es sinnvoll bei der Verwendung von Events einen regulären Ausdruck mit state zu formulieren.

Die Ergänzung eines Events mit dem Reading state erfolgt in dem Gerät, das als Empfänger des Events dient, dort ist das Attribut addStateEvent zu setzen.

D.h. bei gesetztem Attribut addStateEvent enthalten auch diese Events den Readingnamen und lassen sich z.b. in der Regex eines notify, watchdog oder DOIF wie die Events anderer Readings behandeln.

Beschränken von Events

Events erzeugen eine Systemlast. Um diese zu reduzieren, kann die Erzeugung von Events eingeschränkt werden. Die Begrenzung erfolgt in den Geräten, die als Quelle der Events dienen. In diesen Geräten können folgende Attribute gesetzt werden:

allgemein:

DbLog:

Das Modul DOIFtools bietet die Möglichkeit eine Event-Statistik zu erstellen, als Grundlage zur Optimierung des Event-Aufkommens.

Erweiterung des angezeigten Zeitstempels um Milisekunden

Die Anzeige des Zeitstempels kann auf Millisekunden erweitert werden, wenn das globale Attribut mseclog auf 1 gesetzt wird.

Beispiel

2016-12-13 11:48:26.836 PRESENCE LaptopAn present
  • Datum: 2016-12-13
  • Uhrzeit: 11:48:26.836
  • TYPE: PRESENCE
  • Gerätename: LaptopAn
  • Readingname: N/A
  • Wert: present

Links