Automatische Generierung
Im Vergleich zum visu_smartvisu Plugin der vorhergehenden SmartHomeNG Releases, wurden die Möglichkeiten zur automatischen Generierung von Seiten für die smartVISU erweitert. Die bisherigen Features sind mit einer Ausnahme auch im neuen smartvisu Plugin vorhanden. Die Version 3 des Nutzdaten Protokolls wurde nicht erneut implememtiert. Daher entfällt die Unterstützung für smartVISU v2.7. Unterstützt werden nun smartVISU v2.8 und v2.9 und folgende.
Neu hinzugekommen sind folgende Features:
Deprecated Widget Warnings: Ab dem auf v2.9.2 folgenden Release liefert die smartVISU informationen welche Widgets der smartVISU als veraltet (deprecated) gekennzeichnet wurden und welche Widgets entfernt wurden.
Navigation Structure Definition: Bisher wurde die Navigation der smartVISU strikt in der Reihenfolge erzeugt, in der die Items beim Start von SmartHomeNG eingelesen werden. Nun ist es möglich, diese Navigations-Struktur (inclusive Icons und Sidebar Infos) in einer zentralen Datei zu konfigurieren und damit die Reihenfolge aus den Item-Definitionen zu übersteuern.
Pages from multiple sub-trees: Items aus mehreren unterschiedlichen Sub-Trees können zusammen in eine Seite der Visualisierung generiert werden.
Die zusätzlichen Item Attribute, die vom smartvisu Plugin zur Nutzung in den Item Definitionen definiert werden, sind auf der Seite Item Attribute zur Generierung im Detail beschrieben.
Diese Seite und die zugehörien Unterseiten sollen einige der Möglichkeiten aufzeigen, die sich durch die Erweiterungen bieten. Es ist auch möglich einen Teil der Seiten generieren zu lassen und einen anderen Teil der Seiten manuell zu erstellen.
Features der Generierung
Unterschiedliche Visu-Styles
Zusätzlich zum von bisherigen Releases unterstützen Standard-Style, wird der Style black unterstützt.
Das folgende Beispiel zeigt die Möglichkeiten zur Auswahl des Styles der für smartVISU generierten Seiten.
Bisher wurden Blöcke generiert, die so aussahen (Style ‘Standard’):
In der aktuellen Version ist es möglich, die Blöcke in folgender Optik generieren zu lassen (Style ‘Black’):
Dieses ist eine Visu-weite Einstellung, die in der Datei
/etc/plugin.conf vorgenommen wird. Dort kann visu_style: std
oder visu_style: blk
eingetragen werden.
Eine vollständige Seite im Style Black sieht z.B. folgendermaßen aus:
Unterschiedliche Blockgrößen
Die Blöcke in denen Widgets angezeigt werden, hatten in den bisherigen Releases eine fest definierte (Mindest-)Größe. Jetzt stehen drei unterschiedliche Mindestgrößen zur Verfügung.
Die smartVISU unterstützt Blöcke mit drei unterschiedlichen Größen. Gemeint ist hierbei die Mindestgröße des Blocks. Wenn in dem Block Widgets platziert werden, die mit dem Platz nicht auskommen, wird der Block automatisch höher. Die Blockhöhen unterscheiden sich in etwa um die Höhe der Heading-Zeile.
In den bisherigen Releases von smarthome.py/SmartHomeNG wurden beim automatischen generieren von smartVISU Seiten immer Blöcke der Größe 2 (mittel) verwendet.
Im aktuellen Release können auch Blöcke der Größen 1 (groß) und 3 (klein) in die Seiten generiert werden.
Dieses kann als Item-Attribut sv_blocksize
festgelegt werden.
Am Beispiel des Trenners Tests
zeigt die folgende Konfiguration,
wie Trenner konfiguriert werden:
%YAML 1.1
---
wohnung:
buero:
verbraucher:
name: Verbraucher
sv_blocksize: 1
sv_widget: "{{ basic.stateswitch('wohnung.buero.tv', 'wohnung.buero.tv', '', '', ['control_on_off.svg', 'control_standby.svg'], '', ['icon0','icon1']) }} <br> {{ basic.stateswitch('wohnung.buero.computer', 'wohnung.buero.computer', '', '', ['control_on_off.svg', 'control_standby.svg'], '', ['icon0','icon1']) }} <br> {{ basic.stateswitch('wohnung.buero.schrank', 'wohnung.buero.schrank', '', '', ['control_on_off.svg', 'control_standby.svg'], '', ['icon0','icon1']) }} <br> {{ basic.stateswitch('wohnung.buero.steckdose_tuer', 'wohnung.buero.steckdose_tuer', '', '', ['control_on_off.svg', 'control_standby.svg'], '', ['icon0','icon1']) }}"
sv_blocksize
dient zur Einstellung der (minimalen) Blockhöhe und
darf die Werte 1, 2 oder 3 annehmen. Wird sv_blocksize
nicht
angegeben, so wird der Default-Wert 2 benutzt.
Unterschiedliche Blocktypen
Die Blöcke in denen Widgets angezeigt werden, hatten in den bisherigen Releases einen festen Typ. Nun ist ein Typ Dual hinzugekommen.
Die smartVISU unterstützt Blöcke zusätzlich zu den Standard-Blöcken auch Blöcke mit “2 Seiten”, die in den bisherigen Releases von smarthome.py/SmartHomeNG nicht unterstützt wurden.
Im aktuellen Release können auch diese Dual-Blöcke in der automatischen Seitengenerierung verwendet werden.
Hier ein Beispiel, wie ein solcher DualBlock aussehen kann:
Ein solcher Dual-Block hat immer die Größe eines großen Blocks. Damit
die Visu-Seite “aufgeräumt” aussieht, sollte für den daneben liegenden
Block die große Form gewählt werden (sv_blocksize = 1
). Diehe dazu
auch Seite Unterschiedliche
Blockgrößen.
Hier ist ein Beispiel auf einer Visu Seite:
Manuell erstellte Seiten
In smartVISU können manuell erstellte oder modifizierte Seiten in die Autogenerierung eingemischt werden.
Normalerweise werden durch das Plugin alle notwendigen Seiten für smartVISU generiert und im Bereich pages unter smarthome abgelegt.
Diese Seiten werden in smartVISU dann folgendermaßen ausgewählt:
smartVISU bietet jedoch eine Möglichkeit um manuell erstellte Seiten und automatisch generierte Seiten zu mischen.
Dazu muss man in smartVISU einen ordner unter pages anlegen und die manuell erstellten Seiten dort hineinkopieren. Anschließend muss man in smartVISU dann zur Darstellung diesen Bereich auswählen:
Beim Zugriff auf Seiten versucht smartVISU nun die entsprechende Seite aus dem unter pages angelegten Bereich zu laden. Wird die angeforderte Seite dort nicht gefunden, versucht smartVISU die Seite aus dem Bereich smarthome zu laden.
Man kann also SmartHomeNG die Seiten vollständig generieren lassen und eine Seite, die manuelle Modifikationen enthalten soll aus dem Ordner smarthome in den unter pages angelegten Bereich kopieren und anschließend in dieser Kopie die gewünschten Modifikationen vornehmen.
Bemerkung
Die modifizierte Seite erhält keine Änderungen mehr aus SmartHomeNG.
Falls Änderungen aus SmartHomeNG in diese Seite übernommen werden sollen, müssen diese aus der generierten Seite (im Ordner smarthome) in die manuell modifizierte Seite übernommen werden.
Alternativ kann die generierte Seite erneut kopiert werden und die Änderungen können dort eingearbeitet werden, wie dieses ursprünglich erfolgt ist.
Deprecated Widget Warnings
Ab dem auf v2.9.2 folgenden Release liefert die smartVISU informationen welche Widgets der smartVISU als veraltet (deprecated) gekennzeichnet wurden und welche Widgets entfernt wurden. Ab SmartHomeNG v1.8 können diese Informationen ausgewertet werden und Warnungen geloggt werden falls veraltete order entfernte Widgets in der automatischen Generierung genutzt werden sollen.
Standardmäßig wird eine Warning bei Verwendung veralteter (deprecated) Widgets erzeugt. Der Log Eintrag enthält eine Liste aller verwendeten Widgets mit der Anzahl Items in denen diese Widgets genutzt werden.
Im folgenden Beispiel wird aufgezeigt, dass das Widget plot.multiaxis an 9 Stellen verwendet wird.
2020-09-14 21:26:43 WARNING plugins.smartvisu Deprecated widget usage={'plot.multiaxis': 9}
Standardmäßig wird ein Error bei Verwendung entfernter (removed) Widgets erzeugt. Es wird ein Error erzeugt, da die generierten Visu Seiten die diese Widgets enthalten nicht funktionieren werden.
Im folgenden Beispiel wird aufgezeigt, dass das einige Widgets an mehreren Stellen verwendet werden.
2020-09-14 21:26:43 ERROR plugins.smartvisu Removed widget usage={'basic.button': 18, 'basic.dual': 3, 'basic.switch': 11, 'basic.text': 13}
Weiterhin werden Warnungen geloggt, falls Widgets die von Plugins „mitgebracht“ werden, veraltete Widgets der smartVISU nutzen:
2020-09-12 10:37:53 ERROR plugins.smartvisu deprecated_widgets: Removed widget(s) ['basic.button', 'basic.formula', 'basic.switch'] used in plugin-widget 'widget_window' of plugin 'priv_widgets'
In der Konfiguration des smartvisu Plugins kann eingestellt werden, dass zusätzlich Warnings/Errors mit den Details der Nutzung in den Item Definitionen geloggt werden. Diese Logeinträge enthalten die Angabe des Items und des Attributes des Items, in dem das entsprechende Widget genutzt wird:
2020-09-12 10:37:53 WARNING plugins.smartvisu Deprecated widget used in item wohnung.kochen.plot_temperaturen 'sv_widget': 'plot.multiaxis'
2020-09-12 10:56:03 ERROR plugins.smartvisu Removed widget used in item wohnung.kochen.visu_insel 'sv_widget': 'basic.button'
Seiten aus mehreren Sub-Trees
Ab SmartHomeNG v1.8 können Items aus mehreren unterschiedlichen Sub-Trees zusammen in eine Seite der Visualisierung generiert werden.
Bisher wurden alle Widgets die unterhalb eines Items definiert wurden, welches ein sv_page Attribut hat in eine Visu Seite generiert. Wenn in einem anderen Teilbaum des Item-Trees ein weitere sv_page Definition mit dem selben Seiten Namen (name:) erfolgte, wurde eine weitere Seite generiert, die in der Navigation den selben Namen hatte wie die erste Seite.
Nun werden die Widgets aus dem zweiten Teilbaum in diesem Fall nicht mehr in eine eigene Seite generiert, sondern an die erste Seite angefügt.
Falls es erwünscht ist zwei Navigationseinträge mit dem selben Namen zu haben (z.B. Bad) wenn die Navigation durch Trenner „Erdgeschoss“ und „Obergeschoss“ strukturiert ist, so muss an den Namen der Definition für den zweiten Teilbaum nur ein Leerzeichen angefügt werden:
myitems:
eg:
bad:
sv_page: room
name: Bad
...
og:
bad:
sv_page: room
name: "Bad "