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.
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?
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 :)
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 :)
Zwei Tipps noch:
Wenn's nicht grade ein Array ist:
$liste .= ",$device";
Für ein Array: $liste= join(",",@devices);
danke