Plugins
Das Grundsystem von SmartHomeNG kann durch den Einsatz von Plugins erweitert werden. Ein Plugin ist ein Zusatzmodul in einem Unterverzeichnis unterhalb des Verzeichnisses ../plugins. Um ein Plugin in SmartHomeNG zu verwenden (eine Instanz des Plugins zu laden) muss eine Sektion für das gewünschte Plugin in der Datei etc/plugin.yaml erstellt werden.
Für das oft benutzte KNX-Plugin sieht das z.B. so aus:
# etc/plugin.yaml
knx:
plugin_name: knx
# instance: knx_1
# host: 127.0.0.1
# port: 6720
# webif_pagelength: 0
send_time: 600 # update date/time every 600 seconds, default none
time_ga: 8/0/0
date_ga: 8/0/1
bzw. im alten Format:
# etc/plugin.conf
[knx]
plugin_name = knx
# instance = knx_1
# host = 127.0.0.1
# port = 6720
# webif_pagelength = 0
send_time = 600 # update date/time every 600 seconds, default none
time_ga = 8/0/0
date_ga = 8/0/1
Dabei kann der Name der Plugin-Instanz (Name des Abschnitts) frei gewählt werden. Es muss nur darauf geachtet werden, dass er eindeutig ist, also nur einmal vorkommt. Der Name der Instanz sollte auch so gewählt werden, dass es zu keiner Namensgleichheit mit Top-Level Items kommt.
Es gibt folgende allgemeine Parameter im Abschnitt eines Plugins:
Die weiteren Einträge sind Plugin spezifisch. Welche Parameter ein Plugin kennt ist auch der plugin.yaml Datei bzw. Doku des Plugins zu entnehmen. Je nach Plugin können sie verpflichtend oder optional sein. Im obigen Beispiel sind sie alle (außer plugin_name) optional. Diese Parameter werden beim Start von SmartHomeNG an das Plugin übergeben.
Ein # wirkt wie auch bei den Konfigurationsdateien der Items als Beginn eines Kommentars.
Multi-Instance Fähigkeit
Es gibt Plugins, die so geschrieben sind, dass von ihnen mehrere Instanzen parallel geladen werden können.
Wenn von solchen Plugins nur eine Instanz konfiguriert wird, ist nichts besonderes zu beachten. Dann wird ein solches Plugin konfiguriert wie alle andern Plugins auch.
Wenn mehrere Instanzen eines Plugins konfiguriert werden, muss in der Konfiguration der Items eine Information hinterlegt werden, auf welche Instanz des Plugins sich das Item bezieht. Dazu muss jeder Instanz ein eindeutiger Name gegeben werden. Das erfolgt in der ../etc/plugin.yaml dadurch, dass jeder Instanz ein Parameter instance hinzugefügt wird:
fritzbox_1:
plugin_name: avm
instance: fb6360
...
fritzbox_2:
plugin_name: avm
instance: fb7490
...
Außerdem muss jedem Item die Information mitgegeben werden, auf welche Instanz sich das Item bezieht:
wan:
connection_status:
type: str
avm_data_type@fb7490: wan_connection_status
Wenn ein Item mehrere Attribute nutzt, die das Plugin zur Verfügung stellt, ist als Grundregel jedes Attribut mit der @<instance> zu ergänzen.
Es kann sein, dass die Ergänzung eines einzelnen Attributes reicht. Das ist dann in der Doku des jeweiligen Plugins beschrieben.
Liste der verfügbaren Plugins
Details zu den existierenden Plugins finden sich hier .