Häufig möchte man seine Visualisierung so gestalten, dass je nach Endgerät bestimmte Elemente anders dargestellt bzw. weggelassen werden- beispielsweise sollen auf den Handys der Kinder bestimmte Optionen nicht vorhanden sein, oder bestimmte Funktionen sollen nur von einem bestimmten Handy aus möglich sein (z.B. Administration). Aber auch generelle Konfigurierbarkeit der Visualisierung macht Sinn- beispielsweise möchte man die Schalter für die Weihnachtsbeleuchtung nicht ständig in der Visualisierung haben, sondern diese leicht ohne Anpassung der Seite selbst konfigurierbar ein- oder ausblenden können.
Hinweis: Für dieses Tutorial ist ein installiertes und lauffähiges FHEM System sowie Grundkenntnisse über die FHEM-Mechanismen notwendig. Weiterhin wird davon ausgegangen dass SmartVISU als Visualisierungs-Frontend verwendet wird. Hierauf wird in diesem Tutorial nicht näher eingegangen, dazu wird es später einen separaten Post geben.
Sofern man die Multiuser-Erweiterung (Bestandteil von herrmannj’s sv-cleaninstall) nutzt (was in der Regel der Fall ist, wenn man SmartVISU mit FHEM betreibt), ist das gar kein Problem.
Hierfür öffnet man die Datei config.ini im SmartVISU Hauptverzeichnis. Je nach Wunsch legt man nun eine Config-Variable an- wenn sie für alle User („global“) gelten soll in der Sektion [default], wenn sie nur für bestimmte User gelten soll, dann in der Sektion mit der IP-Adresse des entsprechenden Teilnehmers, [client:client_xxx.xxx.xxx.xxx]. Es ist dazu natürlich notwendig, dass alle Endgeräte immer dieselbe IP-Adresse benutzen. Das kann man in der Regel im Router so einstellen.
So könnte die angelegte Variable für den Client mit der IP-Adresse 192.168.1.3 aussehen, hier wird die Config-Variable „admin“ angelegt:
[client:client_192.168.1.30]
...bereits vorhandene variablen...
admin = 'true'
Nun muss man noch wissen, dass die Variablen von SmartVISU den Präfix „config_“ vorangestellt bekommen. In der gewünschten SmartVISU Seite könnte man nun folgendes nutzen:
{% if config_admin == 'true' %}
<div >
{{ basic.symbol(id~'daylighton', 'global_daylight', 'Tageslicht', 'control_clear.svg', '1', 'or', 'icon1') }}
{{ basic.symbol(id~'daylightoff', 'global_daylight', 'Tageslicht', 'control_home.svg', '0', 'or', 'icon0') }}
</div>
{% endif %}
In diesem Beispiel würden die beiden Symbole nur auf dem Endgerät mit der IP 192.168.1.30 angezeigt, alle anderen Endgeräte bekommen die Symbole nicht angezeigt.
Das in der Einleitung genannte Beispiel mit der Weihnachtsbeleuchtung könnte man beispielsweise so umsetzen, wieder in der Datei config.ini, diesmal aber in der Sektion „default“:
[default]
...bereits vorhandene variablen...
christmas = 'false'
SmartVISU Seite:
{% if config_christmas == 'true' %}
<tr>
<td align="left">
{{ basic.switch('living_light_christmas_tree_sw', 'living_light_christmas_tree_sw', 'light_x-mas_tree.svg', 'light_x-mas_tree.svg') }} Weihnachtsbaum
</td>
</tr>
{% endif %}
Hier würde die Tabellenzeile mit dem Schalter für die Weihnachtsbeleuchtung allen Endgeräte nicht mehr angezeigt. Zur Weihnachtszeit braucht man nur die Variable auf ‚true‘ setzen und der Eintrag erscheint wieder.
Der Vollständigkeit halber hier noch das Ergebnis des Beispiels mit der Weihnachtsbeleuchtung in meiner Visualisierung (einmal Variable auf ‚true‘, einmal auf ‚false‘):
Ich bin sicher es lassen sich weitere sinnvolle Nutzungsmöglichkeiten für diesen Mechanismus finden!