FHEM Forum

FHEM => Automatisierung => DOIF => Thema gestartet von: Invers am 15 Januar 2017, 18:40:57

Titel: Icon klickbar für DOIF-$SELF:mybutton
Beitrag von: Invers am 15 Januar 2017, 18:40:57
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.
Titel: Antw:Icon klickbar für DOIF-$SELF:mybutton
Beitrag von: dirkbalzer am 15 Januar 2017, 19:35:46
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
Titel: Antw:Icon klickbar für DOIF-$SELF:mybutton
Beitrag von: Invers am 15 Januar 2017, 19:54:49
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?
Titel: Antw:Icon klickbar für DOIF-$SELF:mybutton
Beitrag von: Invers am 15 Januar 2017, 20:37:04
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.
Titel: Antw:Icon klickbar für DOIF-$SELF:mybutton
Beitrag von: Invers am 15 Januar 2017, 23:57:12
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.
Titel: Antw:Icon klickbar für DOIF-$SELF:mybutton
Beitrag von: Per am 16 Januar 2017, 13:13:42
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.
Titel: Antw:Icon klickbar für DOIF-$SELF:mybutton
Beitrag von: Invers am 16 Januar 2017, 13:35:15
Danke für den Tipp!

Nun benötigen wir "nur" noch eine Lösung für das zweite, grössere Problem.
Titel: Antw:Icon klickbar für DOIF-$SELF:mybutton
Beitrag von: Damian am 16 Januar 2017, 19:39:41
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.
Titel: Antw:Icon klickbar für DOIF-$SELF:mybutton
Beitrag von: Per am 16 Januar 2017, 20:34:14
Und statt IF
IF ([Giga] ne "on") (set Giga on)
kannst du FILTER nehmen
set Giga:FILTER=STATE!=on on
Titel: Antw:Icon klickbar für DOIF-$SELF:mybutton
Beitrag 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.
Titel: Antw:Icon klickbar für DOIF-$SELF:mybutton
Beitrag von: Damian am 16 Januar 2017, 21:36:37
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
Titel: Antw:Icon klickbar für DOIF-$SELF:mybutton
Beitrag von: Invers am 16 Januar 2017, 21:47:23
Leuchtet ein, danke.
Titel: Antw:Icon klickbar für DOIF-$SELF:mybutton
Beitrag von: Per am 17 Januar 2017, 12:37:17
Zitat von: Invers am 16 Januar 2017, 21:31:16Werde mal unter FILTER nachlesen/nachforschen.
Hier (https://fhem.de/commandref_DE.html#devspec)
Titel: Antw:Icon klickbar für DOIF-$SELF:mybutton
Beitrag von: Invers am 17 Januar 2017, 12:53:06
Super Service. Danke.