Moin liebes Forum,
ich brauche etwas Hilfe.
Ziel: Alle Devices innerhalb eines Raumes innerhalb von PERL (99_myUtils) auslesen.
Wenn ich in die Kommandozeile:
list room=Preisvergleich
mache, erscheinen alle Devices innerhalb dieses Raumes, super.
Genau diese Devices möchte ich innerhalb meiner 99_myUtils in ein Array einlesen und dann weiterverarbeiten.
Die Frage ist, wie stelle ich dies an? ;D
Ich habe keine Ahnung, wonach ich genau suchen soll.
Gruß
Mathze
Schau mal nach devspec2array().
Wunderbar, genau das habe ich gesucht, danke!
Gruß
Mathze
Ich brauche leider noch mal eure Unterstützung.
Ich möchte mir alle Devices mit dem TYPE=TelegramBot anzeigen lassen
Wenn ich:
list TYPE=TelegramBot NAME
eingebe, bekomme ich die Devicenamen, die den TYPE=TelegramBot haben
Dazu habe ich nun in meine myUtils folgendes reingebaut:
foreach $devicename (devspec2array("TYPE=TelegramBot NAME"))
{ @array[$i] = $devicename;
$i = $i+1;
}
Ich glaube hier ist der Ausdruck im devspec2array nicht ganz richtig, anstatt des erwartenden Namens "Telegram" schreibt der gute nur eine "1" in das Array.
Gruß
Mathze
Lass das NAME weg. Woher kommt das?
Aus der commandref. (oder ich verstehe die Beispiele falsch)
https://fhem.de/commandref_DE.html#devspec
list TYPE=FS20 STATE
Wenn ich das NAME weglasse, dann bekomme ich als Ergebnis ein "list" vom Device.
Ich möchte ja aber gar nicht ein List haben, sondern nur dem Namen von den Device / Devices.
Gruß
Mathze
Hallo Mathze,
in der WIKI steht:
ZitatDie Funktion devspec2array() gibt eine Array mit Definitionsnamen zurück
Die Funktion gibt ausschließlich den Namen zurück.
Deine foreach-Schleife bedarf keines $i - sie läuft automatisch bis zum Ende durch.
foreach my $devicename(devspec2array("TYPE=TelegramBot")){return $devicename}
...sollte dir x-mal den Devicenamen zurückgeben.
Gruß Jens
p.s. Ich sehe gerade, dass ess dir nur ein Array geht. Dann sollte
my @devicename = devspec2array("TYPE=TelegramBot")
genügen.
Zitat von: dirigent am 13 September 2018, 12:36:14
...
in der WIKI steht: Die Funktion gibt ausschließlich den Namen zurück.
...
Ihr habt beide Recht.
Ich habe es einfach überlesen...
Auszug aus dem Wiki
...Die Funktion devspec2array() gibt eine Array mit Definitionsnamen zurück die...
Danke für eure Hilfe :)
Gruß
Mathze
Um das noch klar zu stellen: Der commandref Abschnitt behandelt zwar devspec, das genannte Beispiel ist aber ein list Beispiel, welches devspec verwendet.