uzsu: setList vs. widgetOverride, dummy vs. andere devices

Begonnen von UliM, 29 September 2015, 17:38:46

Vorheriges Thema - Nächstes Thema

UliM

Hi,
will gerade mein frontend mit uzsuSelectRadio verschönern.

Meine Fragen:
1. In den Beispielen, die ich gefunden gabe, wird mal setList, mal widgetOverride verwendet. Ist das gleichwertig, bzw. wann nimmt man welches?

2.Das uzsuSelectRadio funktioniert auf einem dummy
Internals:
   NAME       hzg_nachts
   NR         298
   STATE      off
   TYPE       dummy
   Readings:
     2015-09-28 22:09:34   state           off
Attributes:
   group      Heizung
   icon       sani_heating_temp
   room       Wohnung,Heizung
   setList    state:uzsuSelectRadio,on,off
   webCmd     state


aber auf anderen devices nicht, z.B. auf diesem:
Internals:
   BTN        57
   DEF        2332 57
   IODev      CUL
   NAME       hzg_Dauer
   NR         101
   STATE      off
   TYPE       FS20
   XMIT       2332
   Code:
     1          2332 57
   Readings:
     2015-09-28 14:11:43   state           off
Attributes:
   IODev      CUL
   dummy      1
   fm_order   16
   group      Heizung
   icon       sani_heating_automatic
   model      fs20st
   room       Wohnung,Heizung
   setList    state:uzsuSelectRadio,on,off
   webCmd     state
   widgetOverride state:uzsuSelectRadio,on,off

Was mache ich falsch?

Vielen Dank schon im Voraus für eure Unterstützung,
Uli
RPi4/Raspbian, CUL V3 (ca. 30 HomeMatic-devices), LAN (HarmonyHub, alexa etc.).  Fördermitglied des FHEM e.V.

justme1968

setList nimmst du für dummys oder für readingsProxy. das sind die einzigen devices die von sich aus keine set kommandos können und denen diese über das setList attribut beigebracht werden.

alle anderen device haben eine liste von unterstützen kommandos. das was bei set ? zurück kommt und kennen kein setList attribut. hier kann mit widgetOverride die für ein bestimmtes set verwendetes widget überschrieben werden.

wenn es kein entsprechendes set kommando gibt kannst du es auch nicht in den webCmd verwenden auch nicht überschreiben.

du kannst zwar mit cmdalias im prinzip neue kommandos für ein device definieren, diese werden aber bei webCmd nicht berücksichtigt. wenn es dir nur ums aussehen geht könntest du einen readingsProxy definieren und die set on und set off dann ans echte device weiter reichen.

gruss
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

UliM

Hi André,
ah, ok.
Habe auf "hzg_Dauer"  nun die setList gelöscht.
Das ist ein FS20-device, das kann on+off.
Dennoch erscheint das uzsuSelectRadio nicht, das WF sieht aus wie angehängt.
Was kann ich noch versuchen?
Gruß, Uli
RPi4/Raspbian, CUL V3 (ca. 30 HomeMatic-devices), LAN (HarmonyHub, alexa etc.).  Fördermitglied des FHEM e.V.

justme1968

on und off sind aber zwei kommandos (nicht ein kommando mit einem parameter) und es gibt aber kein state kommando. direkt du kannst nur on und off getrennt als webCmd verwenden und state gar nicht.

du kannst entweder einen readingsProxy dazwischen schalten (oder einen dummy mit notify) und da die setList verwenden.

oder:
- du suchst dir eines der vorhanden kommandos aus, z.b. on und verwendest es als webCmd.
- über widgegOverride sorgst du dafür das diese kommando dann on und off als parameter bekommt: widgetOverride on:uzsuSelectRadio,on,off.
- mit cmdalias kannst du jetzt dafür sorgen das dieses kommando das es so eigentlich nicht gibt (set hzg_Dauer on on und set hzg_Dauer on off) auch verstanden wird:
   define a1 cmdalias set hzg_Dauer on on AS set hzg_Dauer on und define a2 cmdalias set hzg_Dauer on off AS set hzg_Dauer off
- damit das widget beim seiten aufbau richtig initialisiert wird brauchst du noch ein reading mit dem aktuellen state das genau so heisst wie das kommando:
   attr hzg_Dauer userReadings on {ReadingsVal($name,'state','')}

das würde dann zwar so aussehen wie du willst und kein zusätzliches device brauchen, ist aber nicht wirklich einfacher noch selbsterklärender als ein readingsProxy:define hzg_DauerProxy hzg_Dauer:state
attr hzg_DauerProxy setList state:uzsuSelectRadio,on,off

und dann hzg_DauerProxy statt hzg_Dauer im frontend verwenden.

gruss
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968