Icon klickbar für DOIF-$SELF:mybutton

Begonnen von Invers, 15 Januar 2017, 18:40:57

Vorheriges Thema - Nächstes Thema

Invers

Was muss ich machen, damit ich ein klickbares Icon erhalte für on und off?
defmod Test DOIF (["$SELF:mybutton: on"]) (set Schreibtisch on)\
\
DOELSEIF (["$SELF:mybutton: off"]) (set Schreibtisch off)
attr Test cmdIcon mybutton:on:on mybutton:off:off
attr Test cmdState on|off
attr Test readingList mybutton
attr Test room 1
attr Test setList mybutton:on,off
attr Test webCmd mybutton



Ich schätze mal, dass es geht, finde aber die Lösung nicht.

Danke im Voraus.

Nachtrag: Das Auswahlfeld soll natürlich weg. Ich möchte nur das Icon.
Pi3B+ mit SSD/ Bullseye | FB7590 AX | 12 x Dect200 | CUL433+868 | SDuino | HM-LAN | 3 x Heizung FHT + FKontakte | KeyMatic + 4 FB | HM Wandtaster 2-fach m. LED | 6 x Türkont. TFK-TI | HM-Bew.-Melder innen | 3 x Smoked. HM-SEC-SD-2

dirkbalzer

Das wird das selbe Problem wie bei dem devStateIcon sein. (Hatte ich vor ein paar Tagen auch schon mal gefragt). Hier war eventMap die Lösung:
https://forum.fhem.de/index.php/topic,64340.0.html
Erfahrung ist eine nützliche Sache. Leider macht man sie immer erst kurz nachdem man sie brauchte...

Invers

Den Beitrag hatte ich gefunden und gelesen. Auch den Link. Komme aber nicht klar damit und du hast ja deine Lösung dazu nicht gepostet. Könntest du das bitte noch nachholen?
Pi3B+ mit SSD/ Bullseye | FB7590 AX | 12 x Dect200 | CUL433+868 | SDuino | HM-LAN | 3 x Heizung FHT + FKontakte | KeyMatic + 4 FB | HM Wandtaster 2-fach m. LED | 6 x Türkont. TFK-TI | HM-Bew.-Melder innen | 3 x Smoked. HM-SEC-SD-2

Invers

#3
Habs gefunden.

defmod Test DOIF (["$SELF:mybutton: on"]) (set Schreibtisch on)\
\
DOELSEIF (["$SELF:mybutton: off"]) (set Schreibtisch off)
attr Test cmdState on|off
attr Test devStateIcon on:on:mybutton_off off:off:mybutton_on
attr Test eventMap /mybutton on:mybutton_on/mybutton off:mybutton_off/
attr Test readingList mybutton
attr Test room 1
attr Test setList mybutton:on,off
attr Test webCmd mybutton



Nachtrag:
attr Test webCmd mybutton
muss weg, dann ist die Auswahlliste auch weg.
Pi3B+ mit SSD/ Bullseye | FB7590 AX | 12 x Dect200 | CUL433+868 | SDuino | HM-LAN | 3 x Heizung FHT + FKontakte | KeyMatic + 4 FB | HM Wandtaster 2-fach m. LED | 6 x Türkont. TFK-TI | HM-Bew.-Melder innen | 3 x Smoked. HM-SEC-SD-2

Invers

Ich habe folgendes beobachtet, was die Nutzung des DevStateIcons fast unmöglich macht.
Dabei interessiert mich, ob man die Probleme beseitigen kann und wie.

Folgendes DOIF funktioniert. Startet man aber fhem neu, oder ändert das DOIF, steht da initialize und das Icon ist weg, bis man mybutton auf on setzt.

defmod Test DOIF (["$SELF:mybutton: on"]) (set Schreibtisch on)\
\
DOELSEIF (["$SELF:mybutton: off"]) (set Schreibtisch off)
attr Test cmdIcon mybutton:on:on mybutton:off:off
attr Test cmdState on|off
attr Test readingList mybutton
attr Test room 1
attr Test setList mybutton:on,off
attr Test webCmd mybutton



Folgendes DOIF funktioniert überhaupt nicht mit dem DevStateIcon, wahrscheinlich weil die Ausführungsteile geklammert sind, um wait einsetzen zu können:

defmod DI_Fernseher DOIF (["$SELF:mybutton: on"]) \
(IF ([Giga] ne "on") (set Giga on)) \
(IF ([HiFi] ne "on") (set HiFi on)) \
(IF ([TV] ne "on") (set TV on)) \
(IF ([Giga:input] ne "tv") (set Giga input tv)) \
DOELSEIF (["$SELF:mybutton: off"])\
(set HiFi off)\
(set TV off) \
(IF ([Giga:input] eq "tv" and [PC] eq "off") (set Giga shutdown)) \
(IF ([Giga:input] eq "tv" and [PC] eq "on") (set Giga off)) \

attr DI_Fernseher alias Fernseher
attr DI_Fernseher devStateIcon on:on:mybutton_off off:off:mybutton_on
attr DI_Fernseher do always
attr DI_Fernseher eventMap /mybutton on:mybutton_on/mybutton off:mybutton_off/
attr DI_Fernseher readingList mybutton
attr DI_Fernseher room 1
attr DI_Fernseher setList mybutton:on,off
attr DI_Fernseher wait 0,0,0,90
attr DI_Fernseher webCmd mybutton


Weiss jemand Rat?
Natürlich kann ich wieder auf Dummys ausweichen, aber das wäre ja nicht so toll.
Vermutlich existiert eine Lösung und ich sehe sie nicht. Nur der Schöpfer selbst kennt sich in den dunklen Tiefen der Seele eines DOIF aus. Lacht.
Pi3B+ mit SSD/ Bullseye | FB7590 AX | 12 x Dect200 | CUL433+868 | SDuino | HM-LAN | 3 x Heizung FHT + FKontakte | KeyMatic + 4 FB | HM Wandtaster 2-fach m. LED | 6 x Türkont. TFK-TI | HM-Bew.-Melder innen | 3 x Smoked. HM-SEC-SD-2

Per

Zitat von: Invers am 15 Januar 2017, 23:57:12Startet man aber fhem neu, oder ändert das DOIF, steht da initialize und das Icon ist weg, bis man mybutton auf on setzt.
Habe ich so gelöst:

attr Test devStateIcon on:on:mybutton_off initialize|off:off:mybutton_on
Korrekt wäre ein eigenes Icon und Aktionen für initialize, aber für meinen Zweck reicht obriges aus.

Invers

Danke für den Tipp!

Nun benötigen wir "nur" noch eine Lösung für das zweite, grössere Problem.
Pi3B+ mit SSD/ Bullseye | FB7590 AX | 12 x Dect200 | CUL433+868 | SDuino | HM-LAN | 3 x Heizung FHT + FKontakte | KeyMatic + 4 FB | HM Wandtaster 2-fach m. LED | 6 x Türkont. TFK-TI | HM-Bew.-Melder innen | 3 x Smoked. HM-SEC-SD-2

Damian

Da du mit den einzelnen (IF) Befehlsabfolgen Zwischenzustände produzierst, so musst du für jeden Zwischenzustand einen Status definieren:

attr Test cmdState on,on,on,on|off,off,off,off

allerding statt wait 0,0,0,90 kannst du wait 0,90 angeben und die ersten drei Zustände zusammenfassen

(IF ([Giga] ne "on") (set Giga on), IF ([HiFi] ne "on") (set HiFi on), IF ([TV] ne "on") (set TV on))
(IF ([Giga:input] ne "tv") (set Giga input tv))



für den zweiten DOELSEIF hast du kein wait definiert, da kannst du alle zu einem Kommando zusammenfassen.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Per

Und statt IF
IF ([Giga] ne "on") (set Giga on)
kannst du FILTER nehmen
set Giga:FILTER=STATE!=on on

Invers

@Damian
Danke dir, das werde ich einbauen. Ich wäre nie auf die Idee gekommen, dass die IFs daran die Schuld haben. Bist du sofort darauf gekommen? Ich freue mich jedenfalls, dass es eine Lösung gibt.
Die Zusammenfassung der IFs - bringt das irgendeinen Vorteil?

@Per
Auch an dich vielen Dank.
Ich kann das machen, aber ich verstehe es leider nicht. Werde mal unter FILTER nachlesen/nachforschen.
Pi3B+ mit SSD/ Bullseye | FB7590 AX | 12 x Dect200 | CUL433+868 | SDuino | HM-LAN | 3 x Heizung FHT + FKontakte | KeyMatic + 4 FB | HM Wandtaster 2-fach m. LED | 6 x Türkont. TFK-TI | HM-Bew.-Melder innen | 3 x Smoked. HM-SEC-SD-2

Damian

Zitat von: Invers am 16 Januar 2017, 21:31:16
@Damian
Danke dir, das werde ich einbauen. Ich wäre nie auf die Idee gekommen, dass die IFs daran die Schuld haben. Bist du sofort darauf gekommen? Ich freue mich jedenfalls, dass es eine Lösung gibt.
Die Zusammenfassung der IFs - bringt das irgendeinen Vorteil?

@Per
Auch an dich vielen Dank.
Ich kann das machen, aber ich verstehe es leider nicht. Werde mal unter FILTER nachlesen/nachforschen.

Das hat nichts mit den IFs zu tun, sondern mit der Unterteilung der Befehle:

(set bla1 on, set bla2 on, set bla3 on)  ist ein Zustand
(set bla1 on) (set bla2 on) (set bla3 on) sind aber drei Zustände
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Invers

Pi3B+ mit SSD/ Bullseye | FB7590 AX | 12 x Dect200 | CUL433+868 | SDuino | HM-LAN | 3 x Heizung FHT + FKontakte | KeyMatic + 4 FB | HM Wandtaster 2-fach m. LED | 6 x Türkont. TFK-TI | HM-Bew.-Melder innen | 3 x Smoked. HM-SEC-SD-2

Per


Invers

Pi3B+ mit SSD/ Bullseye | FB7590 AX | 12 x Dect200 | CUL433+868 | SDuino | HM-LAN | 3 x Heizung FHT + FKontakte | KeyMatic + 4 FB | HM Wandtaster 2-fach m. LED | 6 x Türkont. TFK-TI | HM-Bew.-Melder innen | 3 x Smoked. HM-SEC-SD-2