[patch] 95_holiday.pm - holiday-Daten aus configDB lesen

Begonnen von betateilchen, 20 April 2014, 00:36:02

Vorheriges Thema - Nächstes Thema

betateilchen

Um zukünftig die Daten für das holiday-Modul aus der configDB anstatt aus Konfigurationsdateien lesen zu können, bedarf es ein paar marginaler Änderungen in der Moduldatei.

Die Syntax und Verwendung des Moduls ändert sich dadurch nicht, es muss lediglich die holiday-Datei einmalig in die configDB importiert werden.

configdb fileimport FHEM/<holidayFile>.holiday

Warum? Sukzessive sollen alle individuell angelegten Konfigurationsdateien (.holiday, .layout, .gplot) in die configDB verlagert können, was die Datensicherung erheblich vereinfacht.


Index: 95_holiday.pm
===================================================================
--- 95_holiday.pm (revision 5574)
+++ 95_holiday.pm (working copy)
@@ -61,10 +61,21 @@
   }

   my $fname = $attr{global}{modpath} . "/FHEM/" . $hash->{NAME} . ".holiday";
-  return "Can't open $fname: $!" if(!open(FH, $fname));
+  my @holidayfile;
+  if($attr{global}{configfile} eq 'configDB') {
+    my $hfile = _cfgDB_Readfile($fname);
+    return "Holiday file not found in database." unless defined $hfile;
+    @holidayfile = split("\n", $hfile);
+  } else {
+    return "Can't open $fname: $!" if(!open(FH, $fname));
+    @holidayfile = <FH>;
+    close(LAYOUT);
+  }
+
   my @foundList;

-  while(my $l = <FH>) {
+#  while(my $l = <FH>) {
+  foreach my $l (@holidayfile) {
     next if($l =~ m/^\s*#/);
     next if($l =~ m/^\s*$/);
     chomp($l);
@@ -171,7 +182,7 @@
     push @foundList, $found if($found);

   }
-  close(FH);
+#  close(FH);

   push @foundList, "none" if(!int(@foundList));
   my $found = join(", ", @foundList);
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

rudolfkoenig


betateilchen

Danke schön :)

Etwas komplizierter wird das Ganze in den Fällen, wo Dateien auch aus einem Modul heraus geschrieben werden (z.B. bei gplot Files aus SVG) da muss ich noch sehr viel nachdenken, wie man das am sinnvollsten kapselt.

Aber im Moment sind erstmal die 99er-Dateien in Arbeit.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!