[jetzt gelöst] Fehlermeldung bei Öffnen eines notify

Begonnen von Nobbynews, 14 Dezember 2021, 05:06:41

Vorheriges Thema - Nächstes Thema

Nobbynews

Guten Morgen,

ich habe am Sonntag ein Update von FHEM gemacht und seit dem beim Öffnen eines notify folgende Fehlermeldung:

fhemweb.js line 1587:
Uncaught TypeError: arg.replaceAll is not a function

Hier noch ein list von WEB:
Internals:
   BYTES_READ 3610021
   BYTES_WRITTEN 27688346
   CONNECTS   2156
   CSRFTOKEN  csrf_992744847037721
   DEF        8083 global
   FD         6
   FUUID      5c43035d-f33f-8873-3e8a-4de1b020d11826d0
   FVERSION   01_FHEMWEB.pm:0.253090/2021-12-06
   NAME       WEB
   NR         5
   NTFY_ORDER 50-WEB
   PORT       8083
   STATE      Initialized
   TYPE       FHEMWEB
   READINGS:
     2021-12-12 08:28:06   state           Initialized
Attributes:
   CORS       1
   JavaScripts codemirror/fhem_codemirror.js
   column     00_A:Fenster|WS980,dummy,Messwerte|Sprit 00_Fenster:ESPEasy%20Device,IT,MQTT2_DEVICE,ZWave,notify,watchdog
   comment    00_A:Fenster|WS980,dummy 00_Fenster:ESPEasy%20Device,IT,MQTT2_DEVICE,ZWave,notify,watchdog
   editConfig 1
   hiddenroom ProfileRoom
   longpoll   websocket
   plotEmbed  0
   ploteditor always
   plotfork   1
   plotmode   SVG
   styleData  {
"f18": {
  "Pinned.menu": true,
  "cols.bg": "FFFFE7",
  "cols.fg": "000000",
  "cols.link": "278727",
  "cols.evenrow": "F8F8E0",
  "cols.oddrow": "F0F0D8",
  "cols.header": "E0E0C8",
  "cols.menu": "D7FFFF",
  "cols.sel": "A0FFFF",
  "cols.inpBack": "FFFFFF",
  "savePinChanges": true,
  "Pinned.Room.Wohnzimmer.grp.xs1Dev": true,
  "Pinned.Room.CUL%5fTCM97001.grp.CUL_TCM97001": true,
  "Pinned.Room.Wetter.grp.CUL_TCM97001": true,
  "Pinned.Room.Wetter.grp.OREGON": true,
  "Pinned.Room.FS20.grp.FS20": true,
  "Pinned.detail.Internals": true,
  "Pinned.Room.Wetter.grp.Hideki": true,
  "Pinned.Room.Timer%5fLog.grp.FileLog": true,
  "Pinned.Room.EnOcean.grp.switch.00": true,
  "Pinned.detail.DeviceOverview": true,
  "Pinned.Room.Unsorted.grp.PRESENCE": true,
  "Pinned.detail.Plot Editor": true,
  "Pinned.Room.undefined.grp.HK_Profil": true,
  "Pinned.Room.MAX.grp.HK_Profil": true,
  "Pinned.Room.MAX.grp. MAX_Plots": true,
  "Pinned.Room.MAX.grp.Test": true,
  "Pinned.Room.07%5fGas.grp.ESPEasy Device": true,
  "Pinned.Room.08%5fHeizung.grp.HK_ZWave": true,
  "Pinned.Room.FLAMINGO.grp.FLAMINGO": true,
  "Pinned.Room.00_A.grp.ESPEasy Device": true,
  "Pinned.Room.08_Zähler.grp.ESPEasy Device": true
}
}
   stylesheetPrefix f18


Und hier noch ein beliebiges notify:
Internals:
   DEF        myAbfall:next_days:.* {
Log 1, "Abfall: $EVENT , $EVTPART1";
#Log 1, "$EVTPART1";
if ($EVTPART1 == 1){
Write_HomeStatus("Tonne",ReadingsVal("myAbfall","next_text","keine"));
}
else
{Write_HomeStatus("Tonne","keine");
}
}
   FUUID      602a17b1-f33f-8873-c661-da8a8b558edf82d0
   FVERSION   91_notify.pm:0.252310/2021-11-15
   NAME       n_myAbfall
   NOTIFYDEV  myAbfall
   NR         551
   NTFY_ORDER 50-n_myAbfall
   REGEXP     myAbfall:next_days:.*
   STATE      2021-12-14 05:04:56
   TRIGGERTIME 1639454696.5544
   TYPE       notify
   READINGS:
     2021-12-14 05:03:31   state           active
     2021-12-14 05:04:56   triggeredByDev  myAbfall
     2021-12-14 05:04:56   triggeredByEvent next_days: 1
Attributes:


Diese Meldung bekomme ich nur bei notifies. Andere Definitionen sind mMn nicht betroffen.

Norbert

Edit:
Scheint nur ein Problem auf meinem zweiten Raspberry zu sein. Auf dem Android-Tablet gibt es keine Fehlermeldung.

rudolfkoenig

Ich weiss zwar nicht, wie man das Problem nachstellt, aber ich habe die Zeile jetzt modifiziert, damit duerfte es nicht nochmal auftreten.


obrain17

#3
Ich habe heute das Update gemacht und somit schon die Version vom 14.12. installiert.

fhemweb.js                 25343 2021-12-14 11:51:22Z rudolfkoenig

Ich bekomme die Fehlermeldung auch, allerdings nur auf meinem Tablet, immer wenn "Everything" refresht wird.

Ja nach Browser gibt es 2 verschiedene Meldungen, beide aber für Zeile 1587:
"Uncaught TypeError: (arg+ "").replaceAll is not a function"
oder
"Uncaught TypeError: Object HMUART1:ok has no method 'replaceAll'"

Über die Feiertage hab ich evtl. Zeit weitere Infos zu sammeln oder die Ursache zu finden. Ich wollte aber jetzt schon mal kundtun, dass der Fehler wohl noch nicht gelöst ist.

Edit:
Ich hab jetzt rausgefunden: Immer wenn in einer Tabellen-Zelle das Wort HMUART1:ok vorkommt, gibt es die Fehlermeldung. Das ist in allen Ansichten so.

Hier das Device wo der HMUART definiert ist:

defmod VCCU CUL_HM 17D872
attr VCCU .mId FFF0
attr VCCU IODev HMUART1
attr VCCU IOList HMUART1
attr VCCU expert defReg,rawReg
attr VCCU icon RPi
attr VCCU model CCU-FHEM
attr VCCU room IO_Devices
attr VCCU subType virtual
attr VCCU webCmd virtual:update

setstate VCCU HMUART1:ok
setstate VCCU 2021-12-21 20:13:34 IODev HMUART1
setstate VCCU 2021-12-21 20:13:37 IOopen 1
setstate VCCU 2021-12-21 20:13:37 state HMUART1:ok


rudolfkoenig

Kannst Du bitte nach der Zeile 1585 (also als Erstes in der Funktion) Folgendes
console.log(typeof(arg));

einbauen, und im Problemfall die Ausgabe in der JavaScript Konsole anschauen?

Welchen Browser (+Version) verwendet ihr?

obrain17

typeof(arg) liefert "String" somit passt das hier.
Der Fehler liegt aber genau an den alten Browser-Versionen auf dem Tablet, die ich aber leider nicht updaten kann, eben weil das Android zu alt dafür ist:

Die JavaScript Funktion replaceAll() wird noch nicht unterstützt.
siehe https://www.designcise.com/web/tutorial/how-to-fix-replaceall-is-not-a-function-javascript-error

Wenn ich wie dort beschrieben die Zeile

arg = (arg+"").replaceAll(" ",".");    // Forum #124505

ändere in

arg = (arg+"").replace(/ /g,".");  // Forum #124505

funktioniert es auf den alten und auch auf den neuen Browsern:
Die Select-Felder werden angelegt und mit Werten gefüllt.

Nobbynews

#6
Zitat von: rudolfkoenig am 21 Dezember 2021, 20:22:36
Welchen Browser (+Version) verwendet ihr?
Da muss ich erst einmal Abbitte leisten. Funktioniert bei mir doch nicht.

Pi:
Chrome, 72.0.3626.121 mit Raspbian 9.13

Tablet:
Chrome 96.0.4664.104 mit Android 9

Ein apt-get upgrade chromium-browser hat keine neue Version installiert. Zwar wurden etliche Libs für Chromium erneuert, aber ohne Veränderung.
Wenn ich den Link von @obrain17 folge, geht replaceAll erst ab Chrome 85.
Über die Feiertage werden ich meinen Pi auf Bullseye bringen.

Norbert

rudolfkoenig

Danke fuer den Hinweis, habe replaceAll durch replace ersetzt.

Laut Wiki ist Chrome 72 aus Januar 2019, und laut caniuse.com gibts replaceAll in Chrome erst seit Version 85, also August 2020.

Nobbynews

Funktioniert.

Danke und schöne Weihnachten.

Norbert