Modul YAAHM: Unterschied zwischen den Versionen

Aus FHEMWiki
Keine Bearbeitungszusammenfassung
Keine Bearbeitungszusammenfassung
Zeile 29: Zeile 29:
===Aktion===
===Aktion===


[[Datei:action_2.png]]
[[Datei:action_2.png|800px|]]


8 Alarmlevel sind für das Modul normalerweise möglich (kann durch Setzen eines einzelnen Parameters im Modulcode verändert werden).
===Zusammenfassung===
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===
[[Datei:summary_2.png|800px|]]
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
===Tages-Profil===
(Anzeige der Zustände) (Nachricht Teil 1)' '(Nachricht Teil 2).
Bitte weiter unten nachlesen, was mit der [[#Anzeige der Zustände|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.


[[Datei:alarm_sensors.png]]
[[Datei:daily_2.png|800 px]]


===Actors===
==Wochen-Profile==
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


[[Datei:alarm_actors.png]]
[[Datei:weekly_2.png|800 px]]
 
==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|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'' - <span style="color:green"> 0 <span style="width:1ex;color:red">1</span> 2 3 4 5 6 7</span>
* ''table''&nbsp;-&nbsp;<table><tr style="height:1ex"><td style="width:1ex;background-color:green"/><td style="width:1ex;background-color:red"/><td style="width:1ex;background-color:green"/><td style="width:1ex;background-color:green"/><td style="width:1ex;background-color:green"/><td style="width:1ex;background-color:green"/><td style="width:1ex;background-color:green"/><td style="width:1ex;background-color:green"/></tr></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===
===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.
Das Reading ''lockstate'' muss den Wert ''unlocked'' haben, damit durch Anklicken der Start-Buttons für die Timer diese auch gestartet werden. 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.

Version vom 10. August 2017, 10:47 Uhr

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 Unmengen von Attributen 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. Für dieses Wiki werden die deutschen Ausgabedaten verwendet.

Konfiguration

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

Aktion

Action 2.png

Zusammenfassung

Summary 2.png

Tages-Profil

Daily 2.png

Wochen-Profile

Weekly 2.png

Sperrung

Das Reading lockstate muss den Wert unlocked haben, damit durch Anklicken der Start-Buttons für die Timer diese auch gestartet werden. 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.