[patch] Parameter an Dateien vom RSS Modul ermöglichen

Begonnen von holgerr, 09 Oktober 2014, 16:17:58

Vorheriges Thema - Nächstes Thema

holgerr

Hallo,

der angehängte Patch entfernt aus dem Request einer per RSS Modul generierten Datei den per "?parameter=xyz" angehängten Teil. Grund ist, dass für einen Reload von JPG/PNG Bildern im Hintergrund via Javascript (um Flickern zu vermeiden, wenn der Bildaufbau etwas länger dauert) ein "cache buster" in Form eines angehängten timestamps äußerst hilfreich ist, da der Browser sonst von einem bereits geladenen Bild ausgeht und nur bei einem kompletten Reload der Seite das Bild neu anfordert. Vielleicht ist es ja für den einen oder anderen hilfreich.

Gruß
Holger

dennis87

Hi, eine kurze Frage zu der Datei.
Ich habe das Problem, dass (wenn mein Tablet nicht optimal im WLAN hängt) beim Reload kurz eine weiße Seite zu sehen ist bevor die neue Datei angezeigt wird.

Kann ich das damit umgehen?

Danke,
Dennis

holgerr

Hallo,

das ist genau das Problem, das ich damit umgehe - allerdings muss dann statt des Bildes eine HTML Datei geladen werden, in der ein Canvas-Element das Bild anzeigt. Damit lässt sich dann per Javascript das nächste Bild im Hintergrund laden und erst dann austauschen, wenn es komplett geladen ist. Und dafür braucht man eben die Möglichkeit, den Browser so auszutricksen, dass er es wirklich für ein neues Bild hält, weil bei in der Seite eingebundenen Bildern sonst kein neues Laden erfolgt, sondern das Bild aus dem Cache genommen wird...

Holger

betateilchen

Generell ist das von Dir beschriebene Verhalten aber ein Browserproblem und kein Problem von 02_RSS.pm. Webviewcontrol lädt auf meinen Tablets beispielsweise die RSS-Dateien ohne jegliche "Bildstörung" in der Anzeige.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

schka17

Hallo Holger und Betateilchen,

ich möchte jetzt diesen Thread nicht kapern, aber ich versuche das jetzt schon seit mehr als einem Monat zu realisieren da das Flackern im Wohnzimmer doch ziemlich störend ist. Ich habe versucht mit der Suche im Forum und mit Suchmaschinen Lösungen zu finden die ich als nicht-Programmierer umsetzen kann, auch mit JS, Jquery usw, leider ohne Erfolg.
Könnt Ihr mir ein bischen den richtigen Weg weisen, ich habe auch ein 10" Tablet mit webviewcontrol das ich über eine eigene Webseite mit dem Bild aus RSS versorge, habe auch schon einige perfromance verbesserungen erzielen können, also ladezeiten von 15s auf ca. 1s rediziert, aber das Flackern bleibt.

Gruß

Karl
M: Thinclient x64 Debian | CUL FS20, HMS100WD, HMS100TF, HMS100T, HMS100CO, S300, S555TH | OWServer DS1420, DS18B20, DS2408 | RFXCOM UVN128, THWR800, THGR228N,RTGR328, PCR800 |Jeelink PCA301 EC3000|CUNO+IR|HMLAN|HMUSB|CUL433 Somfy|mySensors|espEasy
S1:Raspberry mit BPM810, Jeelink EC3000

betateilchen

Zitat von: schka17 am 10 Oktober 2014, 09:26:31
mit webviewcontrol das ich über eine eigene Webseite mit dem Bild aus RSS versorge,

Es kommt darauf an, wie Du Deine Webseite gestaltet hast.
Und es hängt von der Performance


  • Deines Webservers und seiner Hardwareplattform
  • Hardwareplattform, auf der Dein fhem läuft (und die Bilder generiert)

ab. Ich benutze übrigens direkt die Webseite, die vom RSS Modul generiert wird.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

schka17

Hallo Betateilchen,

Zitat von: betateilchen am 10 Oktober 2014, 10:02:28
Es kommt darauf an, wie Du Deine Webseite gestaltet hast.
Und es hängt von der Performance


  • Deines Webservers und seiner Hardwareplattform
  • Hardwareplattform, auf der Dein fhem läuft (und die Bilder generiert)

ab. Ich benutze übrigens direkt die Webseite, die vom RSS Modul generiert wird.
eine der Maßnahmen zur performanceverbesserung war der Umstieg vom Cubieboard 2 (hatte eine Grundlast von knapp 50% im FHEM Normalbetrieb) auf einen Thinclient mit AMD Dualcore 1,65 GHz (Debian), das brachte 90% der Performance. Mit dem Thinclient habe ich mit der selben Konfiguration ein durchschnittliche Auslastung von ca. 5%. Mit einem durchschnittlichen PC/laptop ist das nachladen auch nicht zu sehen (LAN&WLAN), allerdings ist das Tablet nicht das High performance Ding, hat aber auch dualcore ich glaube mit 1,2 Ghz, steht ca drei Meter vom Accesspoint mit 300 Mb. Die Bilder die ich im RSS Layout verwende (webcams/unwetterzentrale/Plots) werden im Hintergrund schon parallel generiert bzw. mit wget runtergeladen und lokal gespeichert. Das hat auch viel performance gebracht und auch FHEM entlastet, auf dem Cubieboard waren das fast 10% Lastreduzierung. Also die Server Seite sowie Netzwerk ist aus meiner Sicht mehr als ausreichend schnell. Klar ist das Tablet nicht das schnellste, daher war meine Idee eben das Laden des Bildes im Hintergrund. Habe es zwar geschafft mit JS verschiedene Bilder im Hintergrund zu laden, aber leider nicht ein einzelnes  :(

Mit der von RSS zur Verfügung gestellten Webseite habe ich begonnen, ich habe aber dann noch einige buttons eingebaut, keine Ahnung ob das irgendwie anders möglich wäre, aber ich habe dann eben eine FHEMWEBSRV Instanz eingerichtet und dort meine HTML Seite bereitgestellt.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Status FHEM Oberwaltersdorf</title>
<meta http-equiv="refresh" content="60"/>
<script type="text/javascript" src="/fhem/pgm2/cordova-2.3.0.js"></script><script type="text/javascript" src="/fhem/js/webviewcontrol.js"></script><script type="text/javascript">var wvcDevices = {11113: 'Tablet_3',11112: 'Tablet_2', 1111: 'Tablet_WZ'}</script><script type="text/javascript" charset="UTF-8"></script>
<script type="text/javascript" src="/fhem/jscolor/jscolor.js"></script>

</head>
<body topmargin="0" leftmargin="0" margin="0" padding="0" bgcolor="#000000">
<!-- <img src="http://192.168.255.9:8085/fhem/rss/RSS_Status1_1024.png" usemap="#map"/> -->
<img src="http://192.168.255.9/wwwfhem/RSS_Status1_1024.png" usemap="#map"/>

<map name="map" id="map">
<area shape="rect" coords="0,0,40,40" href="http://192.168.255.9:8085/fhem" target="_top" title="Zur�ck zu FHEM"/>
<area shape="rect" coords="840,0,1024,500" href="http://192.168.255.9:8085/fhem/wvc/wetter.html" target="_top" />
<area shape="rect" coords="230,300,450,450" href="http://192.168.255.9:8085/fhem/wvc/heizung.html" target="_top" />
<area shape="rect" coords="0,300,220,450" href="http://192.168.255.9:8085/fhem/wvc/heizung.html" target="_top" />
<area shape="rect" coords="840,600,1024,768" href="http://192.168.255.9:8085/fhem/wvc/webcams.html" target="_top" />
</map>

<div style="position:absolute; top:330px; left:770px">
<a href="http://192.168.255.9:8085/fhem?cmd.Switch_Garage=set%20Fernbedienung%20rc_Garage" target="log">
  <img src=http://192.168.255.9:8085/fhem/icons/remotecontrol/black_btn_garage.png>
  <!--<a href="http://192.168.255.9:8085/fhem?cmd.Switch_Garage=set%20OUTPUT1%20ButtonGarage" target="log">
   <img src=http://192.168.255.9:8085/fhem/icons/remotecontrol/black_btn_garage.png>--> </a> </div>
<div style="position:absolute; top:370px; left:770px">
<a href="http://192.168.255.9:8085/fhem?cmd.Switch_Garage=set%20Fernbedienung%20rc_Carport" target="log">
   <img src=http://192.168.255.9:8085/fhem/icons/remotecontrol/black_btn_Carport.png>
</a></div>
<div style="position:absolute; top:410px; left:770px">
<a href="http://192.168.255.9:8085/fhem?cmd.Switch_Garage=set%20Fernbedienung%20rc_Einfahrt" target="log">
   <img src=http://192.168.255.9:8085/fhem/icons/remotecontrol/black_btn_Einfahrt.png>
</a></div>

</body>
</html>


Gruß

Karl
M: Thinclient x64 Debian | CUL FS20, HMS100WD, HMS100TF, HMS100T, HMS100CO, S300, S555TH | OWServer DS1420, DS18B20, DS2408 | RFXCOM UVN128, THWR800, THGR228N,RTGR328, PCR800 |Jeelink PCA301 EC3000|CUNO+IR|HMLAN|HMUSB|CUL433 Somfy|mySensors|espEasy
S1:Raspberry mit BPM810, Jeelink EC3000

betateilchen

Zitat von: schka17 am 10 Oktober 2014, 10:32:44
aber ich habe dann eben eine FHEMWEBSRV Instanz eingerichtet und dort meine HTML Seite bereitgestellt.

Das habe ich befürchtet. Der FHEMWEBSERV ist für solche Zwecke nicht wirklich zu gebrauchen, da er von Performance noch nie was gehört hat.

Bei mir läuft die gesamte Bereitstellung meiner eigenen Webseiten per Apache auf dem Cubietruck.

Buttons in der vom RSS Modul bereitgestellten Webseite kannst Du über areas direkt als Attribut im RSS-device selbst definieren, hier mein Beispiel:


areas      <area shape="rect" coords="0,  0,800,387" href="https://cubie.betateilchen.de/tab/panel.html" target="_top" />
<area shape="rect" coords="0,388,800,442" href="https://cubie.betateilchen.de/tab/warntext.html" target="_top" />

-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

holgerr

Zitat von: betateilchen am 10 Oktober 2014, 09:02:07
Generell ist das von Dir beschriebene Verhalten aber ein Browserproblem und kein Problem von 02_RSS.pm. Webviewcontrol lädt auf meinen Tablets beispielsweise die RSS-Dateien ohne jegliche "Bildstörung" in der Anzeige.

Nein, es ist ein Performanceproblem beim Erstellen des Bildes - wenn der Browser es schneller lädt, als es generiert wird, flackert's halt. Und da ich deswegen nicht meinen Pi durch was größeres ersetzen will/kann und das Problem sich elegant mit ein wenig Javascript und einer Zeile Patch umgehen lässt, bietet es sich als simple Lösung an. Übrigens würde sich an dem Performanceproblem auch mit einem Apache für die HTML Seiten nichts ändern, denn PNG/JPG Bilder werden ja immer noch vom RSS Modul erstellt, was hier den Flaschenhals darstellt...

schka17

Hallo,

Danke, wieder einiges dazu gelernt.

Ihr habt im Prinzip beide recht, zuerst war es ein Performanceproblem mit dem CB2, und das ist wesentlich leistungsfähiger als der Raspberry mit dem ich begonnen habe. Mit dem Thinclient ist auf Laptop/Wlan, PC mit Lan und Ipad über Wlan kein Flackern mehr wahrnehmbar, mit dem CB2 waren es ca 3-5s Ladezeit. Natürlich waren für die Beschleunigung beim Erstellen des RSS Bildes das lokale Speichern von externen Webinhalten und der Plots, die ich eigentlich nur alle 30m benötige, hauptverantwortlich.

Diese kurze Flackern das jetzt auf dem Tablet zu sehen ist, führe ich schon auf den Browser zurück, ich verwende Webviewcontrol, bzw. auf die weniger performante HW des Tablets. Das ist auch bei den noch langsameren 7" Tablets wesentlich ausgeprägter. Und genau das wollte ich jetzt mit den Laden der Seite im Hintergrund lösen, bin halt aber immer an diesem "cache buster" (was auch immer das ist) gescheitert. Werde das jetzt am WE nochmal mit dem Patch versuchen.

Gruß

Karl

M: Thinclient x64 Debian | CUL FS20, HMS100WD, HMS100TF, HMS100T, HMS100CO, S300, S555TH | OWServer DS1420, DS18B20, DS2408 | RFXCOM UVN128, THWR800, THGR228N,RTGR328, PCR800 |Jeelink PCA301 EC3000|CUNO+IR|HMLAN|HMUSB|CUL433 Somfy|mySensors|espEasy
S1:Raspberry mit BPM810, Jeelink EC3000

schka17

Hallo Holger,

konnte es nicht abwarten und habs gleich ausprobiert -> funktioniert, Danke

ich habe diesen code in meine html seite eingebaut:

<img src="http://192.168.255.9:8085/fhem/rss/RSS_Status1_1024.png?&t=" usemap="#map" width='' onload='setTimeout(function() {src = src.substring(0, (src.lastIndexOf("t=")+2))+(new Date()).getTime()}, 30000)' onerror='setTimeout(function() {src = src.substring(0, (src.lastIndexOf("t=")+2))+(new Date()).getTime()}, 50000)' alt='' />

vielleicht hilft es ja jemanden.

Gruß

Karl
M: Thinclient x64 Debian | CUL FS20, HMS100WD, HMS100TF, HMS100T, HMS100CO, S300, S555TH | OWServer DS1420, DS18B20, DS2408 | RFXCOM UVN128, THWR800, THGR228N,RTGR328, PCR800 |Jeelink PCA301 EC3000|CUNO+IR|HMLAN|HMUSB|CUL433 Somfy|mySensors|espEasy
S1:Raspberry mit BPM810, Jeelink EC3000

dennis87


Hollo

Zitat von: schka17 am 10 Oktober 2014, 15:56:53
...Diese kurze Flackern das jetzt auf dem Tablet zu sehen ist, führe ich schon auf den Browser zurück, ich verwende Webviewcontrol, bzw. auf die weniger performante HW des Tablets. Das ist auch bei den noch langsameren 7" Tablets wesentlich ausgeprägter. ...
Es ist wahrscheinlich eine Kombination aus mehreren Faktoren... Generierung, Übertragung, Anzeige .

Mein Raspi ist bei der Generierung zu 100% ausgelastet, also schon Mist.
"Angeschlossen" sind 2 10" Archos Tablets über WLAN mit WVC.
Dabei ist quasi das langsamere (Single Core 512MB) "besser" als das schnellere (DualCore, 1GB).
Beim schwachen Tablet wird quasi flüssig zwischen altem und neuen Bild gewechselt, beim schnelleren kommt das weisse Bild und Sekunden später die neue Seite.

Ich werde mir mal die Generierung der HTML-Seite mit zusätzlichen Elementen ansehen. Momentan generiere ich ja auch ein Bild, welches ich dann in eine HTML mit Zusätzen einbette.
FHEM 6.x auf RPi 3B Buster
Protokolle: Homematic, Z-Wave, MQTT, Modbus
Temp/Feuchte: JeeLink-Clone und LGW mit LaCrosse/IT
sonstiges: Linux-Server, Dreambox, "RSS-Tablet"

satprofi

Hallo.
Mit diesem patch ist es noch schlimmer. alle 30sec. kein bild für 30sec.
quasi ein 30sec. blitzer
gruss
-----------------------------------------------------------------------
beelink miniPC - Fhem 6.x CUL 868, FS20, NetIO230 CUL 433
HMLAN, HM-CC-RT-DN,Homematic Actoren,LD382A,Telegram