AttrTemplate
An dieser Seite wird momentan noch gearbeitet. |
AttrTemplate | |
---|---|
Zweck / Funktion | |
Hilfsmodul bzw. Befehl, das/der die Einrichtung von Geräten erleichtern kann | |
Allgemein | |
Typ | Hilfsmodul |
Details | |
Dokumentation | EN / DE |
Support (Forum) | Automatisierung |
Modulname | AttrTemplate.pm |
Ersteller | rudolfkoenig (Forum / Wiki) |
Wichtig: sofern vorhanden, gilt im Zweifel immer die (englische) Beschreibung in der commandref! |
AttrTemplate ist ein Hilfsmodul, mit dessen Hilfe Geräte auf einfache Weise mit einer passenden Konfiguration versehen lassen.
Das Modul AttrTemplate ist indirekt Bestandteil der SetExtensions, das Modul kann von Modulautoren aber auch ohne diese mit in beliebige (Geräte-) Module mit eingebaut werden. Uber diesen Mechanismus ist der Befehl attrTemplate in einer Vielzahl von Modulen verfügbar.
Einführung
Ziel von attrTemplate ist es, den Nutzer bei der Konfiguration von Geräten zu unterstützen, indem vorrangig entsprechende Attribute gesetzt werden. Grundsätzlich ist es jedoch auch möglich, beliebige FHEM-Befehle oder Perl-Code im Rahmen von attrTemplate auszulösen. Teilt man entsprechende templates, sollte jedoch deutlich darauf hingewiesen werden, wenn ein template etwas anderes tut als nur Attribute zu setzen, also insbesondere dauerhafte Konfigurationsänderungen in der Hardware selbst vorzunehmen.
Um Ihnen die Auswahl zu erleichtern, kann mit set <Device-Name> attrTemplate ?
eine Liste der vorhandenen Templates samt kurzer Beschreibung aufgerufen werden.
Hat man ein passendes template gefunden, wird mit set <Device-Name> attrTemplate <template_name>
angewendet, wodurch die entsprechenden, in dem template hinterlegten Kommandos ausgeführt werden.
Syntax
Hier hat Rudolf König die Syntax erleutert, die in den attrTemplate-Dateien verwendet werden kann:
- leere Zeilen werden ignoriert
- Zeilen die mit # anfangen sind Kommentare (s.u. desc:)
- speziell werden Zeilen interpretiert die mit einem der folgenden Woerter beginnen: name: filter: prereq: par: desc: farewell: order:
- alle anderen Zeilen werden als auszufuehrende Befehle interpretiert, wenn man "set <Device-Name> attrTemplate TemplateName" ausfuehrt.
- name: Name des Templates, markiert gleichzeitig das Ende des vorherigen Templates
- filter: devspec2array Ausdruck, der beschreibt, fuer welche Geraete dieses Template anwendbar ist. Wird erst beim "set ?" ausgefuehrt.
- prereq: ist entweder ein Perl-Ausdruck {}, oder ein devspec2array, was genau ein Geraet spezifiziert. Wird beim Einlesen des template Files ausgefuehrt. Falls nicht wahr ist, wird das Template entfernt. Ist fuer sowas wie "setze zusaetzlich Attribut XY falls die Installation HomeAssistant kennt" gedacht.
- par: kann mehrfach vorkommen, Syntax: par:<ParamaterName>:<Kommentar>:<Perl-Code>. Perl-Code versucht den Wert zu finden, falls nicht moeglich (return undef), wird ein Dialog mit "Replace" angezeigt (bzw. Usage:... im telnet). ParameterName wird in jeder Befehlzeile ersetzt mit dem Wert. Zusaetzlich: DEVICE wird mit dem Namen des Geraetes ersetzt.
- desc: Kommentar fuer "set attrTemplate help ?". Die letzte Zeile mit # vor name: wird als desc: interpretiert, falls kein desc: vorhanden ist.
- farewell: wird zum Schluss als Dialog (oder Text in telnet) angezeigt, falls beim Anwenden der Befehle kein Fehler aufgetreten ist
- order: bestimmt die Reihenfolge der Templates fuers Frontend, falls nicht vorhanden, wird name: genommen.
Eigene templates entwickeln
Wer plant, mehrere gleichartige Geräte anzulegen, aber andere Einstellungen zu wählen, als sie in den vorhandenen templates enthalten sind, kann hierfür ebenfalls die attrTemplate-Funktion mit eigenen templates nutzen. Hierfür können die vorhandenen templates der im Unterverzeichnis fhem/FHEM/lib/AttrTemplate zu findenden Dateien als Basis dienen, Ihre templates speichern Sie einfach als neue Datei mit der Endung .template im selben Verzeichnis und lesen diese mit { AttrTemplate_Initialize() }
neu ein. Danach können Sie diese direkt verwenden.
Haben Sie ein template erstellt und möchten dieses teilen, erstellen Sie einfach einen Beitrag im entsprechenden Forenbereichen, für manche Module exisiteren auch spezielle Threads (siehe Linkliste unten)