Ich bin gerade dabei FHEMWEB so zu gestalten, dass ich dies auch für (seltene) Steuerungen meiner Frau "geben" kann. Das bedeutet auch, dass ich möglichst alle Aktionen auf das devStateIcon legen möchte, damit das auf dem Smartphone auch selbsterklärend dargestellt wird.
Meine Rolladen lassen sich gegenwärtig über mehrere Buttons steuern (hoch, runter, Slider, usw.). Jetzt würde ich gerne das devStateIcon für eine "Eintasten-Steuerung" nutzen. Heisst: 1. Klick = fährt runter, 2. Klick = stoppt, 3. Klick fährt hoch, 4. Klick = stopp, 5. = runter, usw.
Testweise wollte ich erstmal mit toggle arbeiten, aber da kommt dann eine Fehlermeldung:
HMCCUDEV: OG_Bad_Rollo No state values defined
Außerdem glaube ich, dass "toggle" über hoch oder runterfährt, aber nicht stoppt.
Hat das jemand schonmal mit dem Aktor und HMCCU probiert?
Noch ein List vom Rolladen-Aktor mit o.g. Fehler:
Internals:
DEF OEQ1969598
FUUID 5deec9e0-f33f-bfba-8b2a-f786ff77c8406830
IODev HM_CCU3
NAME OG_Bad_Rollo
NR 203
STATE closed
TYPE HMCCUDEV
ccuaddr OEQ1969598
ccudevstate active
ccuif BidCos-RF
ccuname OG_BAD_ROLLO
ccutype HM-LC-Bl1PBU-FM
channels 2
firmware 2.11
statevals devstate
READINGS:
2020-04-26 10:48:58 1.DIRECTION none
2020-04-24 13:17:53 1.INHIBIT unlocked
2020-04-26 10:50:00 1.LEVEL closed
2020-04-26 10:48:58 1.WORKING no
2020-04-24 13:17:53 activity alive
2020-04-26 10:50:00 control 0
2020-04-26 10:50:00 hmstate closed
2020-04-26 10:50:00 state closed
hmccu:
devspec OEQ1969598
dp:
1.DIRECTION:
OSVAL down
OVAL 2
SVAL none
VAL 0
1.LEVEL:
OSVAL closed
OVAL 0.000000
SVAL closed
VAL 0.000000
1.WORKING:
OSVAL yes
OVAL 1
SVAL no
VAL 0
Attributes:
IODev HM_CCU3
ccureadingfilter (LEVEL|INHIBIT|DIRECTION|WORKING)
ccuscaleval LEVEL:0:1:0:100
controldatapoint 1.LEVEL
eventMap /datapoint 1.STOP true:stop/datapoint 1.LEVEL 0:down/datapoint 1.LEVEL 100:up/
group Bad
room HMCCU,Steuerung
statedatapoint 1.LEVEL
stripnumber 1
substexcl control
substitute LEVEL!#0-0:closed,#100-100:open;DIRECTION!0:none,1:up,2:down,3:undefined;WORKING!(0|false):no,(1|true):yes
webCmd control:up:stop:down:toggle
widgetOverride control:slider,0,10,100
Das "Hübschmachen" mit entsprechendem devStateIcon mache ich dann später auch noch... Das sollte ich hinbekommen.
Das wird mit toggle nicht funktionieren, da die von Dir benötigten Funktionen auf verschiedenen Datenpunkten liegen. rauf und runter werden über LEVEL gesteuert, während der Datenpunkt STOP den Rollladen anhält.
Toggle hingegen schaltet die im Attribut statevals festgelegten Zustände für den State- bzw Controldatapoint durch. Und davon kann es nur einen geben.
Schade - dachte ich mir schon fast :-(
Weisst Du vielleicht ob man das direkt im Aktor hinterlegen kann? Eine CCU habe ich ja auch...
Da muss ich mal recherchieren...
Ansonsten muss ich mal alternativ die DOIF Variante testen...
https://forum.fhem.de/index.php?topic=70419.0
Ich denke, Du wirst nicht um DOIF herum kommen. Alternativ kannst Du in der CCU ein Programm erstellen. Aber in dem Fall würde ich Dir FHEM empfehlen, da Du die Oberfläche zur Steuerung ja auch hier hast.
Sollte das irgendwie langsam reagieren, kannst Du auch mal die CCU Variante versuchen. Da sparst Du Dir einige Stationen, die ggf. Zeit kosten.
Ich bin tatsächlich auch ohne DOIF weitergekommen... Mit den virtuellen Tasten der CCU kann man ein toggle Implementieren:
1. In der CCU einen virtuellen Kanal mit dem Rollo verknüpfen über "auf / zu&hoch /herunter" - das entspricht einer toggle Funktion (also bei dem Tastendruck hoch, stop, runter, stop, hoch)
2. In FHEM den virtuellen Kanal hinzufügen über
defmod CCU_VIRT_01 HMCCUCHN BidCoS-RF:1
attr CCU_VIRT_01 IODev HM_CCU3
3. Dann kann man über den Datapoint direkt togglen:
set CCU_VIRT_01 datapoint PRESS_SHORT 1
Jetzt fehlt mir nur noch das letzte Puzzle-Stück:
Wie kann ich das devStateIcon eines Devices mit einem FHEM-Kommando [eines anderen = virtueller Kanal] ersetzen, sodass ein Klick/Touch auf das Icon des Rolladen-Devices idealerweise den virtuellen Taster auslöst. Das Icon davon soll natürlich den Status des originären Devices anzeigen (visuell offen/halb/zu).
Jemand eine Idee?
Die Kür ist dann den virtuellen Taster mit einem Programm zu verknüpfen, dass dann per Parameter verschiedene Rollos steuern kann (dann muss ich nicht einen virt. Kanal pro Rollo "opfern").