Automatisierung

Aus FHEMWiki
Zur Navigation springen Zur Suche springen


Clock - Under Construction.svg An dieser Seite wird momentan noch gearbeitet.


Begriff

Mit Bezug auf FHEM, ist Automatisierung die Verknüpfung von Geräten, mit der sie befähigt werden ohne menschlichen Eingriff Handlungen auszuführen.[1]

Wirkungsweise

Die Automatisierung erfolgt entlang zweier Wirkungsketten, der Ereignissteuerung und der Zeitsteuerung

Ereignissteuerung

 externes Objekt -> Gerät -> Zustandsaktualisierung -> Event -> Eventhandler -> Verarbeitung -> Befehl -> Gerät -> externes Objekt

Zeitsteuerung

                                                                 Timehandler -> Verarbeitung -> Befehl -> Gerät -> externes Objekt

externes Objekt

Ein externes Objekt existiert außerhalb des FHEM-Servers, z.B. Türkontakte, I2C-Sensoren, Heizungsventile, eine Spracherzeugung, eine Webseite, usw.

Gerät

Ein Gerät kann ein externes Objekt abbilden oder als Hilfsgerät für sich selbst stehen, z.B. ein Dummy oder ein Eventhandler. In Readings werden die Zustände des externen Objektes dargestellt, z.B. der Zustand einer Funksteckdose im Reading state, der Batteriezustand im Reading batteryLevel. Ein Reading ist mit einem Zeitstempel versehen, der den Zeitpunkt der letzten Aktualisierung enthält.

Zustandsaktualisierung

Empfängt ein Gerät Zustandsdaten von einem externen Objekt oder erhält es einen Befehl, kann das zu einer Zustandsaktualisierung im Gerät führen. Diese Aktualisierungen können Events auslösen. Befehle können eine Interaktion des Gerätes mit dem externen Objekt auslösen, wie Zustände setzen oder Daten abholen und dadurch eine Zustandsaktualisierung bewirken.

Event

Ein Event ist eine Nachricht, die von einem Gerät ausgelöst wird. Die Nachricht beinhaltet Informationen über den Zustand des Gerätes. Events werden von Eventhandlern verarbeitet.

Eventhandler

Ein Eventhandler filtert bestimmte Ereignisse und verarbeitet sie.

Timehandler

Ein Timehandler löst über Zeitangaben eine Verarbeitung aus.

Verarbeitung

Die Verarbeitung stellt die Automatisierungslogik dar. Sie kann die Verknüpfung verschiedener Geräte über Gerätevariablen beinhalten, so wie deren Verknüpfung mit Zeitangaben. Im Ergebnis werden Befehle abgesetzt.

Befehl

Befehle können unmittelbar auf Geräte wirken und dann mittelbar auf externe Objekte. Es sind drei Befehlstypen zu unterscheiden, FHEM-Befehle, Befehle auf Betriebssystemebene und Perl-Ausdrücke.

Beispiel einer Automatisierungsaufgabe

Aufgabenstellung

Wenn zur Frühstückszeit der Esstisch besetzt ist, dann soll ein selbst erstellter Wetterbericht angesagt und danach die "Tagesschau in 100s"[2] abgespielt werden.

Wirkungskette

Das externe Objekt, der Bewegungsmelder unter dem Esstisch, liefert bei Bewegung über das Gerät PIR_Tisch regelmäßig Events, z.B.

 2018-08-07 08:46:33 IT PIR_Tisch on
 2018-08-07 08:46:37 IT PIR_Tisch off

Der Eventhandler Tisch_besetzt reagiert auf diese Events, ermittelt zur Frühstückszeit die Eventrate und erzeugt ein Event , wenn der Esstisch besetzt ist.

 2018-08-07 08:52:17 DOIF Tisch_besetzt cmd_1

Der Eventhandler Ansage_steuern reagiert während einer Zeitspanne auf dieses Event und setzt einmalig einen Befehl an das Gerät Ansagen ab.

 set Ansagen tts {(erzeuge Wettertext)}

Der Befehl ruft im Argument über set magic ein Perl-Script erzeugeWettertext auf, das den Wettertext erstellt und zurück gibt. Der Befehl richtet sich an den Gerätetyp Text2Speech. Daher wird der Text an einen Sprachgenerator, ein externes Objekt gesendet, der den gesprochenen Text als MP3-Datei zur Verfügung stellt. Diese Datei wird dann auf der Betriebssystemebene über das externe Objekt Mplayer durch die angeschlossenen Lautsprecher wiedergegeben. Nachdem die Datei abgespielt wurde, wird ein Event erzeugt. Nach diesem Muster könnten weitere Ansagen folgen, z.B. die Ansage der aktuellen Termine und Aufgaben.

 2018-08-07 08:54:05 Text2Speech Ansagen playing: 0

Der Eventhandler Ansage_steuern reagiert auch auf dieses Event und setzt einen Befehl an das Gerät rss_tagesschau100 ab.

 get rss_tagesschau100 ts100

Der Befehl richtet sich an den Gerätetyp HTTPMOD. Das Gerät extrahiert aus einer Webseite, einem externen Objekt die URL der Datei mit der letzten "Tagesschau in 100 s". Wenn die URL bereit steht, wird ein Event erzeugt.

 2018-08-07 08:54:16 HTTPMOD rss_tagesschau100 Link: http://media.tagesschau.de/video/100s/2018/0807/TV-100s-0836.webm.h264.mp4

Der Eventhandler playTagesschau100s reagiert auf dieses Event und lässt mit dem Aufruf eines Shellscriptes (externes Objekt) die Datei über die angeschlossenen Lautsprecher abspielen.

Links