[gelöst] Liste aller Readings im DOIF?

Begonnen von gestein, 17 Februar 2022, 20:06:29

Vorheriges Thema - Nächstes Thema

gestein

Hallo,

ich müsste alle Readings eines DOIFs durchgehen.

Dazu hätte ich sowas hier gefunden: https://forum.fhem.de/index.php/topic,117844.msg1122741.html#msg1122741
foreach my $readingname (keys %{$hash->{READINGS}) {
# loop über readings mit $readingname zur Weiterverarbeitung
  }


Im Def-Teil meines DOIFs gibt es die Variable $hash aber natülich nicht.
https://forum.fhem.de/index.php/topic,126259.msg1208811.html#msg1208811

Wie geht man im DOIF alle Readings durch?

Danke für jeden Tipp.
lg, Gerhard

Otto123

Hi,

für die FHEM Kommandozeile, anstatt fuehler1 trägst Du den Namen Deines DOIFs ein.
{my $d="fuehler1";;my $hash = $defs{$d};;my $readings = $hash->{READINGS};;my $message="{ ";;foreach my $a ( keys %{$readings} ) {my $val=ReadingsVal($d,$a,"error");;$message .= toJSON($a)." : ".toJSON($val)." ," };;chop($message);;$message.="}"}

Den Kram ein Json draus zu machen lässt Du natürlich weg :)

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

gestein

Hallo Otto,

Das mit dem "my $hash = $defs{$d}" hatte ich in Deiner Antwort übersehen bzw. nicht verrstanden.

Vielen Dank!
lg, Gerhard

gestein

Hallo,

ganz ist es leider noch nicht gelöst.

Zwar könnte ich nun auf den Hash zugreifen, aber leider kennt DOIF das "$defs" nicht.
Ich nehme an, das ist eine fhem System-Variable. Oder?

lg, Gerhard

Damian

#4
Es handelt sich um eine globale Variable aus main. Ich bin kein Freund davon, dass Benutzer mit internen Variablen hantieren - aber das scheint in FHEM üblich zu sein.

Im DOIF kannst du auf Variablen aus main mit :: zugreifen, hier also mit $::defs

Unabhängig davon können interne Readings, die vom Modul generiert wurden, morgen wieder anders aussehen. ;)
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

gestein

#5
Hallo Damian,

Ich bin auch kein Freund davon.
Ich muss nur immer wieder die Liste der im DOIF vorhandenen Readings durchgehen um Berechnungen anzustellen - wie auch immer das am einfachsten geht.

Danke für den Hinweis.

lg, Gerhard