template

Aus FHEMWiki
Zur Navigation springen Zur Suche springen


template
Zweck / Funktion
Einfaches Erstellen gleichartiger Devices
Allgemein
Typ Befehl
Details
Dokumentation EN / DE
Support (Forum) Sonstiges
Modulname 98_template.pm
Ersteller Dr. Boris Neubert (Forum )
Wichtig: sofern vorhanden, gilt im Zweifel immer die (englische) Beschreibung in der commandref!

Der template-Befehl vereinfacht das Erstellen gleichartiger Devices in FHEM. Ein Template-File besteht im Grunde aus FHEM Befehlen, in die Platzhalter eingefügt werden. Beim Aufruf des Template-Befehles werden die Platzhalter durch konkrete Werte ersetzt. Damit lassen sich sehr schnell ähnliche Devices (oder Kombinationen von Devices) erstellen oder ändern. Ein Template-File könnte z.B. die Definition eines Dummies inkl. mehrerer sich auf den Dummy beziehenden notify und at enthalten. Durch wiederholte Ausführung des Templates lassen sich so schnell Devices und ihre Verarbeitungslogik erstellen.

Template-File erstellen

Template-Files werden außerhalb FHEM erstellt und dann auf dem FHEM Server (in einem Unterverzeichnis von FHEM) abgelegt. Nutzer von configdb müssen das File zunächst importieren.

Derzeit (März 2017) können Template-Files noch nicht über "Edit Files" in FHEM direkt bearbeitet werden. Über einen Workaround ist dies jedoch möglich. Dateien, die in /FHEM abgelegt sind und Endungen wie z.B. .holiday oder .layout haben, werden unter "Edit Files" angezeigt und können in FHEM bearbeitet werden. Das Template File kann mittels

template show <templateFile>

angezeigt werden

Template-File mit Inhalt füllen

Das Template besteht aus FHEM Befehlen mit Platzhaltern, die bei der Ausführung des Template-Befehls durch konkrete Werte ersetzt werden. Ein Template könnte beispielsweise folgendermaßen definiert werden.

# my Template File ./FHEM/tmpl_example.layout
define %name% dummy 

define di_%name% doif ([%name]) (set %device" on)
attr di_%name do always

Im Gegensatz zur Kopie eines Devices mit copy ermöglicht der Template-Befehl die Definition mehrerer - von einander abhängiger - Geräte "in einem Rutsch". Oben stehendes Beispiel ist bewusst einfach gehalten um diesen Aspekt zu verdeutlichen.

Für komplexere Templates bietet sich die raw definition eines existierenden Gerätes als Ausgangspunkt an.

Template ausführen

Bei Ausführung des Templates werden die FHEM Befehle des Template-Files abgearbeitet. In oben definiertem Beispiel würde also ein

template ./FHEM/tmpl_example.layout name=myDummy device=myDevice

dazu führen, dass ein Dummy inkl. zugehörigem DOIF angelegt würde.