Ungewolltes fhemweb autoreload (Attribut refresh setzt sich von selbst)

Begonnen von Ajuba, 18 Februar 2024, 08:55:27

Vorheriges Thema - Nächstes Thema

Ajuba

Seit Herbst fiel mir auf, dass mein Wandtablet von selbst die Seite sekündlich neu aufbaut.
In WEBtablet war das Attribut "refresh" mit dem Wert 1 von selbst eingesetzt. Beim ersten Mal dachte ich an einen Fehler meinerseits, startete ohne speichern neu und gut war es.
Seit Anfang 2024 steht es immer öfter drin. Ich lösche das Attribut und speichere aber am nächsten Tag ist es wieder da.

Die Änderung ist auch beim Klicken des Fragezeichens ersichtlich obwohl ich es nicht eintrage
Last unsaved structural changes:
  attr WEBtablet refresh 1

Hier ein list von WEBtablet
Internals:
  BYTES_READ 52390620
  BYTES_WRITTEN 1222186006
  CONNECTS  5965
  CSRFTOKEN  csrf_350972031826139
  DEF        8085 global
  FD        8
  FUUID      60754bab-f33f-1260-235d-9fe071e977105860
  NAME      WEBtablet
  NR        11
  NTFY_ORDER 50-WEBtablet
  PORT      8085
  STATE      Initialized
  TYPE      FHEMWEB
  READINGS:
    2024-01-16 19:01:44  state          Initialized
  helper:
    bm:
      FW_Attr:
        cnt        21
        dmx        -1000
        dtot      0
        dtotcnt    0
        mTS        18.01. 07:25:29
        max        9.70363616943359e-05
        tot        0.0013577938079834
        mAr:
          set
          WEBtablet
          refresh
          1
      FW_Get:
        cnt        7
        dmx        -1000
        dtot      0
        dtotcnt    0
        mTS        20.01. 17:05:58
        max        3.21865081787109e-05
        tot        0.000205278396606445
        mAr:
          HASH(0xc3cdc0)
          WEBtablet
          ?
      FW_Notify:
        cnt        613462
        dmx        -1000
        dtot      0
        dtotcnt    0
        mTS        19.01. 12:44:49
        max        0.010206937789917
        tot        7.59661650657654
        mAr:
          HASH(0xc3cdc0)
          HASH(0x46c05a8)
      FW_Read:
        cnt        5965
        dmx        -1000
        dtot      0
        dtotcnt    0
        mTS        20.01. 14:28:54
        max        0.00966715812683105
        tot        5.01738286018372
        mAr:
          HASH(0xc3cdc0)
      FW_Set:
        cnt        17
        dmx        -1000
        dtot      0
        dtotcnt    0
        mTS        20.01. 17:05:58
        max        7.48634338378906e-05
        tot        0.000889062881469727
        mAr:
          HASH(0xc3cdc0)
          WEBtablet
          ?
Attributes:
  column    Fenster:Fenster_DGO,Fenster_SZL,Fenster_VR,Fenster_WS|Fenster_DGS,Fenster_BAD,Fenster_SZR,Fenster_KU,Garage|Fenster_DGW,Fenster_BU,Fenster_WZL|Terrasse_S,Fenster_KZ,Fenster_WZR,Fenster_PR|Markise_L,Terrasse_L|Markise_R,Terrasse_R
  hiddenroom input,detail,save,Tablet-UI,Everything,Logfile,Commandref,Unsorted,Remote doc,Edit files,Event monitor,Select style,CONTROL,Dummys,Dashboard
  iconPath  fhemSVG:openautomation:default:icons_small:weather:own
  longpoll  1
  plotfork  1
  refresh    1
  room      CONTROL->FHEM
  roomIcons  Garten:scene_summerhouse Fenster:fts_shutter_30 Verbrauch:time_graph Multimedia:it_television Steckdosen:message_socket Wetter:scene_day
  stylesheetPrefix owndark
  viewport  initial-scale=1,maximum-scale=1,user-scalable=no
Wie werde ich dieses nervige Verhalten los?

Andi
FHEM auf RPi3, Homematic CCU3 mit Cuxd und CUL 868 für FS20, Siemens S7 über CP343-1,
DbLog zu MySQL auf NAS QNAP TS-253D,
Yeelight

rudolfkoenig

Soweit ich sehe, wird refresh von keinem der "offiziellen" FHEMWEB Modulen gesetzt.

Moeglichkeiten, die mir einfallen:
- nach dem Loeschen wurde save nicht ausgefuehrt
- es gibt einen Mechanismus, der fhem.cfg "restauriert"
- es werden "nicht-offizielle" Module verwendet, die refresh setzen
- in einem der selbstgebauten Funktionen (in notify/at/DOIF/99_myUtils.pm/etc) wird refresh gesetzt

Ich wuerde in FHEM/01_FHEMWEB.pm, Funktion FW_Attr folgende Zeile einbauen:
stacktrace() if($type eq "set" && $attrName eq "refresh");
um die Quelle zu protokollieren.

Ajuba

Danke für die rasche Antwort und den Tipp
Zitat von: rudolfkoenig am 18 Februar 2024, 12:24:28Moeglichkeiten, die mir einfallen:
- nach dem Loeschen wurde save nicht ausgefuehrt
- es gibt einen Mechanismus, der fhem.cfg "restauriert"
- es werden "nicht-offizielle" Module verwendet, die refresh setzen
- in einem der selbstgebauten Funktionen (in notify/at/DOIF/99_myUtils.pm/etc) wird refresh gesetzt

Ich wuerde in FHEM/01_FHEMWEB.pm, Funktion FW_Attr folgende Zeile einbauen:
stacktrace() if($type eq "set" && $attrName eq "refresh");
um die Quelle zu protokollieren.

- Das Problem besteht egal ob Save ausgeführt wird oder nicht
- Ich wüsste nicht wo eine Restaurierung herkommen sollte
- Da kämen höchstens die Fronius Module in Frage, die ich seit Juni 23 eingebaut habe. Das Refresh Problem begann aber erst mindestens 3 Monate später
- Es gibt keine selbst gebauten Funktionen dazu

Bitte kurz zur Bestätigung für einen Nicht-Coder
1. Ich mache ein Backup
2. Ich öffne die Datei mit "sudo nano 01_FHEMWEB.pm"
3. FRAGE An welcher Stelle soll ich dann die genannte Zeile einbauen?
3. Anschließend Speichern mit Ctrl x, y, Enter
4. Anschließend zur Sicherheit Raspi komplett neu starten
6. FRAGE Wo sehe ich dann später Einträge zur Analyse?
FHEM auf RPi3, Homematic CCU3 mit Cuxd und CUL 868 für FS20, Siemens S7 über CP343-1,
DbLog zu MySQL auf NAS QNAP TS-253D,
Yeelight

rudolfkoenig

Zu 3: vor dem ersten if, Zeile 5432.
Zu 4: FHEM Neustarten reicht, Raspi Neustarten schadet aber auch nicht.
Zu 6: (wo ist 5 geblieben?): in /opt/fhem/log/fhem-2024-*.log. Alternativ in FHEMWEB ueber den Logfile Link links

Zu den anderen Punkten kann ich nichts sagen.

Ajuba

Zitat von: rudolfkoenig am 29 Februar 2024, 18:03:23Zu 3: vor dem ersten if, Zeile 5432.

Das hat jetzt länger gedauert bei mir weil ich erst auf Raspbian Bookworm umsteigen musste damit ich ein Fhem Update machen konnte.

Mein 01_FHEMWEB.pm hat genau nur 5432 Zeilen und dort ist kein if.

Das erste if finde ich ab 239
if(opendir(DH, "$FW_dir/pgm2")) {
    $FW_fhemwebjs = join(",", map { $_ = ~m/^fhemweb_(.*).js$/; $1 }
                              grep { /fhemweb_(.*).js$/ }
                              readdir(DH));
    closedir(DH);


Sorry für die blöde Frage. Was habe ich falsch verstanden?
FHEM auf RPi3, Homematic CCU3 mit Cuxd und CUL 868 für FS20, Siemens S7 über CP343-1,
DbLog zu MySQL auf NAS QNAP TS-253D,
Yeelight