In RSS-Overview den Alias hinter Devicename ergänzen ?

Begonnen von TomLee, 20 Februar 2023, 13:08:50

Vorheriges Thema - Nächstes Thema

TomLee

Hallo,

bei diesem "Projekt" hat jedes Display eine eigene MAC-Adresse, die Bilder die auf diesen dargestellt werden sollen, müssen nach dieser benannt werden. Beispiel: 00:00:02:6d:d2:8c:3b:1b => 0000026dd28c3b1b.png

Meiner Erkenntnis nach bisher, hat man in dem Modul keine Möglichkeit den Namen der Bilder anzupassen, die Namen der Bilder werden immer vom Devicename abgeleitet.
In der RSS Overview (http://<ip>/fhem/rss) wird das mit steigender Anzahl von RSS-Devices immer schwieriger nachzuvollziehen welcher RSS für welche Darstellung zuständig ist. Darum hab ich angefangen einen Alias zu vergeben, an dessen Name sich ableiten lässt, welcher RSS, was darstellt und dazu im Modul in der RSS_Overview-Funktion den Alias in runden Klammern an den Devicename "angehängt".

Zitat##################
# list all RSS devices
sub RSS_Overview {

    my ( $name, $url, $alias);
    my $html = RSS_HTMLHead( "RSS Overview", undef ) . "<body>\n";
    foreach my $def ( sort keys %defs ) {
        if ( $defs{$def}{TYPE} eq "RSS" ) {
            $name = $defs{$def}{NAME};
            $alias = AttrVal($name,'alias','');
            $alias = $alias ne '' ? qq(($alias)) : '' ;

            $url  = RSS_getURL($name);
            $html .= "$name $alias<br>\n<ul>";
            $html .=
              "<a href='$url/rss/$name.rss' target='_blank' >RSS</a><br>\n";
            $html .=
              "<a href='$url/rss/$name.html' target='_blank' >HTML</a><br>\n";
            $html .=
"<a href='$url/rss/$name.png' target='_blank' >Portable Network Graphics</a><br>\n";
            $html .=
"<a href='$url/rss/$name.jpg' target='_blank' >JPEG Graphics</a><br>\n";
            $html .= "</ul>\n<p>\n";
        }
    }
    $html .= "</body>\n" . RSS_HTMLTail();

    return ( "text/html; charset=utf-8", $html );
}

Ist es vorstellbar das das so in der Art im Modul übernommen/ergänzt wird ?

Gruß

Thomas

Dr. Boris Neubert

Gerne!

Bitte mal angehängte Datei testen.

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

TomLee

Zitat von: Dr. Boris Neubert am 20 Februar 2023, 18:00:17
Bitte mal angehängte Datei testen.

Spot the difference  ;)

Die Position (qq( ($alias))) an der das Leerzeichen vorgenommen wird ist der Unterschied.
Find es merkwürdig die zwei Variablen ($name$alias) da aufeinander sitzend anzusehen, aber wenn man das so macht/machen kann, warum nicht, mir ist egal wie das Leerzeichen da hinkommt.

Im nachhinein, würd ich die Änderung jetzt ohne Verwendung der einfachen Quotes vorschlagen und überall q() verwenden:

Zitatsub RSS_Overview {

    my ( $name, $url, $alias );
    my $html = RSS_HTMLHead( "RSS Overview", undef ) . "<body>\n";
    foreach my $def ( sort keys %defs ) {
        if ( $defs{$def}{TYPE} eq "RSS" ) {
            $name = $defs{$def}{NAME};
            $alias = AttrVal($name, 'alias', q());
            $alias = $alias ne q() ? qq( ($alias)) : q() ;
            $url  = RSS_getURL($name);
            $html .= "$name$alias<br>\n<ul>";
            $html .=
              "<a href='$url/rss/$name.rss' target='_blank' >RSS</a><br>\n";
            $html .=
              "<a href='$url/rss/$name.html' target='_blank' >HTML</a><br>\n";
            $html .=
"<a href='$url/rss/$name.png' target='_blank' >Portable Network Graphics</a><br>\n";
            $html .=
"<a href='$url/rss/$name.jpg' target='_blank' >JPEG Graphics</a><br>\n";
            $html .= "</ul>\n<p>\n";
        }
    }
    $html .= "</body>\n" . RSS_HTMLTail();

    return ( "text/html; charset=utf-8", $html );
}

betateilchen

Die Idee mit dem alias habe ich im InfoPanel nachgezogen.
Bei der Umsetzung habe ich es mir aber ein bisschen einfacher gemacht.


        my $alias = ' ('.AttrVal($name,'alias','').')';
        $alias = '' if $alias eq ' ()';
-----------------------
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

Meine Version von gestern habe ich soeben eingecheckt.
Globaler Moderator, Developer, aktives Mitglied des FHEM e.V. (Marketing, Verwaltung)
Bitte keine unaufgeforderten privaten Nachrichten!

TomLee

#5
Nach Gedanken über Betateilchens Umsetzung, ginge mein Vorschlag, in Kombination mit Dr. Boris Neuberts Änderung, auch einfacher:

$alias = AttrVal($name, 'alias', q());
$alias = qq( ($alias)) if $alias;

TomLee

Hat meine zuletzt vorgeschlagene Erkenntnis, über meinen eigenen Vorschlag, irgendwer nachvollzogen ?

Was sind die Gegenargumente und warum zieht Ihr das in beiden Modulen nicht nach ?