FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: LordVoodoo am 08 März 2019, 08:34:53

Titel: userAttr mit dynamischer Auswahlliste
Beitrag von: LordVoodoo am 08 März 2019, 08:34:53
Hallo zusammen,

ich habe bei mir Dummy-Devices erstellt, die bestimmte Musikplaylisten starten. Das hat soweit geklappt, um den korrekten Lautsprecher bei Aktivierung zu erwischen habe ich mir ein userAttr "device" erstellt.

Ich weiß, ich kann mit "userAttr device:Bad_Lautsprecher:Wohnzimmer_Soundbar" eine Auswahlliste für das Attribut erstellt. Kann ich das auch generisch machen, so dass ich alle Geräte anhand ihres Typs sehe, sinngemäß:

userAttr device:(list TYPE=YAMAHA_MC)

Vielen Dank für eure Hilfe.
Titel: Antw:userAttr mit dynamischer Auswahlliste
Beitrag von: Ellert am 08 März 2019, 19:02:45
Etwa so für die Befehlszeile {join(",",devspec2array("TYPE=YAMAHA_MC"))} siehe https://wiki.fhem.de/wiki/DevelopmentModuleAPI#devspec2array
Titel: Antw:userAttr mit dynamischer Auswahlliste
Beitrag von: jannis am 16 Dezember 2020, 14:36:18
Das von der Komandozeile funktioniert:
{join(",",devspec2array("TYPE=YAMAHA_MC"))}

Aber kann jemand den Perlcode von oben richtig in das userAttr einsetzen?

Folgendes ging nicht:
userAttr device:{join(",",devspec2array("TYPE=YAMAHA_MC"))}
... da bekommt man dann kein Device sondern z.B.
{join("
in der Auswahlliste angezeigt.

Und auch das geht nicht:
userAttr {"device:" . join(",",devspec2array("TYPE=YAMAHA_MC"))}
... da bekommt man nicht mal das Attribut "device" angeboten und demzufolge auch keine AUswahlliste.
Titel: Antw:userAttr mit dynamischer Auswahlliste
Beitrag von: amenomade am 17 Dezember 2020, 00:52:41
userAttr (addToDevAttrList) macht kein "eval" einer eventuellen Perl Funktion beim Parsing.

Meiner Meinung nach nicht möglich ohne ein Code Stück mit Benutzung von addToDevAttrList und ein notify oder DOIF o.ä.

Titel: Antw:userAttr mit dynamischer Auswahlliste
Beitrag von: jannis am 17 Dezember 2020, 12:21:45
Zitat von: amenomade am 17 Dezember 2020, 00:52:41
Meiner Meinung nach nicht möglich ohne ein Code Stück mit Benutzung von addToDevAttrList und ein notify oder DOIF o.ä.

Feine Sache, danke für den Anstoß.

{addToDevAttrList("DummyDevice", "device:" . join(",",devspec2array("TYPE=YAMAHA_MC")))}

Das einmalig ausgeführt auf der Befehlszeile liest alle Device in das userattr device ein. Kann sich die Liste im Laufe der Zeit ändern, müsste man manuell

oder automatisch beide Schritte über DOIF/AT/NOTIFY/... ausführen.