[GELÖST!] Perl: Iteration über alle definierten "Devices"

Begonnen von DocCyber, 07 März 2017, 16:00:18

Vorheriges Thema - Nächstes Thema

DocCyber

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?

Behandle die Menschen so, als wären sie, was sie sein sollten. Dadurch hilfst du ihnen zu werden, was sie sein können. (Goethe)


RPi-4B mit HM-CFG-LAN und viele weitere HM Komponenten, diverse Shellys, Tuya-Geräte, SMA und Solis Wechselrichter, Elgris EnergyManager, go-e Wallbox

DeeSPe

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
MAINTAINER: 22_HOMEMODE, 98_Hyperion, 98_FileLogConvert, 98_serviced

Als kleine Unterstützung für meine Programmierungen könnt ihr mir gerne einen Kaffee spendieren: https://buymeacoff.ee/DeeSPe

DocCyber

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?
Behandle die Menschen so, als wären sie, was sie sein sollten. Dadurch hilfst du ihnen zu werden, was sie sein können. (Goethe)


RPi-4B mit HM-CFG-LAN und viele weitere HM Komponenten, diverse Shellys, Tuya-Geräte, SMA und Solis Wechselrichter, Elgris EnergyManager, go-e Wallbox

CoolTux


my @monitored=devspec2array("(.*KontaktBadZ.*):FILTER=STATE!=closed");
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

DeeSPe

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.
MAINTAINER: 22_HOMEMODE, 98_Hyperion, 98_FileLogConvert, 98_serviced

Als kleine Unterstützung für meine Programmierungen könnt ihr mir gerne einen Kaffee spendieren: https://buymeacoff.ee/DeeSPe

DocCyber

@CoolTux, @DeeSPe

DAS habe ich gesucht!
Herzlichen Dank euch beiden!  :)
Behandle die Menschen so, als wären sie, was sie sein sollten. Dadurch hilfst du ihnen zu werden, was sie sein können. (Goethe)


RPi-4B mit HM-CFG-LAN und viele weitere HM Komponenten, diverse Shellys, Tuya-Geräte, SMA und Solis Wechselrichter, Elgris EnergyManager, go-e Wallbox