Modul YAAHM

Aus FHEMWiki
Version vom 10. August 2017, 11:36 Uhr von Pahenning (Diskussion | Beiträge) (Die Seite wurde neu angelegt: „{{ Infobox Modul |ModPurpose=Das Modul stellt eine komfortable Oberfläche bereit, um per Webinterface die zyklische Ausführung von Kommandos - mit Tages- und…“)
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)
YAAHM
Zweck / Funktion
Das Modul stellt eine komfortable Oberfläche bereit, um per Webinterface die zyklische Ausführung von Kommandos - mit Tages- und Wochenprofil - zu konfigurieren
Allgemein
Typ Hilfsmodul
Details
Dokumentation EN / DE
Support (Forum) Unterstuetzende Dienste
Modulname 95_YAAHM.pm
Ersteller Prof. Dr. Peter A. Henning
Wichtig: sofern vorhanden, gilt im Zweifel immer die (englische) Beschreibung in der commandref!

Diese Seite beschreibt die Konfiguration und Verwendung des Moduls 95_YAAHM.pm.

Allgemeines

Das Modul 95_YAAHM.pm stellt eine komfortable Oberfläche bereit, um per Webinterface die zyklische Ausführung von Kommandos - mit Tages- und Wochenprofil - zu konfigurieren. Der Titel YAAHM ist das Akronym für Yet Another Auto Home Module, denn es gibt ja schon verschiedene Module, die den Zeitablauf in einem SmartHome vereinfachen sollen. Warum also noch Eines ?

Ganz einfach: Die Philosophie von YAAHM ist die einfache Bedienbarkeit im Frontend, mit Eingabefeldern und Visualisierungselementen - statt dabei auf Attribute zu setzen.

Definition

Das YAAHM_Device - hier mit dem Namen YYY versehen - selbst wird über

define YYY YAAHM

definiert. Diese Definition legt einen versteckten Raum "ProfileRoom" an, welcher über einen Weblink im oberen Menü des Webinterfaces erreichbar ist.

  • Der Name dieses Raumes kann durch das Attribut hiddenRoom geändert werden.
  • Dieses Modul verwendet das globale Attribut language zur Bestimmung der Anzeigedaten (Standard: EN=english). Für deutsche Ausgabedaten muss in FHEM das Attribut
attr global language DE

gesetzt werden.

Konfiguration

Beim Anklicken des Begriffes Profile im oberen Menü des Webinterfaces wird dieser versteckte Raum angezeigt. Er enthält

Settings

Im oberen Bereich sind drei Eingabefelder zu sehen:

  • Wait Action ist ein FHEM-Befehl, der beim Scharfschalten des Alarms ausgeführt wird. Im Beispielbild wird damit ein MP3-Funkgong ausgelöst, durch den eine Stimme sagt Alarmanlage wird in Kürze scharf geschaltet.
  • Arm Delay ist eine Verzögerungszeit, die zwischen dem Scharfschalten des Alarms und der tatsächlichen Wirksamkeit vergeht. Diese Zeit kann beispielsweise genutzt werden, um das Haus ohne Auslösung des Alarms zu verlassen.
  • Arm Action ist ein FHEM-Befehl, der beim Scharfschalten ausgeführt wird. Im Beispielbild wird damit ein MP3-Funkgong ausgelöst, durch den eine Stimme sagt Alarmanlage scharf geschaltet.
  • Disarm Action ist ein FHEM-Befehl, der beim Unscharfschalten ausgeführt wird. Im Beispielbild wird damit ein MP3-Funkgong ausgelöst, durch den eine Stimme sagt Alarmanlage unscharf geschaltet.
  • Cancel Action ist ein FHEM-Befehl, der beim Widerrufen eines Alarms ausgeführt wird. Im Beispielbild wird damit ein MP3-Funkgong ausgelöst, durch den eine Stimme sagt Alarm widerrufen.

Alarm settings.png

8 Alarmlevel sind für das Modul normalerweise möglich (kann durch Setzen eines einzelnen Parameters im Modulcode verändert werden). In der Tabelle 'Settings' können für jeden Level die Startzeit ts und Endzeit te des Alarmlevels gesetzt werden. Formate für die Zeitangabe können sein:

  • hh:mm - direkte Eingabe einer festen Zeit.
  • {funktion} - eine beliebige Perl-Funktion in geschweiften Klammern, die einen gültigen Zeitwert hh:mm zurückliefert. Die Gültigkeit wird erst zur Laufzeit überprüft. Beispielsweise "30 Minuten vor Sonnenuntergang" als {sunset_abs(-1800)}.

Diese Aktivierungszeiten wirken sich wie folgt auf den Alarmlevel aus:

  • Wenn ts < te, ist dieser Alarmlevel aktiv, falls ts < Zeit < te.
  • Wenn ts >= te, ist dieser Alarmlevel aktiv, falls ts < Zeit <= 23:59 sowie wenn 0:00 < Zeit <= te.

Ferner kann für jeden Alarmlevel gesetzt oder bedient werden

  • Eine Nachricht zur Erläuterung des Alarms (Teil 2)
  • Eine Checkbox Armed = scharf
  • Ein Button Cancel zum Canceln = Aufheben des Alarms

Sensors

Danach wird die Tabelle der Sensoren angezeigt. Für jeden Sensor kann gesetzt werden:

  • Alarmlevel, die hierdurch ausgelöst werden
  • Ein regulärer Ausdruck, bei dessen Erkennung die Auslösung erfolgt
  • Eine Nachricht zur Erläuterung des Alarms (Teil 1)
  • Ein Selektor, um festzulegen, ob dieser Sensor den Alarm
    • auslöst (=Raise),
    • widerruft (=Cancel),
    • scharf schaltet (=Arm) oder
    • unscharf schaltet (=Disarm).

Achtung: Es ist zwingend notwendig, dass für einen auszulösenden Alarmlevel auch ein Sensor für den Widerruf (=Cancel) des Alarms definiert wird, ansonsten ignoriert das Modul die Definition dieses Levels.

Die insgesamt in den STATE der Alarmanlage geschriebene Nachricht besteht dann aus

(Anzeige der Zustände) (Nachricht Teil 1)' '(Nachricht Teil 2).

Bitte weiter unten nachlesen, was mit der Anzeige der Zustände gemeint ist. In diesen Nachrichten werden die folgenden Ersetzungen vorgenommen

  • $NAME vird durch den Namen des auslösenden Devices ersetzt
  • $EVENT wird durch den kompletten Event ersetzt
  • $EVTPART1... wird durch den 1. Teilstring des Events gefüllt, etc.

Alarm sensors.png

Actors

Anschließend wird die Tabelle der Aktoren angezeigt. Für jeden Aktor kann gesetzt werden:

  • Alarmlevel, die diesen Aktor starten
  • Ein FHEM-Kommando zum Starten des Aktors
  • Ein FHEM-Kommando zum Stoppen des Aktors
  • Eine Zeitverzögerung - entweder als Angabe von Sekunden (<60) oder im Format mm:ss

In den Strings für diese Aktionen werden folgende Ersetzungen vorgenommen:

  • $NAME vird durch den Namen des auslösenden Devices ersetzt
  • $EVENT wird durch den kompletten Event ersetzt
  • $EVTPART1... wird durch den 1. Teilstring des Events gefüllt, etc.
  • $SHORT wird durch die vollständige Kurznachricht der Alarmauslösung ersetzt

Alarm actors.png

Aktivierung

Durch Anklicken des Buttons Set Alarms werden die alarmSettings-Attribute befüllt. Achtung, Folgendes beachten

  • Es ist zwingend notwendig, dass für einen auszulösenden Alarmlevel auch ein Sensor für den Widerruf (=Cancel) des Alarms definiert wird, ansonsten ignoriert das Modul die Definition dieses Levels.
  • Der Button Set Alarms wird nur funktionieren, wenn keine Sperrung vorliegt, siehe unten.
  • Es empfiehlt sich, danach ein Save Config auszuführen, damit die Attribute und Notifier permanent sind.

Anzeige der Zustände

Auf Wunsch können die Zustände der Alarmanlage zusammen mit der konkreten Meldung im internal STATE (bzw. reading state, beide sind in diesem Modul identisch) angezeigt werden. Hierfür gibt es ein Attribut statedisplay mit den folgenden möglichen Werten, die nachfolgend am Beispiel für den Zustand "Alarm Level 1 ausgelöst" erläutert sind:

  • none - keine Anzeige
  • simple - OXOOOOOO
  • color - 0 1 2 3 4 5 6 7
  • table - 

Das Problem ist, dass möglicherweise das internal STATE an anderer Stelle verwendet werden soll - z.B. beim Versenden von Mails als Value('AAA') Es macht natürlich keinen Sinn, eine HTML-Tabelle in eine Mail zu packen. Deshalb sollte für die Weiterverarbeitung statt des obigen Code die Abkürzung $SHORT in den Feldern des Alarm-Moduls verwendet werden. Sie wird vor der Ausführung ersetzt durch $defs{'AAA'}{READINGS}{"short"}{VAL} Dies enthält nur die Meldung, nicht aber die Anzeige aller Zustände.

Alternativ kann man auch die Zustandsanzeige durch Wahl des Attributwertes none komplett abstellen.

Sperrung

Das Reading lockstate muss den Wert unlocked haben, damit durch Anklicken des Buttons Set Alarms die alarmSettings-Attribute befüllt werden können. Das ist in der Regel beim ersten Laden des Moduls nicht der Fall, hierzu muss also das Reading von Hand auf den richtigen Wert gesetzt werden. Dazu muss der Befehl set ... unlocked ausgeführt werden.