[02_RSS.PM] Moduländerungsvorschlag.

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

Vorheriges Thema - Nächstes Thema

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!