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);
Habs eingecheckt.
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.