Automatisierung: Unterschied zwischen den Versionen
Trelle (Diskussion | Beiträge) (→Befehl: Beispiel eingefügt) |
Trelle (Diskussion | Beiträge) K (→Wirkungskette) |
||
Zeile 45: | Zeile 45: | ||
Der [[Eventhandler]] ''Tisch_besetzt'' reagiert auf diese [[Event|Events]], ermittelt zur Frühstückszeit die Eventrate und erzeugt ein [[Event]] , wenn der Esstisch besetzt ist. | Der [[Eventhandler]] ''Tisch_besetzt'' reagiert auf diese [[Event|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''' | 2018-08-07 08:52:17 DOIF '''Tisch_besetzt cmd_1''' | ||
Der Eventhandler ''Ansage_steuern'' reagiert auf dieses [[Event]] und setzt einen [[Befehl]] an das [[Gerät]] ''Ansagen'' ab. | 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)} | 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. | 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. |
Version vom 15. August 2018, 19:03 Uhr
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.