Seit dem o.g. Update habe ich das Phänomen, dass manchmal einige Grafiken der SVG-Plots im Web-Interface unter iOs 14.3 auf iPad und iPhone sowohl in Safari als auch in Firefox nicht gezeigt werden. Klickt man dann auf den Link des SVG-Plots, wird die Grafik angezeigt. Es werden nicht immer dieselben Plots nicht angezeigt. Mal ist es dieser, mal jener.
Unter Windows in Firefox ist alles ok.
Ich habe erst mal die Version vom 31.08.2020 zurückgespielt. Damit ist alles wieder ok.
Vorab vielen Dank für Hilfe.
VG Achim
Hat vermutlich mit Aenderung der plotEmbed Voreinstellung von 0 auf 2 zu tun.
Mit 2 werden Grafiken parallel vom FHEM-Server abgeholt, und FHEM wird waehrend der Berechnung nicht blockiert.
Dafuer werden aber mehr Hardware-Ressourcen benoetigt.
Wieviele Grafiken sind auf der Seite?
Auf welchem Hardware (RAM/CPU) laeuft der FHEM-Server?
Sind im FHEM-Log fehler zu sehen, insb. cannot fork?
Bitte alle Fragen beantworten, nicht nur ausgewaehlte.
1. Auf der Seite sind 11 Grafiken.
2. Es ist ein Intel NUC5CPYH mit Intel(R) Celeron(R) CPU N3050 @ 1.60GHz, 2 Kerne und 4GB RAM. Er macht unter Ubuntu 20.04.01 headless ausser Fhem incl. Homebridge nichts weiter. Die CPU-Last liegt fast immer unter 10% und der RAM wird immer weniger als 20% genutzt.
3. Fehler im Log gibt es nicht.
Danke vorab!
Mit dem 98_SVG.pm vom 18.12. und plotEmbed=0 funktioniert es auch unter iOs wieder. Mit plotEmbed=1 oder =2 tritt der Fehler bei iOs auf. Allerdings verstehe ich nicht, warum das bei Windows mit plotEmbed=2 funktioniert, wenn es eine Frage der Leistung des Fhem-Servers sein sollte.
Danke vorab!
Bei plotEmbed=2 "bestellt" ein JavaScript Programm im Browser alle SVGs einzeln und in parallel, FHEM forkt sich, um jeweils in einem separaten Prozess eine SVG zu berechnen. Bei ungenuegend RAM kann das zum beschriebenen Problem fuehren, ist aber wohl hier nicht der Fall, da keine Meldung im FHEM-Log.
Bisher haben Browser maximal 6 ausstehende Requests zu einer Seite zugelassen, alle Weiteren wurde auf Halde gelegt, bis einer der ausstehenden Requests fertig wird. Da das Frontend eine Verbindung fuer longpoll reserviert, wurden bis zu 5 SVG Requests auf dem FHEM-Server in parallel abgearbeitet.
Apple hat was daran geaendert, offensichtlich nicht sehr geschickt.
Nachtrag: plotEmbed=1 hat die gleiche Wirkung, hier wird das Bestellen implizit durch den Browser erledigt, da die SVGs als <embed> Objekte geladen werden. Diese Methode ist aber "archaisch", und nicht performant, wenn man die SVGs verschiebt (drag and drop beim f18).
Safari @ iOS hat aufgehoert mit dem request-Queueing (d.h. Aufgaben auf Halde legen, bis sie ausgefuehrt werden koennen), bei zu vielen Requests wird einfach "error" gemeldet, mit readyState=0 (d.h. CLOSED). Ich finde das ist reichlich frech.
Ich habe jetzt versucht bei diesen Symptomen die erwartete Funktion des Browsers zu emulieren: auf meinem Geraet kann ich jetzt alle 10 SVGs anzeigen, vorher waren es nur 6.
Bei der Erweiterung habe ich noch Folgendes geaendert:
- die iPad Pruefung funktioniert wieder (das iPad meldet neuerdings, es sei ein MacOS Geraet(?))
- mit dem jsLog FHEMWEB Attribut werden die Browser log() Aufrufe ins FHEM-Log geschrieben, um Debugging ohne JS-Console zu ermoeglichen.
- den websocket Datenempfang in FHEMWEB gefixt fuer "zusammengeklebte" Nachrichten.
Der Effekt tritt beim iPad nicht nur bei Safari, sondern auch bei Firefox@iOs auf. Auch nach heutigem Update.
Update: Mit jsLog=1 gibt es im Log keine weiteren Einträge wenn mit iOs zugegriffen wird. Wenn man mit Firefox@Windows oder @Ubuntu zugreift, gibt es jede Menge Einträge im Log, aber keine Fehlermeldungen.
Update 2 Beim iPhone@Safari und @Firefox tritt der Effekt nun nicht mehr auf.
- fuer den Fix muss man die aktuelle Version von fhemweb.js laden. Das ist unter iOS gar nicht so einfach: ich beende FHEM, versuche die Seite zu Laden (Fehler), starte FHEM, und lade die Seite erneut. Wer einen einfacheren Weg kennt, der moege sich melden.
- der Fix ist unabhaengig von der jsLog Einstellung.
- bis gerade eben war jsLog immer aktiv, unabhaengig vom Attributwert, das habe ich jetzt gefixt.
- unter iOS muessen alle Browser den Apple-Web-Engine nutzen, der Unterschied zwischen den Browsern ist damit aus Web Entwickler Sicht nur kosmetisch.
Ja, so geht es! Allerdings muss man wohl Safari und Firefox starten, wenn Fhem gestoppt ist. Und erst beim 2. Aktualisieren der Seite nach dem Neustart sind alle Plots da.
Danke :)
Hilfe, der jsLog ist nicht mehr abzustellen. Das Logfile wird völlig zugemüllt. Weder jsLog=0 noch löschen und Neustart hilft!
Das alles war auch nicht, was ich als Loesung im vorherigen Beitrag geschrieben habe.
Voraussetzung ist ein FHEM-Update nach meinem letzten Beitrag.
Funktionierte erst, nachdem ich jsLog=0 gesetzt habe.
Danke!