FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: jannis am 23 Februar 2020, 11:33:20

Titel: (Gelöst) dynamisches Dropdown mit setList
Beitrag von: jannis am 23 Februar 2020, 11:33:20
Moin,

ich habe Devices: Steckdose_01, Steckdose_02, ...
In einem anderen Device möchte ich die Steckdosen in einem Dropdown zur Auswahl anbieten.

Was natürlich funktioniert ist:
define Schalter dummy
attr di_Schalter setList Steckdose:wählen...,Steckdose_01,Steckdose_02,Steckdose_03,Steckdose_04



Mit der Zeit kommen aber noch viele Steckdosen hinzu. Wie könnte man die Steckdosen dynamisch in das Dropdown packen?


attr di_Schalter setList Steckdose:wählen...,Steckdose_.*


geht leider nicht.
Titel: Antw:dynamisches Dropdown mit setList
Beitrag von: jannis am 23 Februar 2020, 18:24:48
ich hatte jetzt noch die Idee, über Perl-Code setList zu befüllen:

attr di_Schalter setList {"Steckdose:wählen...,Steckdose_01,Steckdose_02,Steckdose_03,Steckdose_04"}

... aber geht so leider auch nicht direkt im Device.

Eines fällt mir nach längerem Nachdenken  noch ein:
den gesamten "attr ... setList"-Befehl in Perl erzeugen, sobald eine neue Steckdose angelegt wird ... das könnte per notify erfolgen, nur müsste man dann eine Liste aller Steckdosen in Perl in ein array einlesen. Wie würde das dynamisch gehen?
Titel: Antw:dynamisches Dropdown mit setList
Beitrag von: jannis am 23 Februar 2020, 18:47:05
Lösung gefunden:

devspec2array("Steckdose_.*");

so einfach  :)

Jetzt muss ich nur noch rausbekommen, wie man in Perl durch das Array itteriert ... bei php wüsste ich es, bei perl bin ich neu ... aber ich denke, das finde ich innerhalb 10 Minuten raus ;) ... hoffentlich. Vielleicht kann hier ja auch jemand die "Profi-Lösung" hinschreiben :)
Titel: Antw:dynamisches Dropdown mit setList
Beitrag von: jannis am 23 Februar 2020, 19:15:10
hat fast hingehaun mit den 10 Minuten:

sub alleSteckdosen()
{
my @devices = devspec2array(".*Steckdose_..");
        my $liste = "";

for my $device (@devices)
        {
           $liste = "$liste,$device";
}
return $liste;
}


... gelöst ... danke fürs Zuhören :)
Titel: Antw:(Gelöst) dynamisches Dropdown mit setList
Beitrag von: Beta-User am 23 Februar 2020, 19:42:17
Zwei Tipps noch:

Wenn's nicht grade ein Array ist:
$liste .= ",$device";

Für ein Array: $liste= join(",",@devices);
Titel: Antw:(Gelöst) dynamisches Dropdown mit setList
Beitrag von: jannis am 23 Februar 2020, 19:46:28
danke