dev stateicon global ersetzen

Begonnen von wendeling, 27 November 2017, 19:58:40

Vorheriges Thema - Nächstes Thema

wendeling

Hallo,
Ich möchte mein Icon in dev stateicon von remotecontrol/black_btn_RED  auf remotecontrol/black_btn_STOP ändern.
Gibt es einen Befehl der das Icon überall wo es vorkommt ändert ?

Mit freundlichen Grüßen

marvin78


wendeling

Und wie müsste ich es eingeben ?
Ein Beispiel wäre nett .

marvin78

Beispiele gibt es in der Doku zu devspec (Device specification).

wendeling

Einen Listbefehl bekomme ich hin, aber mehr auch nicht ! :-(

list devStateIcon=.*remotecontrol/black_btn_RED

danach erhalte ich die Liste mit allen Geräten wo dieses enthalten ist.

Was muss ich nun eingeben um remotecontrol/black_btn_RED in remotecontrol/black_btn_STOP zu ändern ?

Bitte um Hilfe !

marvin78

Das ganze von list auf attr übertragen. Das ist nicht schwer.  Bitte die doku zu attr in Verbindung mit devspec lesen.

Und bitte die Grundlagen lernen.

wendeling

Wenn es so einfach ist , warum dann nicht hier ?
Komme nicht weiter !

marvin78

#7
Dann hast du ein echtes Problem. Ein Attribut setzt man so

attr <devspec> <attribute> <value>

Siehe commandref zu attr. Devspec hast du im list oben verwendet. Schaffst du den Rest allein?

wendeling


marvin78

Oha. Mach's die einfach. Baue dir ein cmdalias, das folgendermaßen aussieht:

define newDevStateIcon cmdalias newDevStateIcon .* AS {for my $name (devspec2array("devStateIcon=.*$EVTPART0.*")){ map {s/$EVTPART0/$EVTPART1/; fhem("attr $name devStateIcon $_")} AttrVal($name, 'devStateIcon','') } }

Dann kannst du ein devStateIcon folgendermaßen ändern:

newDevStateIcon stop:remotecontrol/black_btn_RED stop:remotecontrol/black_btn_STOP

Aber Vorsicht. Es muss immer der komplette Teilausdruck aus devStateIcon verwendet werden.

Wenn du also sowas hast

attr DEVICE devStateIcon on:ICON1@green:off off:ICON2@red:off

lautet der Befehl

newDevStateIcon on:ICON1@green:off on:ICON3@green:off

um ICON1 auf ICON 3 zu ändern.

Ungetestet und ohne Gewähr.

wendeling