FHEM Forum

FHEM => Sonstiges => Thema gestartet von: betateilchen am 20 April 2014, 00:36:02

Titel: [patch] 95_holiday.pm - holiday-Daten aus configDB lesen
Beitrag von: betateilchen am 20 April 2014, 00:36:02
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);
Titel: Antw:[patch] 95_holiday.pm - holiday-Daten aus configDB lesen
Beitrag von: rudolfkoenig am 20 April 2014, 11:28:16
Habs eingecheckt.
Titel: Antw:[patch] 95_holiday.pm - holiday-Daten aus configDB lesen
Beitrag von: betateilchen am 20 April 2014, 11:39:14
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.