Vorschlag: Funktion zum einfachen Lesen von Informationen aus %defs

Begonnen von betateilchen, 22 August 2014, 13:17:03

Vorheriges Thema - Nächstes Thema

betateilchen

Manchmal sucht man bestimmte Daten aus mehreren Devices, um damit weiterzuarbeiten.
Dazu habe ich mir folgende kleine Funktion gebaut, die ich zur Zeit in meiner 99_myUtils.pm eingebaut habe:


sub defInfo($;$) {
  my ($search,$internal) = @_;
  $internal = 'DEF' unless defined($internal);
  my @ret;
  my @etDev = devspec2array($search);
  foreach my $d (@etDev) {
    next unless $d;
    push @ret, $defs{$d}{$internal};
  }
  return @ret;
}


Die Funktion wird z.B. so aufgerufen:


my @gplotFiles = defInfo('TYPE=SVG','GPLOTFILE');


Man erhält als Rückgabe ein array, das die Namen aller in der aktuellen Konfiguration verwendeten gplot-Dateien enthält.
Der erste Parameter folgt der devspec Logik.
Der zweite Aufrufparameter ist optional, fehlt dieser, wird  DEF ausgelesen.

In der configDB verwende ich diese Vorgehensweise, um bei der Migration (beispielsweise) alle verwendeten gplot-Files zu ermitteln und diese automatisch in die Datenbank zu importieren.

Mein Vorschlag wäre, diese Funktion entweder in die 99_Utils.pm oder sogar in die fhem.pl aufzunehmen, da sie an vielen Stellen die Arbeit erleichtern kann.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

hexenmeister

Maintainer: MQTT_GENERIC_BRIDGE, SYSMON, SMARTMON, systemd_watchdog, MQTT, MQTT_DEVICE, MQTT_BRIDGE
Contrib: dev_proxy

rudolfkoenig


betateilchen

super, danke.

Dann kann ich ja morgen abend testen, ob das (neue) update der 99_Utils.pm korrekt funktioniert, falls diese Datei in der configDB abgelegt ist :)
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!