FHEM Forum

FHEM => Frontends => fronthem / smartVISU => Thema gestartet von: swsmily am 23 Mai 2021, 00:29:39

Titel: basic.stateswitch aktuellen Status anzeigen
Beitrag von: swsmily am 23 Mai 2021, 00:29:39
Hallo!

Ich nutze bisher Smartvisu 2.8 und versuche gerade auf die neuste Version zu kommen. Leider komme ich mit basic.stateswitch nicht klar.

In Version 2.8 konnte man noch basic.button und basic.text kombinieren:
{{ basic.button('Badlicht0', 'Badlicht', 'Aus' , '', 'aus', 'midi') }}
{{ basic.text('Badlicht0', 'Badlicht', '<br><font color="00ff00">Aus</font>', '<br><font color="gray">Aus</font>', 'aus', '') }}

{{ basic.button('Badlicht1', 'Badlicht', 'Auto' , '', 'auto', 'midi') }}
{{ basic.text('Badlicht1', 'Badlicht', '<br><font color="00ff00">Auto</font>', '<br><font color="gray">Auto</font>', 'auto', '') }}


Damit wurden die Buttons entsprechend eingefärbt, was gerade aktiv war.

In der aktuellen Smartvisu Version wurden basic.button und basic.text durch basic.stateswitch  ersetzt.

In der Doku (https://docu.smartvisu.de/3.0/index.php?page=basic/widget_basic.stateswitch) gibt es sogar die drei Buttons (red, yellow, green), wo der jeweils ausgewählte Status dauerhaft aktiv angezeigt wird. Der ausgewählte Button bleibt dort dauerhaft orange.
Leider fehlt dazu aber der passende Code. Anhand der "Parameters" bekomme ich es einfach nicht hin, dass der Button, dessen Status gerade aktiv ist eben mit "leuchtet" und die nicht aktiven grau sind.

Versucht habe ich es so:
{{ basic.stateswitch('Badlicht1', 'Badlicht', 'midi', 'auto', '', 'auto', 'grey', 'green', '', '', '') }}
{{ basic.stateswitch('Badlicht1', 'Badlicht', 'midi', 'Hell', '', 'Hell', 'grey', 'green', '', '', '') }}

Steuern lässt sich in dem Fall das Badlicht. Jedoch färbt sich die Schrift der Buttons nur für wenige Sekunden ein und danach sind sie wieder grau.

Was ich möchte, dass der jeweilge Button je nach Status in FHEM "leuchtet". Also wenn in dem Beispiel hier das Badlicht auf "Hell" steht, soll die Schrift des Buttons nicht grau, sondern z.b. grün bleiben. Alle anderen Buttons, die zum Badlicht gehören, sollen graue Schrift haben.


Wie muss ich die basic.stateswitch aufbauen, damit der aktive Button (laut FHEM-Status) eine andere Textfarbe hat, als alle anderen, die nicht aktiv sind?



Das gleiche betrifft basic.text - ich habe in der alten Version reinen Text (Flur, Küche, Bad), der eingefärbt wird, wenn ein Bewegungsmelder dort auslöst. Da es basic.text nicht mehr so gibt - kommt da die gleiche Frage auf. Wie kann ich je nach Status den Text entsprechend einfärben?
Dafür hab ich bisher folgendes genutzt:
{{ basic.text('Bad_Bewegung_r_1', 'Bad_Bewegung', '<font color="ffffff">Bad</font>', '<font color="0392FF">Bad</font>', 'closed', '') }}


Ich weiß nicht, ob ich es einfach nur nicht verstehe, oder ob Smartvisu durch das Zusammenführen von mehreren Elementen zu einem dadurch die Flexibilät verloren hat.

Titel: Antw:basic.stateswitch aktuellen Status anzeigen
Beitrag von: wvhn am 23 Mai 2021, 09:36:57
Ich bin gerade unterwegs und kann deshalb nur kurz antworten, ohne Dein Beispiel genauer anzusehen und zu korrigieren. Die Farben werden defaultmäßig gemäß dem eingestellten Design eingestellt. Zustand 0 entspricht icon0, Zustand 1 icon1.

Wenn Du Farben ändern willst, musst Du sie als Array übergeben, also z.B.
['green','grey']

Gruß
Wolfram

EDIT: Dein Beispiel:
{{ basic.stateswitch('Badlicht1', 'Badlicht', 'midi', ['auto','Hell'], '', ['auto','Hell'], ['grey', 'green']') }}

Basic.text wird durch basic.symbol ersetzt. 
Titel: Antw:basic.stateswitch aktuellen Status anzeigen
Beitrag von: swsmily am 23 Mai 2021, 21:27:03
Danke für deine Antwort. An sich ist das schon nicht schlecht, jedoch schaltet sich der Text dabei mit um. Für 2 Zustände mag das vielleicht nicht schlecht sein.

Im Anhang hab ich einen Screenshot, wie das Badlicht bei mir aussieht, mit folgender Konfig (Smartvisu 2.8 ):
{{ basic.button('Badlicht0', 'Badlicht', 'Aus' , '', 'aus', 'midi') }}
{{ basic.text('Badlicht0', 'Badlicht', '<br><font color="00ff00">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Aus&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font>', '<br><font color="gray">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Aus&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font>', 'aus', '') }}

{{ basic.button('Badlicht1', 'Badlicht', 'Auto' , '', 'auto', 'midi') }}
{{ basic.text('Badlicht1', 'Badlicht', '<br><font color="00ff00">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Auto&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font>', '<br><font color="gray">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Auto&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font>', 'auto', '') }}
<br><br>

{{ basic.button('Badlicht2', 'Badlicht', 'Hell' , '', 'Hell', 'midi') }}
{{ basic.text('Badlicht2', 'Badlicht', '<br><font color="00ff00">Hell</font>', '<br><font color="gray">Hell</font>', 'Hell', '') }}
{{ basic.button('Badlicht3', 'Badlicht', 'Weiß' , '', 'Weiß', 'midi') }}
{{ basic.text('Badlicht3', 'Badlicht', '<br><font color="00ff00">Weiß</font>', '<br><font color="gray">Weiß</font>', 'Weiß', '') }}
<br><br>
{{ basic.button('Badlicht4', 'Badlicht', 'Farbwechsel' , '', 'Farbwechsel', 'midi') }}
{{ basic.text('Badlicht4', 'Badlicht', '<br><font color="00ff00">Farbwechsel</font>', '<br><font color="gray">Farbwechsel</font>', 'Farbwechsel', '') }}
<br><br>
{{ basic.button('Badlicht5', 'Badlicht', 'Rot' , '', 'Rot', 'midi') }}
{{ basic.text('Badlicht5', 'Badlicht', '<br><font color="00ff00">Rot</font>', '<br><font color="gray">Rot</font>', 'Rot', '') }}
{{ basic.button('Badlicht6', 'Badlicht', 'Blau' , '', 'Blau', 'midi') }}
{{ basic.text('Badlicht6', 'Badlicht', '<br><font color="00ff00">Blau</font>', '<br><font color="gray">Blau</font>', 'Blau', '') }}

{{ basic.button('Badlicht7', 'Badlicht', 'Grün' , '', 'Grün', 'midi') }}
{{ basic.text('Badlicht7', 'Badlicht', '<br><font color="00ff00">Grün</font>', '<br><font color="gray">Grün</font>', 'Grün', '') }}


Je nach eingestelltem Wert im FHEM-Dummy leuchtet der entsprechende Button. Ist im FHEM-Dummy ein Wert, der in Smartvisu nicht konfiguriert ist, sind alle Buttons grau.



EDIT: Ich glaube ich habe es hinbekommen:

{{ basic.stateswitch('Badlicht1', 'Badlicht', 'midi', ['auto', 'auto'], '', ['auto', 'auto'], ['green', 'grey']) }}
{{ basic.stateswitch('Badlicht1', 'Badlicht', 'midi', ['Hell', 'Hell'], '', ['Hell', 'Hell'], ['green', 'grey']) }}

Zumindest sehen erste Tests damit ganz gut aus ;-)