FHEM Forum

FHEM => Automatisierung => DOIF => Thema gestartet von: gestein am 17 Februar 2022, 20:06:29

Titel: [gelöst] Liste aller Readings im DOIF?
Beitrag von: gestein am 17 Februar 2022, 20:06:29
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 (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 (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
Titel: Antw:Liste aller Readings im DOIF?
Beitrag von: Otto123 am 17 Februar 2022, 20:49:41
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
Titel: Antw:Liste aller Readings im DOIF?
Beitrag von: gestein am 17 Februar 2022, 21:16:52
Hallo Otto,

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

Vielen Dank!
lg, Gerhard
Titel: Antw:[gelöst] Liste aller Readings im DOIF?
Beitrag von: gestein am 18 Februar 2022, 09:00:35
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
Titel: Antw:[gelöst] Liste aller Readings im DOIF?
Beitrag von: Damian am 18 Februar 2022, 09:08:05
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. ;)
Titel: Antw:[gelöst] Liste aller Readings im DOIF?
Beitrag von: gestein am 18 Februar 2022, 09:21:41
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