DOIF/Zeitschaltuhr mit Calendar: Unterschied zwischen den Versionen

Aus FHEMWiki
Zur Navigation springen Zur Suche springen
(Seite angelegt.)
 
(Triggern auf Calendar Ereignisse)
Zeile 2: Zeile 2:


Das [[DOIF]] Modul erlaubt es, durch Ereignisse oder zeitgesteuert, wenn bestimmte Bedingungen erfüllt sind, bestimmte Aktionen auszuführen. Eine mögliche Quelle für solche Ereignisse oder Bedingungen ist das [[Calendar]] Modul, das einen Kalender repräsentiert. Die folgenden Beispiele zeigen, wie man innerhalb von DOIF auf Ereignisse, die von Calendar erzeugt werden, reagieren kann, und wie man aus Calendar Bedingungen ableiten kann, in Abhängigkeit derer sich Aktionan auslösen lassen.
Das [[DOIF]] Modul erlaubt es, durch Ereignisse oder zeitgesteuert, wenn bestimmte Bedingungen erfüllt sind, bestimmte Aktionen auszuführen. Eine mögliche Quelle für solche Ereignisse oder Bedingungen ist das [[Calendar]] Modul, das einen Kalender repräsentiert. Die folgenden Beispiele zeigen, wie man innerhalb von DOIF auf Ereignisse, die von Calendar erzeugt werden, reagieren kann, und wie man aus Calendar Bedingungen ableiten kann, in Abhängigkeit derer sich Aktionan auslösen lassen.
Im folgenden soll angenommen werden, dass es ein Gerät von Typ Calendar namens '''calendar''' gibt, auf das reagiert werden soll.


== Schalten mit Calendar Ereignissen ==
== Schalten mit Calendar Ereignissen ==
=== Calendar Ereignisse ===
Wenn ein Eintrag im Kalender seinen Status ändert, werden zwei Ereignisse erzeugt:
changed: <UID> <mode>
<mode>: <UID>
Hier ist '''<UID>''' die UID des Kalendereintrags und '''<mode>''' der neue Status (''upcoming'', ''alarm'', ''start'' oder ''end'').
=== Triggern auf alle Kalendereinträge ===
Soll auf alle Statuswechsel von Kalendereinträgen getriggert werden, so geht dies mit
([calendar:"^changed:"])
Soll dagegen z.B. nur auf startende Kalendereinträge getriggert werden, geht dies mit
([calendar:"^start:"])
Innerhalb des Ausführungsteils lässt sich dann '''$EVENT''' auswerten, wie dies in [[Google-Kalender zur Steuerung von Dummies]] mittels [[Notify]] dargestellt ist.
=== Triggern auf eine bestimmte UID ===
Soll dagegen nur auf einen Eintrag mit einer bestimmten, bekannten UID getriggert werden, geht dies z.B. mit
([calendar:"^end: event123xyz$"])
Ist die UID dagegen nicht bekannt, wenn das DOIF programmiert wird, sondern wird z.B. in einem Reading namens '''uid''' des DOIF abgelegt, lässt sich wie folgt auf das Ende des Kalendereintrags triggern:
(["^calendar$":"^end: (.*)$":$1,""] eq [$SELF:uid])
Hier wird mittels Rückgabewert die UID des Kalendereintrags ermittelt und mit dem gespeicherten Reading verglichen.
=== Triggern auf Einträge mit bestimmten Eigenschaften ===
Soll nicht die UID überprüft werden, sondern der Inhalt eines Kalendereintrags, so lässt sich dafür die Ausgabeformatierung des DOIF Moduls nutzen, um den Inhalt abzufragen. Um z.B. zu triggern, wenn ein Event beginnt, dass in Feld '''summary''' das Wort "Erna" enthält:
(["^calendar$":"^start: (.*) end$":fhem("get calendar events filter:uid==\"$1\" format:custom=\"\$S\""),""] =~ "Erna")
Triggern beim Ende aller Einträge, die als "PUBLIC" klassifiziert sind:
(["^calendar$":"^end: (.*) end$":fhem("get calendar events filter:uid==\"$1\" format:custom=\"\$CL\""),""] eq "PUBLIC")


== Schalten in Abhängigkeit des Calendar Status ==
== Schalten in Abhängigkeit des Calendar Status ==

Version vom 12. September 2020, 13:44 Uhr


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


Das DOIF Modul erlaubt es, durch Ereignisse oder zeitgesteuert, wenn bestimmte Bedingungen erfüllt sind, bestimmte Aktionen auszuführen. Eine mögliche Quelle für solche Ereignisse oder Bedingungen ist das Calendar Modul, das einen Kalender repräsentiert. Die folgenden Beispiele zeigen, wie man innerhalb von DOIF auf Ereignisse, die von Calendar erzeugt werden, reagieren kann, und wie man aus Calendar Bedingungen ableiten kann, in Abhängigkeit derer sich Aktionan auslösen lassen.

Im folgenden soll angenommen werden, dass es ein Gerät von Typ Calendar namens calendar gibt, auf das reagiert werden soll.

Schalten mit Calendar Ereignissen

Calendar Ereignisse

Wenn ein Eintrag im Kalender seinen Status ändert, werden zwei Ereignisse erzeugt:

changed: <UID> <mode>
<mode>: <UID>

Hier ist <UID> die UID des Kalendereintrags und <mode> der neue Status (upcoming, alarm, start oder end).

Triggern auf alle Kalendereinträge

Soll auf alle Statuswechsel von Kalendereinträgen getriggert werden, so geht dies mit

([calendar:"^changed:"])

Soll dagegen z.B. nur auf startende Kalendereinträge getriggert werden, geht dies mit

([calendar:"^start:"])

Innerhalb des Ausführungsteils lässt sich dann $EVENT auswerten, wie dies in Google-Kalender zur Steuerung von Dummies mittels Notify dargestellt ist.

Triggern auf eine bestimmte UID

Soll dagegen nur auf einen Eintrag mit einer bestimmten, bekannten UID getriggert werden, geht dies z.B. mit

([calendar:"^end: event123xyz$"])

Ist die UID dagegen nicht bekannt, wenn das DOIF programmiert wird, sondern wird z.B. in einem Reading namens uid des DOIF abgelegt, lässt sich wie folgt auf das Ende des Kalendereintrags triggern:

(["^calendar$":"^end: (.*)$":$1,""] eq [$SELF:uid])

Hier wird mittels Rückgabewert die UID des Kalendereintrags ermittelt und mit dem gespeicherten Reading verglichen.

Triggern auf Einträge mit bestimmten Eigenschaften

Soll nicht die UID überprüft werden, sondern der Inhalt eines Kalendereintrags, so lässt sich dafür die Ausgabeformatierung des DOIF Moduls nutzen, um den Inhalt abzufragen. Um z.B. zu triggern, wenn ein Event beginnt, dass in Feld summary das Wort "Erna" enthält:

(["^calendar$":"^start: (.*) end$":fhem("get calendar events filter:uid==\"$1\" format:custom=\"\$S\""),""] =~ "Erna")

Triggern beim Ende aller Einträge, die als "PUBLIC" klassifiziert sind:

(["^calendar$":"^end: (.*) end$":fhem("get calendar events filter:uid==\"$1\" format:custom=\"\$CL\""),""] eq "PUBLIC")

Schalten in Abhängigkeit des Calendar Status