[patch] 02_RSS.pm - Layouts aus configDB lesen

Begonnen von betateilchen, 20 April 2014, 00:44:18

Vorheriges Thema - Nächstes Thema

betateilchen

Um zukünftig die Layouts für die RSS aus der configDB anstatt aus Layoutdateien 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 Layoutdatei in die configDB importiert werden.

configdb fileimport FHEM/<layoutDatei>.layout

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


Index: 02_RSS.pm
===================================================================
--- 02_RSS.pm (revision 5574)
+++ 02_RSS.pm (working copy)
@@ -62,13 +62,23 @@
   my $filename= $hash->{fhem}{filename};
   my $name= $hash->{NAME};

-  if(open(LAYOUT, $filename)) {
-    my @layout= <LAYOUT>;
-    $hash->{fhem}{layout}= join("", @layout);
-    close(LAYOUT);
+  if($attr{global}{configfile} eq 'configDB') {
+    my $layout = _cfgDB_Readfile($filename);
+    if(!(defined($layout))) {
+      $hash->{fhem}{layout}= ("text 0.1 0.1 'Layout definition not found in database!'");
+      Log 1, "RSS $name: Layout $filename not found in database";
+    } else {
+      $hash->{fhem}{layout} = $layout;
+    }
   } else {
-    $hash->{fhem}{layout}= ();
-    Log 1, "RSS $name: Cannot open $filename";
+    if(open(LAYOUT, $filename)) {
+      my @layout= <LAYOUT>;
+      $hash->{fhem}{layout}= join("", @layout);
+      close(LAYOUT);
+    } else {
+      $hash->{fhem}{layout}= ();
+      Log 1, "RSS $name: Cannot open $filename";
+    }
   }


-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

Dr. Boris Neubert

Globaler Moderator, Developer, aktives Mitglied des FHEM e.V. (Marketing, Verwaltung)
Bitte keine unaufgeforderten privaten Nachrichten!

betateilchen

-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

betateilchen

Hallo Boris,

Du hast versehentlich den patch aus der email eingecheckt, die ich Dir vorab geschickt hatte, anstatt den Patch hier aus dem Thread. Das führt dazu, dass RSS nicht mehr funktioniert, weil die Lesefunktion nicht mehr "_cfgDB_Readlayout" sondern "_cfgDB_Readfile" heißt.

Dein Einverständnis voraussetzend, habe ich das eben als Vorab-Korrektur eingecheckt und auch gleich die seit gestern existierende neue Prüfung bzgl. configDB eingebaut.


Index: 02_RSS.pm
===================================================================
--- 02_RSS.pm (revision 5588)
+++ 02_RSS.pm (working copy)
@@ -62,8 +62,8 @@
   my $filename= $hash->{fhem}{filename};
   my $name= $hash->{NAME};

-  if($attr{global}{configfile} eq 'configDB') {
-    my $layout = _cfgDB_Readlayout($filename);
+  if(configDBUsed()) {
+    my $layout = _cfgDB_Readfile($filename);
     if(!(defined($layout))) {
       $hash->{fhem}{layout}= ("text 0.1 0.1 'Layout definition not found in database!'");
       Log 1, "RSS $name: Layout $filename not found in database";
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!