userAttr mit dynamischer Auswahlliste

Begonnen von LordVoodoo, 08 März 2019, 08:34:53

Vorheriges Thema - Nächstes Thema

LordVoodoo

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.

Ellert

#1
Etwa so für die Befehlszeile {join(",",devspec2array("TYPE=YAMAHA_MC"))} siehe https://wiki.fhem.de/wiki/DevelopmentModuleAPI#devspec2array

jannis

#2
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.
+ + + Gibt es eigentlich hier Smarthome-Enthusiasten aus + + +
Norddeutschland / Nordfriesland / Bredstedt / Husum oder Niebül?

amenomade

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.ä.

Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

jannis

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

  • das attr löschen
  • obigen Befehl erneut über die Befehlszeile eingeben

oder automatisch beide Schritte über DOIF/AT/NOTIFY/... ausführen.
+ + + Gibt es eigentlich hier Smarthome-Enthusiasten aus + + +
Norddeutschland / Nordfriesland / Bredstedt / Husum oder Niebül?