Hallo zusammen,
Aus der Gesamtheit der definierten FHEM-Devices möchte ich gern einzelne herausfiltern, die bestimmten Kriterien genügen. Zum Beispiel alle Geräte, deren Namen mit hm_device_ beginnen.
Da ich Perl einsetzen möchte, sollte das mit einer foreach-Schleife gehen.
Nur - über was muss ich eigentlich iterieren?
Wie müsste die Schleifenbedingung aussehen?
Zitat von: DocCyber am 07 März 2017, 16:00:18
Hallo zusammen,
Aus der Gesamtheit der definierten FHEM-Devices möchte ich gern einzelne herausfiltern, die bestimmten Kriterien genügen. Zum Beispiel alle Geräte, deren Namen mit hm_device_ beginnen.
Da ich Perl einsetzen möchte, sollte das mit einer foreach-Schleife gehen.
Nur - über was muss ich eigentlich iterieren?
Wie müsste die Schleifenbedingung aussehen?
Thema devspec!
Dazu mal belesen und Du brauchst kein Iterieren.
Gruß
Dan
ZitatThema devspec!
Hi Dan,
danke für deinen Input.
Nun will ich aber nicht auf der FHEM Kommandozeile arbeiten, sondern ich brauche die Werte in Perl, um damit weiterarbeiten zu können.
Kann ich deinen Hinweis auch mit Perl umsetzen?
Und wenn ja, wie?
my @monitored=devspec2array("(.*KontaktBadZ.*):FILTER=STATE!=closed");
Zitat von: DocCyber am 07 März 2017, 17:49:29
Hi Dan,
danke für deinen Input.
Nun will ich aber nicht auf der FHEM Kommandozeile arbeiten, sondern ich brauche die Werte in Perl, um damit weiterarbeiten zu können.
Kann ich deinen Hinweis auch mit Perl umsetzen?
Und wenn ja, wie?
Aber klar! (FHEM ist doch in Perl) 8)
Schau Dir die Funktion devspec2array an.
Z.B.:
my @devs = devspec2array("TYPE=dummy:FILTER=reading=wert:FILTER=reading2!=wert");
Damit hast Du in dem Array devs alle Devices die von TYPE ein dummy sind, ein Reading namens reading mit dem Wert wert haben und Reading reading2 haben welches nicht den Wert wert hat.
Gruß
Dan
P.S. FILTER akzeptiert auch Internals oder Attribute.
@CoolTux, @DeeSPe
DAS habe ich gesucht!
Herzlichen Dank euch beiden! :)