Klarer Titel anstatt Home, Sweet Home

Begonnen von Andi.Riese, 01 Dezember 2023, 15:06:09

Vorheriges Thema - Nächstes Thema

Andi.Riese

Hallo,

ich habe oft mehrere Fenster im Frontend geöffnet, z.B. das Device, ein Notify dazu, Fhem.log etc.

Könnte man nicht anstatt "Home, Sweet Home" einen zutreffenden Titel z.B. den Namen wie "Lampe", "LampeNotify", "fhem.log" angeben?

Ist echt lästig immer erst das richtige Fenster suchen zu müssen...

Gruß
Andi

ph1959de

Das FHEMWEB Device hat ein Attribut "title"; eine Möglichkeit:

attr <WEB> title { if($FW_room) { "$FW_room" } elsif($FW_detail) { "FHEM: $FW_detail" } else { "Home, Sweet Home" } }
Aktives Mitglied des FHEM e.V. | Moderator im Forenbereich "Wiki"

binford6000

#2
Für alle möglichen Titel auch so (ist hier irgenwo ausm Forum...):
sub web_title() {
  my $title = "";
  my $instance = "F1";
  if ($FW_detail) {
    $title = "$instance Detail: $FW_detail";
  }
  elsif ($FW_room) {
    $title = "$instance Room: $FW_room";
  }   
  elsif (defined $FW_webArgs{cmd}) {
    if ($FW_webArgs{cmd} =~ m/style edit (.*)/s) {
      $title = "$instance Edit: $1";
    } 
    elsif ($FW_webArgs{cmd} =~ m/style save (.*)/s) {
      $title = "$instance Saved: $1";
    }
    elsif ($FW_webArgs{cmd} =~ m/style list.*/s) {
      $title = "$instance File list";
    }
    elsif ($FW_webArgs{cmd} =~ m/style eventMonitor.*/s) {
      $title = "$instance Event monitor";
    }
    else {
      $title = $FW_webArgs{cmd};
    }
  }
  elsif (defined $FW_webArgs{file}) {
    $title = "$instance Log: $FW_webArgs{file}";
  }
  elsif (%FW_webArgs && ((keys %FW_webArgs) =~ m#dashboard/(.*)#s)) {
    $title = $1;
  }
  else {
    $title = "$instance Home";
  }
  return $title;
}

Für alle FHEMWEB Instanzen gibt es analog ein Attribut title in global:
attr global title {web_title()}
VG Sebastian

Frank_Huber

lässt sich auch global im "global" setzen.

Invers

Zitat von: Frank_Huber am 01 Dezember 2023, 16:19:31lässt sich auch global im "global" setzen.
Nicht gefunden. Welches Attribut wäre das?
Danke.
Pi3B+ mit SSD/ Bullseye | FB7590 AX | 12 x Dect200 | CUL433+868 | SDuino | HM-LAN | 3 x Heizung FHT + FKontakte | KeyMatic + 4 FB | HM Wandtaster 2-fach m. LED | 6 x Türkont. TFK-TI | HM-Bew.-Melder innen | 3 x Smoked. HM-SEC-SD-2

juemuc

3x Sonos Play 1, 1x Sonos Arc + Sub, 1 Sonos-One, 1x Sonos Playbar
FB6690 + FB7490 mit 4x Dect 200 und 3 Dect-ULE-Thermostate,  raspberry3B+, HM Funkmodul HM-MOD-RPI-PCB, HM Klingelsensor HM-Sen-DB-PCB, HM (IP) Fensterkontakte und  Amazon Echo Dot,  piVCCU, pi OS (bookworm).

Invers

Pi3B+ mit SSD/ Bullseye | FB7590 AX | 12 x Dect200 | CUL433+868 | SDuino | HM-LAN | 3 x Heizung FHT + FKontakte | KeyMatic + 4 FB | HM Wandtaster 2-fach m. LED | 6 x Türkont. TFK-TI | HM-Bew.-Melder innen | 3 x Smoked. HM-SEC-SD-2

VB90

Ich danke euch!
da ich mehrere Instanzen von FHEM betreue, ist es bei mehreren Tabs tatsächlich oft unübersichtlich.
Nun schaffe ich dort etwas Klarheit reinzubringen.

vb
Man muss das Rad nicht neu erfinden, nur wissen wie es gedreht wird.

Felix_86

#8
Hallo binford6000,

ist der Abschnitt so wirklich korrekt?

Zitatelsif (%FW_webArgs && ((keys %FW_webArgs)
 =~ m#dashboard/(.*)#s)) {
    $title = $1;

Die zweite Zeile wird so bei mir ab dem ersten '#' als Kommentar interpretiert, damit auch die öffnende geschweifte Klammer "{".
Ich vermute das beide '#' in dieser Zeile durch '/' ersetzt werden müssen. Korrekt?
Grüße von Felix

Pi3, Raspbian 11, FHEM 6.4, ca 315 Device
SIGNALduino (TCM, TX, IT, SD_GT), CUL (EM, FS20, HMS), JeeLink (PCA301), mailcheck, echodevice, alexa, TelegramBot, Weather (OWM), DWD_OpenData, FRITZBOX, TabletUI, Calendar, Abfall, Vitoconnect, LGTV_WebOS, Nina, MQTT2

binford6000

Wie gesagt ich hab das auch nur ausm Forum. Ich sehe auch dass es ab #d... ausgegraut ist.
Aber es scheint ja zu funktionieren - Zumindest gibts keine PERL-Warnung: 
elsif (%FW_webArgs && ((keys %FW_webArgs) =~ m#dashboard/(.*)#s)) {
  $title = $1;
}

VG Sebastian

jhohmann

Die Funktion ist sehr gut.
Aber wo soll ich die ablegen?
Ich hatte sie in der 99_myUtils.pm definiert und konnte sie auch direkt verwenden.
Aber nach einem Neustart von FHEM konnte die 99_myUtils nicht geladen werden, weil unbekannte Perl-Variablen gefunden wurden, z.B. %FW_webArgs und alles was mit $FW anfängt.
Und damit stand dann quasi fhem, weil vieles andere auch nicht mehr ging. Nur ein Stoppen und manuelles rauswerfen mit einem Editor dieser Funktion hat geholfen.
Raspberry Pi 4 - bookworm / EnOcean - Rollo+Licht, deCONZ - Licht+Sensoren, ZWave - CO Messung, HMCCU mit piVCCU - Heizung+Rollo
plus dovecot, minidlna

swsmily

Zitat von: jhohmann am 12 Dezember 2023, 17:10:38Die Funktion ist sehr gut.
Aber wo soll ich die ablegen?
Ich hatte sie in der 99_myUtils.pm definiert und konnte sie auch direkt verwenden.
Aber nach einem Neustart von FHEM konnte die 99_myUtils nicht geladen werden, weil unbekannte Perl-Variablen gefunden wurden, z.B. %FW_webArgs und alles was mit $FW anfängt.
Und damit stand dann quasi fhem, weil vieles andere auch nicht mehr ging. Nur ein Stoppen und manuelles rauswerfen mit einem Editor dieser Funktion hat geholfen.

Ich bin gerade auf diesen Thread gestoßen und fand es direkt interessant. Hab daher auch das über die myUtils versucht und auch das Problem gehabt, dass beim Neustart von FHEM die myUtils nicht mehr geladen wurden.
Habe daher einfach alles in eine Zeile gebracht und im WEB-Device als title eingestellt:


attr <WEB> title {my $title = "";my $instance = "FHEM";if ($FW_detail) {$title = "$instance Detail: $FW_detail";}elsif ($FW_room) {$title = "$instance Room: $FW_room";}   elsif (defined $FW_webArgs{cmd}) {if ($FW_webArgs{cmd} =~ m/style edit (.*)/s) {$title = "$instance Edit: $1";} elsif ($FW_webArgs{cmd} =~ m/style save (.*)/s) {$title = "$instance Saved: $1";}elsif ($FW_webArgs{cmd} =~ m/style list.*/s) {$title = "$instance File list";}elsif ($FW_webArgs{cmd} =~ m/style eventMonitor.*/s) {$title = "$instance Event monitor";}else {$title = $FW_webArgs{cmd};}}elsif (defined $FW_webArgs{file}) {$title = "$instance Log: $FW_webArgs{file}";}elsif (%FW_webArgs && ((keys %FW_webArgs) =~ m#dashboard/(.*)#s)) {$title = $1;}else {$title = "$instance Home";}return $title;}
Damit habe ich keinen Fehler im Log gesehen beim Booten, und habe die angepassten Titel - SUPER!  ;D

binford6000

Ich habe den Zeilenumbruch oben in der Sub entfernt. Das war wohl ein c&p Fehler.
In Antwort #9 steht aber schon der korrigierte Absatz drin.

jhohmann

Das mit dem "alles in eine Zeile" ist ein guter Punkt.
Dadurch bin ich auf folgende Anpassung gekommen.
attr global widgetOverride title:textField-longDamit kann man da auch mehrzeilig was eingeben und muss nicht blind nach der korrekten Position suchen.
Danke an swsmily für den Denkanstoß.
Raspberry Pi 4 - bookworm / EnOcean - Rollo+Licht, deCONZ - Licht+Sensoren, ZWave - CO Messung, HMCCU mit piVCCU - Heizung+Rollo
plus dovecot, minidlna

Felix_86

Hallo,

mir ist heute aufgefallen, dass die Browser-Titelzeile wieder auf "Home, Sweet Home" gewechselt ist, ohne eine mir bekannte Änderung.
Die Subroutine web_title() ist in der 99_myUtils.pm weiterhin vorhanden und das Attribut title auf {web_title()} im Device global gesetzt. Dennoch kein spezifischer Titel.

- Ich habe das Attribut title im Device global gelöscht und neu gesetzt - keine Veränderung.
- Ich habe die 99_myUtils.pm geöffnet und gespeichert, ohne inhaltliche Änderung - anschließend wird der seitenspezifische Titel wieder in der Browser-Titelzeile angezeigt.

Ist das bekannt?
Wie kann ich das für die Zukunft verhindern?

Danke vorab.
Grüße von Felix

Pi3, Raspbian 11, FHEM 6.4, ca 315 Device
SIGNALduino (TCM, TX, IT, SD_GT), CUL (EM, FS20, HMS), JeeLink (PCA301), mailcheck, echodevice, alexa, TelegramBot, Weather (OWM), DWD_OpenData, FRITZBOX, TabletUI, Calendar, Abfall, Vitoconnect, LGTV_WebOS, Nina, MQTT2