FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: wendeling am 27 November 2017, 19:58:40

Titel: dev stateicon global ersetzen
Beitrag von: wendeling am 27 November 2017, 19:58:40
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
Titel: Antw:dev stateicon global ersetzen
Beitrag von: marvin78 am 27 November 2017, 20:15:36
devspec ist dein Stichwort.
Titel: Antw:dev stateicon global ersetzen
Beitrag von: wendeling am 27 November 2017, 20:40:08
Und wie müsste ich es eingeben ?
Ein Beispiel wäre nett .
Titel: Antw:dev stateicon global ersetzen
Beitrag von: marvin78 am 27 November 2017, 20:56:02
Beispiele gibt es in der Doku zu devspec (Device specification).
Titel: Antw:dev stateicon global ersetzen
Beitrag von: wendeling am 27 November 2017, 21:44:31
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 !
Titel: Antw:dev stateicon global ersetzen
Beitrag von: marvin78 am 27 November 2017, 22:10:12
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.
Titel: Antw:dev stateicon global ersetzen
Beitrag von: wendeling am 27 November 2017, 22:17:25
Wenn es so einfach ist , warum dann nicht hier ?
Komme nicht weiter !
Titel: Antw:dev stateicon global ersetzen
Beitrag von: marvin78 am 27 November 2017, 22:22:59
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?
Titel: Antw:dev stateicon global ersetzen
Beitrag von: wendeling am 27 November 2017, 23:27:16
Leider nicht
Titel: Antw:dev stateicon global ersetzen
Beitrag von: marvin78 am 28 November 2017, 07:13:05
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.
Titel: Antw:dev stateicon global ersetzen
Beitrag von: wendeling am 28 November 2017, 08:49:13
Vielen Dank !!!