Ein Button, unterschiedliche Funktionen pro Click

Begonnen von Rheingold, 02 Dezember 2017, 11:45:49

Vorheriges Thema - Nächstes Thema

Rheingold

Hi,

simple Frage auf die ich aktuell keine Antwort bzw. Herangehensweise habe:

Wie kann ich im TabletUI einen Button erstellen, der z.B. beim ersten Click den Befehl "set Licht_Status 1_Alles_An" setzt, beim zweiten Click "set Licht_Status 2_Alles_Gedimmt" und beim dritten "set Licht_Status 0_Alles_Aus" setzt?

Hintergrund der Frage ist, dass ich damit meine Hue Lichter schalten möchte. Per Fernbedienung habe ich das schon per Notify auf den jeweiligen Tastendruck gelöst. Nur wie kann ich das für das Tablet UI umsetzen? Den Dummy Licht_Status nutze ich um eben die verschiedenen Lampengruppen einzeln in mehren Modi zu wechseln.

Aktuell habe ich lediglich einen Button im Tablet um zwischen an und aus zu wechseln, da die Hues bzw. Ikeas Tradfri mehr können, möchte ich einen dritten oder auch noch vierten Status per Click auf den gleichen Knopf erreichen. Hier meine aktuelle Integration:
<div data-device="Hue_Kueche_Licht" data-type="button" data-icon="oa-scene_cooking" data-background-icon="fa-square-o" data-on-color="#aa6900" data-off-color="#505050" data-get="all_on" data-get-on="1" data-get-off="0" data-set-on="on" data-set-off="off" style="font-size: 1.8em;"></div>


Bin auf eure Tipps gespannt :)
Fhem auf Raspi 3; Jeelink mit 6x TX29DTH; CUL433 mit 9x RCS 1000 N und Somfy-Steuerung; CUL868; MAX-Cube + Thermostate; Philips Hue & Ikea Tradfri; Google Home Assistant; FTUI für Tablet und SmartPhone via Reverse-Proxy

setstate

statt der on/off Schreibweise -> Multistate-Schreibweise benutzen:

alle data-get-on und -off und data-set-on -off weg

und stattdessen


data-states='["off","viertel","halb","on"]'
data-set-states='["viertel","halb","on","off"]'

Rheingold

Danke für den Tipp, geht schon mal in die richtige Richtung :)

Wie kann ich denn beim Multistate das data-get-on verwenden?
Fhem auf Raspi 3; Jeelink mit 6x TX29DTH; CUL433 mit 9x RCS 1000 N und Somfy-Steuerung; CUL868; MAX-Cube + Thermostate; Philips Hue & Ikea Tradfri; Google Home Assistant; FTUI für Tablet und SmartPhone via Reverse-Proxy

setstate

Mit data-colors und data-background-colors Arrays.

Rheingold

#4
Ich glaube wir sprechen aneinander vorbei   :o

Mit dem Click auf den Button möchte ich den Status des Device "SZ_Licht_Status" ändern. Darauf hört ein Notify und ändert das Licht entsprechend.
Bei folgender Schreibweise bleibt das Icon noch "an", wenn ich z.B. per Hardware-Taster das Licht aus schalte (und der Status des Devices in FHEM auch erfolgreich geändert wurde):

<div data-device="SZ_Licht_Status"
data-type="button"
data-icon="oa-scene_sleeping"
data-background-icon="fa-square-o"
data-on-color="#aa6900"
data-off-color="#505050"
data-get="state"
data-set-states='["1_GuteNacht","2_Schrank","3_Komplett","0_Aus"]'
data-states='["0_Aus","1_GuteNacht","2_Schrank","3_Komplett"]'
></div>


Kann/Muss ich hier noch ein "data-get-off="0_Aus" " definieren?

Was mich jedoch wundert, ist wenn der Status auf 0_Aus geschaltet wurde der dummy-device den Status "off" hat und nicht "0_Aus"  :o


Das ist der Dummy:
define SZ_Licht_Status dummy
attr SZ_Licht_Status setList 0_Aus 1_GuteNacht 2_Schrank 3_Komplett
attr SZ_Licht_Status webCmd 0_Aus:1_GuteNacht:2_Schrank:3_Komplett



Edit:
Habe den type von "button" auf "multistatebutton" geändert. Leider klappt's auch so nicht richtig. Änderungen außerhalb des Tablet UI werden nicht im Tablet dargestellt. Bei "einfachen" Buttons klappt es jedoch.
<div data-device="SZ_Licht_Status"
data-type="multistatebutton"
data-icon="oa-scene_sleeping"
data-background-icon="fa-square-o"
data-on-color="#aa6900"
data-off-color="#505050"
data-get-on='["1_GuteNacht","2_Schrank","3_Komplett","0_Aus"]'
data-set='["2_Schrank","3_Komplett","0_Aus","1_GuteNacht"]'
></div>
Fhem auf Raspi 3; Jeelink mit 6x TX29DTH; CUL433 mit 9x RCS 1000 N und Somfy-Steuerung; CUL868; MAX-Cube + Thermostate; Philips Hue & Ikea Tradfri; Google Home Assistant; FTUI für Tablet und SmartPhone via Reverse-Proxy


Rheingold

#6
Ah ja, das klappt.... fast

Bliebe noch zu klären, wie ich den "data-off" oder vergleichbares festlegen kann? Mit meiner Implementierung kann ich wie gewünscht im Tablet UI zwischen den Stati 0 --> 1 --> 2 --> 3 --> 0 schalten. Im Status 0 soll der Schalter aus/dunkel sein. Bin ich im Status 3 und schalte egal wie(*) in den Status 0, so bleibt der Button im Tablet UI in den Farben, wie wenn er eingeschaltet wäre. Lade ich die Seite mit F5 neu, geht er in den ausgeschalteten Zustand.


* egal wie heißt, es macht keinen Unterschied ob ich per Tablet UI, klassischem FHEMweb, oder Hardware-Taster den Status ändere.



Edit:
ich stelle fest, dass es wohl nicht an dem Switch liegt, sondern an meinem Dummy, der zu viel Logik verwendet. Beim setzen des Status auf "0_Aus" geht er in den Status "off". In Folge dessen kann natürlich das Tablet UI nicht mit umgehen, da "off" nicht das gleiche ist wie "0_Aus"  ::)

Danke für die Hilfe mit dem Multistatebutton/Switch :)
Fhem auf Raspi 3; Jeelink mit 6x TX29DTH; CUL433 mit 9x RCS 1000 N und Somfy-Steuerung; CUL868; MAX-Cube + Thermostate; Philips Hue & Ikea Tradfri; Google Home Assistant; FTUI für Tablet und SmartPhone via Reverse-Proxy