Template: Unterschied zwischen den Versionen
Maista (Diskussion | Beiträge) |
Maista (Diskussion | Beiträge) KKeine Bearbeitungszusammenfassung |
||
Zeile 8: | Zeile 8: | ||
|ModOwner=Dr. Boris Neubert ({{Link2FU|10| Forum}}) | |ModOwner=Dr. Boris Neubert ({{Link2FU|10| Forum}}) | ||
}} | }} | ||
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. | 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-File erstellen == |
Aktuelle Version vom 1. Dezember 2019, 19:41 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 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.