FHEM Forum

FHEM => Frontends => FHEMWEB => Thema gestartet von: hasselh am 24 August 2024, 11:38:41

Titel: Gelöst: Refresh der Anzeige eines FHEMWEB Raums von einem notify aus triggern ?
Beitrag von: hasselh am 24 August 2024, 11:38:41
Hallo zusammen,

ich zeige in bestimmten Situationen zusätzliche Devices in meinem defaultRoom (bei mir heisst der: Start). Ein Beispiel:

defmod room_updater notify (auto|Party|heating_away):(on|off) { \
  if ( $attr{"$NAME"}{"myRoom"} ) { \
    if ($EVTPART0 eq 'on') { \
      $attr{"$NAME"}{"room"}=$attr{"$NAME"}{"myRoom"}.',Start' } \
    else { $attr{"$NAME"}{"room"}=$attr{"$NAME"}{"myRoom"} } \
    FW_updateHashes();; return undef } }

Das funktioniert auch wunderbar, hat den Vorteil, das so auch keine geänderte Konfiguration erkannt wird (es wird im FHEMWEB kein rotes Fragezeichen angezeigt). Allerdings erscheinen die Devices auch erst nach einem Refresh der FHEMWEB Seite. Aktuell mache ich das über ein:

attr WEBphone refresh 300

Das hat nur den Nachteil, das der Refresh nun für alle Seiten gilt. Und es dauert eben seine Zeit, bis die neue Seite angezeigt wird.

Jetzt zu meiner Frage: Geht das evtl. auch eleganter.. z.B. dass der Refresh vom notify aus getriggert werden kann ?

Titel: Aw: Refresh der Anzeige eines FHEMWEB Raums von einem notify aus triggern ?
Beitrag von: TomLee am 24 August 2024, 19:22:12
ZitatGeht das evtl. auch eleganter.. z.B. dass der Refresh vom notify aus getriggert werden kann ?

Hallo,

wenn Du den Codeschnipsel (https://forum.fhem.de/index.php?msg=885556) in deinem ergänzt sollte deine Start-Seite bei einem on|off aktualisiert werden. Zumindest hab ich deinen Code bei mir so erfolgreich nachvollzogen.

Zitat(d|d1|d2):(on|off) {
my $reload = map { FW_directNotify("FILTER=room=Start", "#FHEMWEB:$_", "location.reload('true')", "")} devspec2array("WEB.*");
  if ( $attr{"$NAME"}{"myroom"} ) {
    if ($EVTPART0 eq 'on') {
    $attr{"$NAME"}{"room"}=$attr{"$NAME"}{"myroom"}.',Start';
    $reload;}
    else {
    $attr{"$NAME"}{"room"}=$attr{"$NAME"}{"myroom"};
    $reload;}
    FW_updateHashes(); return undef } }

Gruß Thomas
Titel: Aw: Refresh der Anzeige eines FHEMWEB Raums von einem notify aus triggern ?
Beitrag von: hasselh am 24 August 2024, 23:08:14
OK, WOW, das hat funktioniert. Und der Aufruf von FW_updateHashes() scheint auch nicht mehr nötig zu sein.
Der fertige Code sieht bei mir jetzt folgendermaßen aus:

(d|d1|d2):(on|off) {
  if ( $attr{"$NAME"}{"myRoom"} ) {
    if ($EVTPART0 eq 'on') {
      $attr{"$NAME"}{"room"}=$attr{"$NAME"}{"myRoom"}.',Start' }
    else { $attr{"$NAME"}{"room"}=$attr{"$NAME"}{"myRoom"} }
    map { FW_directNotify("FILTER=room=Start", "#FHEMWEB:$_",
  "location.reload('true')", "")} devspec2array("WEB.*") } }

Einen ganz lieben Dank und einen schönen Abend !!
Hayo