[02_RSS.PM] Moduländerungsvorschlag.

Begonnen von Icebear, 23 April 2014, 22:35:49

Vorheriges Thema - Nächstes Thema

Icebear

Hallo Boris,

wie kurz mit Betateilchen angerissen würde ich eine pop/push funktion gut finden, damit man, gerade bei conditions, den Zustand von Color / Turtle Pos, Font usw usw sichern und wiederherstellen kann.
Betateilchen hat im Diskussionsthread zu seinem Workshop schon was vorbereitet. Leider würde die änderung verloren gehen wenn ich die per diff einbinde wenn ein update kommt.

Desweiteren haben vermutlich auch andere das Problem wenn man ein Hintergrundbild benutzt das man natürlich verschiedene helligkeiten im Bild hat. Man kann zwar vorab einiges raussuchen was dann zur Schrift und Farbe passt aber ich habe gesehen das es die möglichkeit gibt Farben mit einem Alphablend Value zu versehen. Wenn ich das richtig verstehe könnte ich also den Text z.b. mit einer dunklen Farbe hinterlegen die z.b. zu 50% durchsichtig ist. Bei dunklen bildern sieht mans kaum und bei hellen ist der Text trotzdem lesbar.
Kannst ja mal schauen ob die funktion das hergibt.

$index = $img->alphaColor(@args,$alpha)

    Creates an alpha color. You may pass either an (r,g,b) triple or a symbolic color name, followed by an integer indicating its opacity. The opacity value ranges from 0 (fully opaque) to 127 (fully transparent).

Danke.
ps. die Farben werden bei dir immer als RGB value übergeben. Würden die Colornames auch unterstützt oder kommt dann ein Fehler ?

Liebe grüße aus Friedrichsfeld
Icebear
Raspberry PI mod B (Wheezy), Fhem 5.4, CUL868, CUL433 , RfxTrx, HM-USB-CFG2, Wlan, HomeEasy, IT, FS20, TFA, HomeMatic, Oregon Scientific, HMLand auf Fritzbox
Raspberry PI mod B (RaspBMC)

betateilchen

#1
Zitat von: Icebear am 23 April 2014, 22:35:49
ps. die Farben werden bei dir immer als RGB value übergeben. Würden die Colornames auch unterstützt oder kommt dann ein Fehler ?

Die Farben müssen als RGB übergeben werden, aber sie können per perlSpecial ermittelt werden. Wenn Du also eine Funktion in Deine 99_myUtils baust, die Deine benötigten Farbnamen in RGB überträgt, kannst Du im Layout einfach diese Funktion aufrufen.

Beispiel für die 99_myUtils.pm


sub findColor($) {
  my $c = @_;
  return "FF0000" if $c eq 'rot';
  return "FFFF00" if $c eq 'uringelb';
}


Im RSS Layout kannst Du dann schreiben:

rgb {findColor('uringelb')}

Wahrscheinlich findet sich irgendwo im www auch schon eine fertige Funktion, die das kann - aber es ist auch schnell selbstgestrickt, da man ja ohnehin nur eine überschaubare Anzahl Farben in den Layouts verwenden wird.

http://www.farbtabelle.at/websichere-farben/
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

Icebear

Hi Betateilchen.
Ich meinte das bezogen auf die GD library die anstatt RGB wohl auch Colornames unterstützt.
Grüße
Raspberry PI mod B (Wheezy), Fhem 5.4, CUL868, CUL433 , RfxTrx, HM-USB-CFG2, Wlan, HomeEasy, IT, FS20, TFA, HomeMatic, Oregon Scientific, HMLand auf Fritzbox
Raspberry PI mod B (RaspBMC)

betateilchen

ich weiss schon, was Du meinst.

Nochmal: NEIN das geht nicht. Im RSS Layout wird immer ein RGB Farbwert angegeben. Und das ist auch gut so und ich wäre gegen jegliche Änderung an dieser Tatsache.

-----------------------
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

Hallo Icebear,
Zitat von: Icebear am 23 April 2014, 22:35:49
Desweiteren haben vermutlich auch andere das Problem wenn man ein Hintergrundbild benutzt das man natürlich verschiedene helligkeiten im Bild hat. Man kann zwar vorab einiges raussuchen was dann zur Schrift und Farbe passt aber ich habe gesehen das es die möglichkeit gibt Farben mit einem Alphablend Value zu versehen. Wenn ich das richtig verstehe könnte ich also den Text z.b. mit einer dunklen Farbe hinterlegen die z.b. zu 50% durchsichtig ist. Bei dunklen bildern sieht mans kaum und bei hellen ist der Text trotzdem lesbar.
Kannst ja mal schauen ob die funktion das hergibt.

$index = $img->alphaColor(@args,$alpha)

    Creates an alpha color. You may pass either an (r,g,b) triple or a symbolic color name, followed by an integer indicating its opacity. The opacity value ranges from 0 (fully opaque) to 127 (fully transparent).

Ich kenne die Problematik: in meinem Bilderrahmen laufen Hintergrundbilder, und ich habe manchmal dunklen Himmel und manchmal hellen Himmel auf den Bildern und auf dem hellen Himmel kann ich die überblendete Schrift nicht lesen.

Ich habe aber nicht verstanden, wie der Alpha-Kanal dabei hilft. Kannst Du mir das bitte erklären?

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

betateilchen

Hallo Boris,

es geht im Prinzip darum, dass man für einen auszugebenden Text quasi die "passende" Hintergrundfarbe automatisch berechnet und dann den Hintergrundbereich, den der Text im Image einnehmen wird, mit dieser Farbe zu füllen.

Beispielerklärung: http://www.perlmonks.org/bare/?node_id=500726
-----------------------
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

Hallo,

ich schnalle das nicht. Ich verstehe auch nicht, was der Poster in dem angeführten Perlmonks-Thread will.

Der Hintergrund ist doch statisch vorgegeben, nicht wahr? Z.B. eine gefärbte Fläche oder ein Foto.

Wenn ein Text in rot darauf geschrieben wird, werden rote Pixel auf den Hintergrund aufgebracht. Mit dem Alpha-Kanal können die roten Pixel mehr oder weniger transparent gemacht werden, so daß der Hintergrund mehr oder weniger durchscheint. Habe ich das richtig verstanden?

Falls ja, verstehe ich nicht, wie das die Lesbarkeit des Textes verbessern soll.

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

Icebear

Hi Boris,

hier ein einfaches Beispiel.

Wolkenhintergrund darauf den Text

einmal nur Text einmal mit (in dem fall Grauen Rahmen, 50% transparent)
Ich hoffe du verstehst dann was gemeint ist.

Wie in meinem Fall z.b. habe ich Rahmen für die diversen Räume und in den Rahmen die Daten. Hintergrund ist immer ein wechselndes Bild.
Ich würde also den Rahmen füllen, per Alpha den hintergrund transparent machen so daß man immer noch das Bild sieht. Bei dunklen Flächen fällts kaum auf, bei Hellen flächen im Hintergrund wird durch den nur teilweise Transparenten hintergrund die Schrift aber immer noch gut lesbar.
Grüße aus Friedrichsfeld
Raspberry PI mod B (Wheezy), Fhem 5.4, CUL868, CUL433 , RfxTrx, HM-USB-CFG2, Wlan, HomeEasy, IT, FS20, TFA, HomeMatic, Oregon Scientific, HMLand auf Fritzbox
Raspberry PI mod B (RaspBMC)

betateilchen

#8
ich bin an dem Alpha-Thema grade dran, gebt mir mal noch ein bisschen Zeit :)

(http://up.picr.de/18095240td.png)

@Icebear: Es geht um das grün unterlegte Rechteck am rechten Bildrand, oberhalb des SVG Plots - richtig?
-----------------------
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

Hallo Icebear und Betateilchen,

ich habe nun verstanden, was es werden soll. Ich habe auch nichts gegen einen Patch einzuwenden.

Wenn ich es machen würde, würde ich rgb erweitern, daß es entweder 6 oder 8 Hexzeichen nimmt. Bei 8 Hexzeichen kodieren dann die beiden letzten den Alpha-Kanal.

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

betateilchen

Zitat von: Dr. Boris Neubert am 27 April 2014, 08:46:50
Wenn ich es machen würde, würde ich rgb erweitern, daß es entweder 6 oder 8 Hexzeichen nimmt. Bei 8 Hexzeichen kodieren dann die beiden letzten den Alpha-Kanal.

Genau so habe ich es hier umgesetzt. Patch ist in Arbeit, ich muss nur noch den Fall abfangen, dass ein ungültiger Alpha-Wert (> 7F) übergeben wird.
-----------------------
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

#12
here we go...



Aufgabenstellung

Angenommen, wir haben folgenden RSS:

(http://up.picr.de/18096589jo.png)

und folgendes Hintergrundbild:

(http://up.picr.de/18096594ap.jpg)

Das ergibt nach der bisherigem RSS-Funktionsweise folgendes Ergebnis:

(http://up.picr.de/18096590bd.png)

Nun können wir zwischen das Hintergrundbild und den Text ein farbiges Rechteck quasi als "Zwischenfolie" legen, um den Text einfacher lesbar zu machen. Am beispiel einer roten Folie sieht das Ganze so aus:

(http://up.picr.de/18096591ya.png)

Noch interessanter wird es natürlich, wenn man eine unauffälligere Farbe verwendet, die ihre Wirkung trotzdem voll ausspielt:

(http://up.picr.de/18096592fd.png)




Umsetzung:

Um das Ergebnis zu erreichen, können ab sofort die rgb-Befehle  im RSS Layout um einen vierten Hex-Wert ergänzt werden, der den Alpha-Wert für die Transparenz darstellt.

Für das "rote" Beispiel oben:


### alpha 0x40 rot
font /usr/share/fonts/truetype/msttcorefonts/arial.ttf

rgb "FF000040"
rect 45 45 755 555 1

rgb "FFFFFF"
thalign "justified"
textbox 50 50 700 "In einem..."


Für das "graue" Beispiel oben:


### alpha 0x40 grau
font /usr/share/fonts/truetype/msttcorefonts/arial.ttf

rgb "1C1C1C40"
rect 45 45 755 555 1

rgb "FFFFFF"
thalign "justified"
textbox 50 50 700 "In einem..."





Hinweise:


  • Die Angabe des vierten Parameters ist optional. Fehlt dieser, wird alpha = 0 gesetzt und die Anzeige erfolgt wie bisher.
    Die Lösung ist somit vollständig abwärtskompatibel zu bestehenden Layoutdefinitionen.
  • Die zulässigen Werte für alpha sind 0x00 bis 0x7F Alle Werte größer als 0x7F werden auf 0x7F begrenzt.
  • Zusätzliche Softwarekomponenten müssen nicht installiert werden.




Technische Umsetzung:

Im Modul 02_RSS muss lediglich die Funktion RSS_color() durch diesen Inhalt ersetzt werden:


sub RSS_color {
  my ($S,$rgb)= @_;
  my $alpha = 0;
  my @d= split("", $rgb);
  if(length($rgb) == 8) {
    $alpha = hex("$d[6]$d[7]");
    $alpha = ($alpha < 127) ? $alpha : 127;
  }
  return $S->colorAllocateAlpha(hex("$d[0]$d[1]"),hex("$d[2]$d[3]"),hex("$d[4]$d[5]"),$alpha);
}


Irgendjemand  ;) müsste bitte die neue Funktionalität noch für commandref dokumentieren.




Hier kommt ein kompletter patch-Vorschlag, der auch schon die von Rudi in diesem Thread angestrebte Vereinheitlichung generischer Lese-/Schreibfunktionen für Konfigurationsdateien enthält, soweit sie sich auf configDB bezieht.

Edit: --- patch entfernt, neuer patch im nächsten Beitrag ---
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

betateilchen

#13
Ich hätte da übrigens gleich noch eine Änderung, um die Begrenzung auf JPG für die Hintergrundbilder aufzuheben:



if(opendir(BGDIR, $bgdir)){
my @bgfiles= grep {$_ !~ /^\./} readdir(BGDIR);
closedir(BGDIR);
# get item number
if($#bgfiles>=0) {
if($bgnr > $#bgfiles) { $bgnr= 0; }
$defs{$name}{fhem}{bgnr}= $bgnr;
my $bgfile= $bgdir . "/" . $bgfiles[$bgnr];
my $filetype =(split(/\./,$bgfile))[-1];
my $bg= newFromGif  GD::Image($bgfile) if $filetype eq 'gif';
my $bg= newFromJpeg GD::Image($bgfile) if $filetype =~ m/^jp/; # for jpg and jpeg
my $bg= newFromPng  GD::Image($bgfile) if $filetype eq 'png';


Die tatsächliche Änderung besteht nur aus den letzten 4 Zeilen des Codeschnipsels.

Hier der komplette Patch:


Index: 02_RSS.pm
===================================================================
--- 02_RSS.pm (revision 5674)
+++ 02_RSS.pm (working copy)
@@ -67,12 +67,12 @@
   my $name= $hash->{NAME};

   if(configDBUsed()) {
-    my $layout = _cfgDB_Readfile($filename);
-    if(!(defined($layout))) {
+    my @layout = cfgDB_FileRead($filename);
+    if(!(int(@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;
+      $hash->{fhem}{layout} = join("\n", @layout);
     }
   } else {
     if(open(LAYOUT, $filename)) {
@@ -263,11 +263,15 @@
   return($x,$y);
}

-sub
-RSS_color {
+sub RSS_color {
   my ($S,$rgb)= @_;
+  my $alpha = 0;
   my @d= split("", $rgb);
-  return $S->colorResolve(hex("$d[0]$d[1]"),hex("$d[2]$d[3]"),hex("$d[4]$d[5]"));
+  if(length($rgb) == 8) {
+    $alpha = hex("$d[6]$d[7]");
+    $alpha = ($alpha < 127) ? $alpha : 127;
+  }
+  return $S->colorAllocateAlpha(hex("$d[0]$d[1]"),hex("$d[2]$d[3]"),hex("$d[4]$d[5]"),$alpha);
}

sub
@@ -644,7 +648,10 @@
if($bgnr > $#bgfiles) { $bgnr= 0; }
$defs{$name}{fhem}{bgnr}= $bgnr;
my $bgfile= $bgdir . "/" . $bgfiles[$bgnr];
- my $bg= newFromJpeg GD::Image($bgfile);
+ my $filetype =(split(/\./,$bgfile))[-1];
+ my $bg= newFromGif  GD::Image($bgfile) if $filetype eq 'gif';
+ my $bg= newFromJpeg GD::Image($bgfile) if $filetype =~ m/^jp/; # for jpg and jpeg
+ my $bg= newFromPng  GD::Image($bgfile) if $filetype eq 'png';
my ($bgwidth,$bgheight)= $bg->getBounds();
if($bgwidth != $width or $bgheight != $height) {
# we need to resize
-----------------------
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

Zitat von: betateilchen am 27 April 2014, 10:16:15
here we go...

Ist dokumentiert und eingecheckt.

Über die Änderung zum Hintergrundbild will ich noch nachdenken.

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

Icebear

Hi Betateilchen, Hi Boris,

genau so dachte ich es mir. Denke das der Patch vielen helfen wird die mit Hintergründen arbeiten wollen.

Super job ...

(vllt sollt ich doch mal perl lernen :) aber sind doch diverse unterschiede zu delphi / pascal :))

Raspberry PI mod B (Wheezy), Fhem 5.4, CUL868, CUL433 , RfxTrx, HM-USB-CFG2, Wlan, HomeEasy, IT, FS20, TFA, HomeMatic, Oregon Scientific, HMLand auf Fritzbox
Raspberry PI mod B (RaspBMC)

betateilchen

Zitat von: Dr. Boris Neubert am 27 April 2014, 11:30:42
Über die Änderung zum Hintergrundbild will ich noch nachdenken.

Über welche möglichen Probleme denkst Du dabei nach?
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

betateilchen

Boris, hast Du eine Idee, wie man condition verschachteln könnte?


condition 1
  img...
  text...
  condition2 1
    line...
  condition2 0
  rgb...
  text...
condition 0


Mir fehlt ein grundsätzlicher Lösungsansatz, alles was ich bis jetzt probiert habe, funktioniert nicht richtig.
-----------------------
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

Folgende Idee erledigt das, was push und pop sollen, gleich mit:

Neue Direktiven begin und end. Trifft die Abarbeitung des Layout-Skrips auf begin, werden alle Parameter auf den Stapel gelegt. Und bei end wieder zurückgeholt. condition ist auch nur ein Parameter.

Stack: Man muß die Referenz auf das Hash in ein Array pushen. Sowas wie push($stack, \%params).

Grüße
Boris

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!

Icebear

hallo
So gerade mal das update eingebaut zum Alpha und das sieht alles fein aus ... Danke auch dafür..
Jetz habe ich wieder was zu basteln :)

ps. nach einem Begin alles zu sichern würde ich von einem Parameter abhängig machen weil es ist ja nicht unbedingt immer gewünscht nach dem end zurückzusichern ...

evtl so
begin
...
...
end true
(end mit true sichert zurück .. end ohne true verwirft den stack)
default ist dann das der stack verworfen wird um nicht manche zu verwirren warum die einstellung innerhalb des begin/ende blocks wieder weg sind.
nur so als idee ..
Raspberry PI mod B (Wheezy), Fhem 5.4, CUL868, CUL433 , RfxTrx, HM-USB-CFG2, Wlan, HomeEasy, IT, FS20, TFA, HomeMatic, Oregon Scientific, HMLand auf Fritzbox
Raspberry PI mod B (RaspBMC)

Dr. Boris Neubert

Zitat von: Icebear am 27 April 2014, 20:56:27
ps. nach einem Begin alles zu sichern würde ich von einem Parameter abhängig machen weil es ist ja nicht unbedingt immer gewünscht nach dem end zurückzusichern
nur so als idee ..

Irgendwann wird es einfacher, statt eines statischen Layouts ein Perl-Skript zu verwenden, daß die Layout-Datei on-the-fly generiert... Im nächsten Leben (in dem ich 24 Stunden am Tag nur für FHEM da bin ;-)

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

betateilchen

Zitat von: Dr. Boris Neubert am 29 April 2014, 20:01:22
Irgendwann wird es einfacher, statt eines statischen Layouts ein Perl-Skript zu verwenden, daß die Layout-Datei on-the-fly generiert.

*lach* zwei Dumme, ein Gedanke :P ich generiere inzwischen komplette Bildteile in meiner 99_myRSSUtils.pm die ich dann im RSS Layout einfach als img einbinde.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

Benni


Zitat von: betateilchen am 29 April 2014, 20:08:43
Ich generiere inzwischen komplette Bildteile in meiner 99_myRSSUtils.pm die ich dann im RSS Layout einfach als img einbinde.

Gibt's da dann noch eine Fortsetzung des Workshops?

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

@Boris: nachdem Rudi nun FileRead/FileWrite komplett in der fhem.pl gekapselt hat, muss man in den einzelnen Modulen nicht mehr auf configDB oder fhem.cfg unterscheiden. Das vereinfacht das Lesen der Layoutdatei nochmals erheblich:


sub
RSS_readLayout($) {

  my ($hash)= @_;
  my $filename= $hash->{fhem}{filename};
  my $name= $hash->{NAME};

  my ($err, @layoutfile) = FileRead($filename);
  if($err) {
    Log 1, "RSS $name: $err";
    $hash->{fhem}{layout}= ("text 0.1 0.1 'Error: $err'");
  } else {
    $hash->{fhem}{layout}= join("\n", @layoutfile);
    $hash->{fhem}{layout} =~ s/\n\n/\n/g;
  }
  return;
}


Ich habe das mit fhem.cfg und configDB erfolgreich getestet.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

betateilchen

-----------------------
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

Zitat von: betateilchen am 27 April 2014, 11:16:33
Ich hätte da übrigens gleich noch eine Änderung, um die Begrenzung auf JPG für die Hintergrundbilder aufzuheben:



if(opendir(BGDIR, $bgdir)){
my @bgfiles= grep {$_ !~ /^\./} readdir(BGDIR);
closedir(BGDIR);
# get item number
if($#bgfiles>=0) {
if($bgnr > $#bgfiles) { $bgnr= 0; }
$defs{$name}{fhem}{bgnr}= $bgnr;
my $bgfile= $bgdir . "/" . $bgfiles[$bgnr];
my $filetype =(split(/\./,$bgfile))[-1];
my $bg= newFromGif  GD::Image($bgfile) if $filetype eq 'gif';
my $bg= newFromJpeg GD::Image($bgfile) if $filetype =~ m/^jp/; # for jpg and jpeg
my $bg= newFromPng  GD::Image($bgfile) if $filetype eq 'png';




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

Dr. Boris Neubert

Zitat von: betateilchen am 03 Mai 2014, 13:27:42
@Boris: nachdem Rudi nun FileRead/FileWrite komplett in der fhem.pl gekapselt hat, muss man in den einzelnen Modulen nicht mehr auf configDB oder fhem.cfg unterscheiden. Das vereinfacht das Lesen der Layoutdatei nochmals erheblich:


sub
RSS_readLayout($) {

  my ($hash)= @_;
  my $filename= $hash->{fhem}{filename};
  my $name= $hash->{NAME};

  my ($err, @layoutfile) = FileRead($filename);
  if($err) {
    Log 1, "RSS $name: $err";
    $hash->{fhem}{layout}= ("text 0.1 0.1 'Error: $err'");
  } else {
    $hash->{fhem}{layout}= join("\n", @layoutfile);
    $hash->{fhem}{layout} =~ s/\n\n/\n/g;
  }
  return;
}



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