Template: Unterschied zwischen den Versionen
K (diverse Korrekturen; wikifiziert) |
(kleine Ergänzungen) |
||
Zeile 23: | Zeile 23: | ||
# my Template File ./FHEM/tmpl_example.layout | # my Template File ./FHEM/tmpl_example.layout | ||
define %name% dummy | define %name% dummy | ||
define di_%name% doif ([%name]) (set %device" on) | define di_%name% doif ([%name]) (set %device" on) | ||
attr di_%name do always | attr di_%name do always | ||
</pre> | </pre> | ||
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 [[Import_von_Code_Snippets|raw definition]] eines existierenden Gerätes als Ausgangspunkt an. | |||
== Template ausführen == | == Template ausführen == | ||
Bei Ausführung des Templates werden die FHEM Befehle des template files abgearbeitet. In oben definiertem Beispiel würde also ein | Bei Ausführung des Templates werden die FHEM Befehle des template files abgearbeitet. In oben definiertem Beispiel würde also ein | ||
:<code>template ./FHEM/tmpl_example.layout name=myDummy </code> | :<code>template ./FHEM/tmpl_example.layout name=myDummy device=myDevice</code> | ||
dazu führen, dass ein Dummy inkl. zugehörigem [[DOIF]] angelegt würde. | dazu führen, dass ein Dummy inkl. zugehörigem [[DOIF]] angelegt würde. | ||
[[Kategorie:HOWTOS]] | [[Kategorie:HOWTOS]] | ||
[[Kategorie:Glossary]] | [[Kategorie:Glossary]] |
Version vom 20. März 2017, 15:24 Uhr
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 ausserhalb 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 Plathaltern, 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.