Alle attr von Devices auslesen

Begonnen von boeho, 18 Oktober 2016, 13:23:25

Vorheriges Thema - Nächstes Thema

boeho

Hallo,
ich versuche in meinem 99_myUtil.pm alle Devices vom Typ dummy mit al seinen attr zu lesen und in eine Datei zu schreibe.
ich bekomme im LOG den Fehler:
'Type of argument to each on reference must be unblessed hashref or arrayref at ./FHEM/99_myUtils.pm line 1206.'
Hier mal dazu mein Perlversuch:

foreach my $dev (sort keys %defs) {
if ( $defs{$dev}{TYPE} eq "dummy" ) {
my $output = "define $dev $defs{$dev}{TYPE} $defs{$dev}{DEF}\n";
while ( my ($key, $value) = each($attr{$dev}) ) { ### hier passiert es
$output .= "attr $dev $key $value\n";
}
print OUTdef "$output\n";
my $devState = Value("$dev");
my $zeile_set= "set $dev $devState";
print OUTset "$zeile_set\n";
}
}

Laut Syntax braucht each ein Hash und diese Syntax geht wohl nur in älteren Perl.
Kann mir jemand helfen, wie es richtig sein muss?
Wo findet man denn eine Beschreibung zu solchen Dingen wie %defs und sicher noch viele anderen????
Schon mal Dank an meine Retter.

Hans Franz

#1
Meine Perlverion ist wohl zu alt, um es nachzustellen, aber versuch es mal so:
while ( my ($key, $value) = each %{$attr{$dev}} )

Gruß
Hans
Raspi
CUL, Nano-CUL
FHT8V, FHT80B, S300TH
WM1000WZ, ELRO
LW12, LD382,DS18B20

boeho

Es rennt und alles richtig.
Nochmals Dank.
Hast Du einen Lnk wo man etwas über die FHEM Hashes lesen kann???
Gruß

Hans Franz

Schön das es klappt. Als Quelle kenne ich auch nur den Code der Module.

Gruß
Hans
Raspi
CUL, Nano-CUL
FHT8V, FHT80B, S300TH
WM1000WZ, ELRO
LW12, LD382,DS18B20

JoWiemann

Jörg Wiemann

Slave: RPi B+ mit 512 MB, COC (868 MHz), CUL V3 (433.92MHz SlowRF); FHEMduino, Aktuelles FHEM

Master: CubieTruck; Debian; Aktuelles FHEM

boeho

Dank Euch beiden. Es ist genau was ich meinte.
Gruß

Loredo

Hat meine Arbeit dir geholfen? ⟹ https://paypal.me/pools/c/8gDLrIWrG9

Maintainer:
FHEM-Docker Image, https://github.com/fhem, Astro(Co-Maintainer), ENIGMA2, GEOFANCY, GUEST, HP1000, Installer, LaMetric2, MSG, msgConfig, npmjs, PET, PHTV, Pushover, RESIDENTS, ROOMMATE, search, THINKINGCLEANER