Event: Unterschied zwischen den Versionen

Aus FHEMWiki
K (Haupt-Kategorie FHEM entfernt; ist bereits über Kategoriebaum abgedeckt.)
 
(39 dazwischenliegende Versionen von 4 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
== Definition ==
== Definition ==
Ein Event (Ereignis) ist eine Nachricht die vom FHEM-Server bereitgestellt wird.<br>
Ein [[Event]] ([[Ereignis]]) ist eine ungerichtete Nachricht, die vom FHEM-Server gesendet wird.
Das Event enthält Informationen über den Zustand eines Gerätes (Device).<br>
 
Das Auslösen eines Events wird vom Gerät bestimmt.<br>
Das Event enthält Informationen über den Zustand eines [[Gerät|Gerätes]] ([[Device]]).
Ein Event beinhaltet den Zeitpunkt der Entstehung seines Inhalts.<br>
 
Der Anstoss zum Senden eines Events geht von einem Gerät aus.
 
Ein Event beinhaltet den Zeitpunkt der Entstehung seines Inhalts.
 
=== Sprachgebrauch ===
Unter Event oder Ereignis wird oft nur der Teil <code><Gerätename> &lang;<Readingname>: &rang;<Wert></code> oder <code>&lang;<Readingname>: &rang;<Wert></code> verstanden.


== Aufbau ==
== Aufbau ==
Events sind wie folgt aufgebaut:
Aufbau eines Events:
<pre><Datum> <Uhrzeit> <TYPE> <Gerätename> &lang;<Readingname>: &rang;<Wert></pre>
:<code><Datum> <Uhrzeit> <TYPE> <Gerätename> &lang;<Readingname>: &rang;<Wert></code>


===Beispiele===
===Beispiele===
Beispiel eines globalen Events, bei dem der Readingname fehlt:
Beispiel eines globalen Events, bei dem der Readingname fehlt:
<pre>2016-12-13 11:40:33.240 Global global MODIFIED Test</pre>
:<code>2016-12-13 11:40:33 Global global MODIFIED Test</code>


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


Beispiel eines Geräte-Events mit Readingname:
Beispiel eines Geräte-Events mit Readingname:
<pre>2016-12-13 11:48:26.836 PRESENCE LaptopAn presence: present</pre>
:<code>2016-12-13 11:48:26 PRESENCE LaptopAn presence: present</code>


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


== Verwendung ==
== Verwendung ==
Events stehen allen Geräten des FHEM-Servers zur Weiterverarbeitung zur Verfügung.
Events stehen allen Geräten des FHEM-Servers zur Weiterverarbeitung zur Verfügung. Sie sind ein wesentlicher Teil der [[Automatisierung]].
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, [[Eventhandler]], 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 37: Zeile 44:
* [[FileLog]]
* [[FileLog]]
* [[notify]]
* [[notify]]
* sequence
* [[watchdog]]
Zur Erstellung eines Ereignisfilters ist die genaue Kenntnis über den Inhalt eines Events erforderlich.
Die aktuellen Ereignisse können im '''[[Event_monitor|Eventmonitor]]''' oder mit '''inform'''<ref>https://fhem.de/commandref_DE.html#inform</ref> über einen [[Telnet]]-Client angezeigt werden.
Der Befehl '''[[Trigger|trigger]]'''<ref>https://fhem.de/commandref_DE.html#trigger</ref> 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 [[Readings|Reading]] '''state''' generiert, dann wird der Readingname weggelassen.


Zur Erstellung eines Ereignisfilter ist die genaue Kenntnis über den Inhalt eines Events erforderlich.
====Beispiel====
Die aktuellen Ereignisse können im [[Event_monitor|Eventmonitor]] angezeigt werden.
<pre>2016-12-13 11:48:26 PRESENCE LaptopAn present</pre>
 
* 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 [[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, d.h., bei gesetztem Attribut addStateEvent enthalten auch diese Events den Readingnamen und lassen sich in Eventhandlern wie 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:
* [[event-on-change-reading]]
* [[event-on-update-reading]]
* [[event-min-interval]]
* [[event-aggregator]]
DbLog:
* cacheEvents
* syncEvents
 
Das Modul [[DOIFtools]] bietet die Möglichkeit eine Eventstatistik zu erstellen, als Grundlage zur Optimierung des Eventaufkommens.
 
===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====
<pre>2016-12-13 11:48:26.836 PRESENCE LaptopAn present</pre>
 
* Datum: 2016-12-13
* Uhrzeit: 11:48:26'''.836'''
* TYPE: PRESENCE
* Gerätename: LaptopAn
* Readingname: N/A
* Wert: present
 
=== Einzelevents ===
Geräte können für jede Aktualisierung jedes [[Readings]] ein Event auslösen. In diesem Fall handelt es sich um Einzel-Events.
 
Sie können an den unterschiedlichen Zeiten im Zeitstempel erkannt werden.
==== Beispiel ====
2017-03-19 14:07:50.187 dummy du3 reading1: abc
2017-03-19 14:07:50.210 dummy du3 reading2: def
 
=== Sammel-Events ===
Geräte können zusammenhängende Aktualisierungen von [[Readings]] sammeln und diese als Sammelevent auslösen.
 
Sammelevents enthalten die gleiche Zeitangabe im Zeitstempel.
 
==== Beispiel ====
2017-03-19 14:22:31.559 I2C_BMP180 BMP180 T: 20.8 P: 998 P-NN: 999
2017-03-19 14:22:31.559 I2C_BMP180 BMP180 temperature: 20.8
2017-03-19 14:22:31.559 I2C_BMP180 BMP180 pressure: 998
2017-03-19 14:22:31.559 I2C_BMP180 BMP180 pressure-nn: 999


==Links==
==Links==
* [[Automatisierung]]
* [[DevelopmentModuleIntro#Events]]
* [[Event_monitor|Eventmonitor]]
* [[Event_monitor|Eventmonitor]]
* [https://wiki.selfhtml.org/wiki/Perl/Regul%C3%A4re_Ausdr%C3%BCcke Reguläre Ausdrücke]
* [https://wiki.selfhtml.org/wiki/Perl/Regul%C3%A4re_Ausdr%C3%BCcke Reguläre Ausdrücke]


<references />
[[Kategorie:FHEM-Verwendung]]
[[Kategorie:Glossary]]
[[Kategorie:Glossary]]

Aktuelle Version vom 4. Dezember 2019, 12:29 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ätes (Device).

Der Anstoss zum Senden eines Events geht von einem 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> oder ⟨<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. Sie sind ein wesentlicher Teil der Automatisierung. Einige Gerätetypen, Eventhandler, 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 Ereignisfilters ist die genaue Kenntnis über den Inhalt eines Events erforderlich. Die aktuellen Ereignisse können im Eventmonitor oder mit inform[1] über einen Telnet-Client angezeigt werden. Der Befehl trigger[2] 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 in Eventhandlern wie 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:

  • cacheEvents
  • syncEvents

Das Modul DOIFtools bietet die Möglichkeit eine Eventstatistik zu erstellen, als Grundlage zur Optimierung des Eventaufkommens.

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

Einzelevents

Geräte können für jede Aktualisierung jedes Readings ein Event auslösen. In diesem Fall handelt es sich um Einzel-Events.

Sie können an den unterschiedlichen Zeiten im Zeitstempel erkannt werden.

Beispiel

2017-03-19 14:07:50.187 dummy du3 reading1: abc
2017-03-19 14:07:50.210 dummy du3 reading2: def

Sammel-Events

Geräte können zusammenhängende Aktualisierungen von Readings sammeln und diese als Sammelevent auslösen.

Sammelevents enthalten die gleiche Zeitangabe im Zeitstempel.

Beispiel

2017-03-19 14:22:31.559 I2C_BMP180 BMP180 T: 20.8 P: 998 P-NN: 999
2017-03-19 14:22:31.559 I2C_BMP180 BMP180 temperature: 20.8
2017-03-19 14:22:31.559 I2C_BMP180 BMP180 pressure: 998
2017-03-19 14:22:31.559 I2C_BMP180 BMP180 pressure-nn: 999

Links