FHEM Forum

FHEM => Frontends => RSS => Thema gestartet von: betateilchen am 20 April 2014, 00:44:18

Titel: [patch] 02_RSS.pm - Layouts aus configDB lesen
Beitrag von: betateilchen am 20 April 2014, 00:44:18
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";
+    }
   }


Titel: Antw:[patch] 02_RSS.pm - Layouts aus configDB lesen
Beitrag von: Dr. Boris Neubert am 20 April 2014, 11:07:12
eingecheckt!
bn
Titel: Antw:[patch] 02_RSS.pm - Layouts aus configDB lesen
Beitrag von: betateilchen am 20 April 2014, 12:25:38
Danke!
Titel: Antw:[patch] 02_RSS.pm - Layouts aus configDB lesen
Beitrag von: betateilchen am 21 April 2014, 11:04:03
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";