Im aktuellen develop sind zwei Änderungen, auf die wir hinweisen möchten:
Konfigurationsdateien werden seit längerem standardmäßig als YAML-Datei angeboten, auch die default-Dateien, die shNG beim Start installiert, wenn keine vom Benutzer erstellte Datei vorhanden ist, sind im yaml-Format.
Das alte "conf"-Format mit mehrfach geklammerten Überschriften ist nur noch ein Überbleibsel. Wenn zukünftig eine Möglichkeit besteht, die Konfiguration im Betrieb zu ändern und zu schreiben, ist das nur eine zusätzliche Komplikation. Um diesen Weg vorzubereiten und zu vereinfachen, wird die Konfiguration über "conf"-Dateien nicht mehr unterstützt.
Falls noch jemand conf-Dateien verwendet, sollte vor der Aktualisierung von develop auf den heutigen Stand das Tool "tools/conf_to_yaml_converter.py" genutzt werden.
2. Instanz-Handling
Es gibt seit langem die Diskussion, das Instanz-Handling für Multi-Instance-Plugins anzupassen. Seit der letzten Änderung der Plugin-Konfigurationsmöglichkeit (müsste shNG v1.6 gewesen sein) gibt es durchgängig einheitliche Bezeichner für jedes Plugin und jede Plugin-Instanz - den Namen des Abschnittes mit der Plugin-Konfiguration, im Folgenden "configname" genannt:
Daher wäre es im Prinzip unnötig, überhaupt Instanznamen zu vergeben. Es ist darüber hinaus auch redundant, denn im Beispiel kann das erste Plugin über "configname1" oder über "foo#" angesprochen werden, das zweite Plugin über "configname2" oder über "foo#bar".
Das Plugin "configname3" hat keinen (ausdrücklichen) Instanznamen, da es nur eine Instanz gibt. Es kann über "configname3" oder "baz#" angesprochen werden.
In der neuen Systematik werden keine Instanznamen mehr per "instance: <name>" mehr zugewiesen. Der Instanzname ist bei nur einmal geladenen Plugins leer (wie bisher), bei mehrfach geladenen Plugins entspricht er dem configname. Damit entfällt die Notwendigkeit, Instanznamen zu vergeben. Stattdessen kann der configname entsprechend genutzt werden:
Das vereinfacht die plugin.yaml und macht die Nutzung der Plugin-Identifikation simpler.
Die Möglichkeit, bei mehrfach geladenen Plugins "leere" Instanznamen zu erzeugen, kann durch "default_instance: true" erzwungen werden. Damit kann auch schnell zwischen verschiedenen Versionen eines Plugins (bspw. "cli" und "priv_cli") gewechselt werden, ohne dass die Instanzen in der Item-Konfiguration angepasst werden muss.
Um nicht durch einen einfachen commit alle Plugin- und Item- Konfigurationen über den Haufen zu werfen, haben wir das Ganze "versteckt". Fürs Erste bleibt das "alte" Konfigurationssystem standardmäßig aktiviert.
Wer die neue Systematik aktivieren möchte, muss in der "smarthome.yaml" den Eintrag "legacy_instances: false" setzen und ggf. seine plugin.yaml anpassen.
In einem späteren Release soll die neue Systematik zum Standard werden und der "instance:"-Parameter komplett entfernt werden.
- Konfigurationsdateien
- Instanz-Handling
Konfigurationsdateien werden seit längerem standardmäßig als YAML-Datei angeboten, auch die default-Dateien, die shNG beim Start installiert, wenn keine vom Benutzer erstellte Datei vorhanden ist, sind im yaml-Format.
Das alte "conf"-Format mit mehrfach geklammerten Überschriften ist nur noch ein Überbleibsel. Wenn zukünftig eine Möglichkeit besteht, die Konfiguration im Betrieb zu ändern und zu schreiben, ist das nur eine zusätzliche Komplikation. Um diesen Weg vorzubereiten und zu vereinfachen, wird die Konfiguration über "conf"-Dateien nicht mehr unterstützt.
Falls noch jemand conf-Dateien verwendet, sollte vor der Aktualisierung von develop auf den heutigen Stand das Tool "tools/conf_to_yaml_converter.py" genutzt werden.
2. Instanz-Handling
Es gibt seit langem die Diskussion, das Instanz-Handling für Multi-Instance-Plugins anzupassen. Seit der letzten Änderung der Plugin-Konfigurationsmöglichkeit (müsste shNG v1.6 gewesen sein) gibt es durchgängig einheitliche Bezeichner für jedes Plugin und jede Plugin-Instanz - den Namen des Abschnittes mit der Plugin-Konfiguration, im Folgenden "configname" genannt:
Code:
configname1:
plugin_name: foo
configname2:
plugin_name: foo
instance: bar
configname3:
plugin: baz
Das Plugin "configname3" hat keinen (ausdrücklichen) Instanznamen, da es nur eine Instanz gibt. Es kann über "configname3" oder "baz#" angesprochen werden.
In der neuen Systematik werden keine Instanznamen mehr per "instance: <name>" mehr zugewiesen. Der Instanzname ist bei nur einmal geladenen Plugins leer (wie bisher), bei mehrfach geladenen Plugins entspricht er dem configname. Damit entfällt die Notwendigkeit, Instanznamen zu vergeben. Stattdessen kann der configname entsprechend genutzt werden:
Code:
foo: plugin_name: foo bar: plugin_name: foo baz: plugin_name: baz
Die Möglichkeit, bei mehrfach geladenen Plugins "leere" Instanznamen zu erzeugen, kann durch "default_instance: true" erzwungen werden. Damit kann auch schnell zwischen verschiedenen Versionen eines Plugins (bspw. "cli" und "priv_cli") gewechselt werden, ohne dass die Instanzen in der Item-Konfiguration angepasst werden muss.
Um nicht durch einen einfachen commit alle Plugin- und Item- Konfigurationen über den Haufen zu werfen, haben wir das Ganze "versteckt". Fürs Erste bleibt das "alte" Konfigurationssystem standardmäßig aktiviert.
Wer die neue Systematik aktivieren möchte, muss in der "smarthome.yaml" den Eintrag "legacy_instances: false" setzen und ggf. seine plugin.yaml anpassen.
In einem späteren Release soll die neue Systematik zum Standard werden und der "instance:"-Parameter komplett entfernt werden.

