FTUI - Pagebutton prefetch deaktivieren?

Begonnen von howy-1, 08 April 2019, 07:58:00

Vorheriges Thema - Nächstes Thema

howy-1

Hallo zusammen,

ich haben in meinem FTUI per Pagebutton-Widget 3 Tabs mit Webcams laufen, die alle das Livebild als MJPEG senden. Das lief seit mindestens Sommer 2018 ohne Probleme und ohne das Netzwerk groß zu belasten.
Hier der Schnipsel:
Zitat<li data-row="2" data-col="1" data-sizex="6" data-sizey="5">
    <Header>Kamera1</header>
        <div class="top-space">
            <div data-type="image"
                 data-url="http://<MeinServer>/Webcam1/video"
                 data-width="100%"
                 data-height="100%"
                 data-opacity="1">
            </div>
        </div>
</li>

Wie gesagt, es lief schon lange und läuft auch immer noch so.

Aaaaaber:  Seit dem letzten FHEM-Update (geschätzt Mitte März 2019) habe ich im Zusammenhang mit den Kameras eine riesig gestiegene Netzwerkbelastung, sobald die Kamera-Widgets einmal aufgerufen wurden, was vor dem Update nicht so war.
Anzeigegerät ist ein Tablet mit dem Fully-Browser.
Starte ich das Tablet neu und setze auch den Cache des Fully-Browser zurück, ist der Netzwerkverkehr normal, und beim Aufruf einer Kamera schnellt er wieder hoch, soweit, dass das surfen im WLAN mit anderen Clients sehr schleppend wird.

Nun habe ich in Zusammenhang mit Pagebutton gelesen, dass die Inhalte nach dem ersten Aufruf fortlaufend im Hintergrund geladen werden. Kann man das irgendwie abstellen?  Oder was hat sich da beim letzten Update geändert? 
Ich habs auch schon mit "nocache" versucht, aber das brachte nichts.

Gruß
Dirk

SirBen

Moin,
ich hatte das Problem auch.
Die URL musst du durch ein Dummy-Device aus FHEM ersetzen, welches die Kamera-URL enthält.
data-url=KameraURL
Das Dummy-Device in FHEM (KameraURL) muss dann über die Pagebuttons entweder mit der URL "http://<MeinServer>/Webcam1/video" gesetzt werden, oder wenn das Bild nicht angezeigt werden soll, mit "0" gesetzt werden.
Ich hoffe du verstehst wie ich das meine.
Ich selbst habe die Kamera über ein Popup angezeigt und ein notify aktiv, der das popup bzw. die URL nach einer festgelegten Zeit automatisch schließt bzw. die URL auf "0" ändert.

LG

howy-1

Hallo,
Zitat von: SirBen am 09 April 2019, 17:04:28
Moin,
ich hatte das Problem auch.
Die URL musst du durch ein Dummy-Device aus FHEM ersetzen, welches die Kamera-URL enthält.
data-url=KameraURL
Das Dummy-Device in FHEM (KameraURL) muss dann über die Pagebuttons entweder mit der URL "http://<MeinServer>/Webcam1/video" gesetzt werden, oder wenn das Bild nicht angezeigt werden soll, mit "0" gesetzt werden.
Ich hoffe du verstehst wie ich das meine.
Ich selbst habe die Kamera über ein Popup angezeigt und ein notify aktiv, der das popup bzw. die URL nach einer festgelegten Zeit automatisch schließt bzw. die URL auf "0" ändert.

LG

ich weiß, was Du meinst:  Wenn der jeweilige Pagebutton betätigt wird, wird die richtige URL aufgerufen und die Seite angezeigt, wenn die Seite weggeschaltet wird, ob automatisch oder zeitgesteuert, wird die URL auf 0 (Null) gesetzt.
Nur fehlt mir etwas der Weg, dieses zu realisieren.

Also Dummy in FHEM anlegen ist klar:

define d_Kamera1 dummy

Aber es gibt bei den Dummy-Devices kein Attribut "data-url".  Oder meinst Du nur das Dummy anlegen, ohne weitere Attribute?

Hättest Du mal als Angregung bitte einen Codeschnipsel für mich? 

Deine Lösung mit dem Popup würde mich auch interessieren, denn das hatte ich ursprünglich auch so in der index.html stehen:

<li>
   <div data-type="popup"
        data-device="HoftorStatus"
        data-get="state"
        data-get-on="on"
        data-get-off="off"
        data-return-time="60"
        data-height="480px" data-width="640px">
<div><!-- click object to open the popup --></div>
<div class="dialog"><div data-type="image" data-url="http://MeinServer/Webcam2/video"></div>
</div></div>
</li>


Wie ich schon schrieb, erhöhte sich dadurch aber der Netzwerktraffic immens, seit ich Mitte März das FHEM-Update durchgeführt hatte. Vorher war da alles normal.

Gruß, Dirk

SirBen

Moin,
hier mal der Auszug aus meiner index.html:
Der Button:
<div data-type="link"
data-fhem-cmd="SET Klingel on"
data-color="white"
data-active-color="blue"
data-width="115"
data-text-align="left"
data-icon="fa-video" class="large"><span>Kamera</span></div>

schaltet den Dummy Klingel auf On.

Das Notify n_Klingel mit der DEF:
Klingel:on set KameraURL http://IPaddress/camera/httppreview;define a1 at +00:00:30 set KameraURL 0
setzt die URL in dem Dummy KameraURL entsprechend.

Unten in der index.html muss dann noch das Popup geschrieben stehen:
<div data-type="popup" data-device="KameraURL" data-get="STATE" data-get-on="http://IPaddress/camera/httppreview" data-get-off="0" data-height="730" data-width="1290" data-mode="fade" class="">
<div class="dialog">
<div class="nocache" data-type="image" data-device="KameraURL"></div>
</div>
</div>


Ich hoffe das hilft.

LG

howy-1

Ja, Danke, das hilft schonmal etwas weiter.  Nun muss ich nur noch sehen, wie ich das auch für die anderen Kameras hinbekomme, die über ein Image-Widget vom FTUI aus manuell geöffnet werden, mit automatischer Rückkehr zur index.html nach einer bestimmten Zeit.

Vielleicht die Kamera-Buttons im FTUI komplett nur zum schalten von Dummys verwenden und den Befehl zur Anzeige der Kamerastreams mittels AMAD-Befehl (openURL) zum Tablet schicken?  Hätte allerdings den Nachteil, dass das dann eben nur mit diesem einen Tablet funktioniert, und nicht, wenn ich das vom Laptop oder PC aus mache. Ok, war dann wohl nur  "laut gedacht"... ;-) 

Gruß

SirBen

Moin,
ich weiß nicht genau wie du das gemeint hast. Also meine index.html hat das Menü auf der linken Seite. Dort ist ein Button "Kamera". Wenn man auf diesen drückt, öffnet sich das Popup für einen Bestimmten Zeitraum und verschwindet dann wieder. Das heißt, die Seite die vorher angezeigt wurde bleibt weiterhin bestehen.
Wenn du beim Klick auf ein Bild das Popup haben willst, muss du das ungefähr so machen:
<div data-type="popup" data-height="750px" data-width="800px">
  <div class="nocache"
    data-type="image"
    data-opacity="1"
    data-size="100%"
    data-url="IMAGE URL">
      <div class="dialog">
<div class="nocache" data-type="image" data-device="KameraURL"></div>
      </div>
  </div>
</div>


ZitatVielleicht die Kamera-Buttons im FTUI komplett nur zum schalten von Dummys verwenden und den Befehl zur Anzeige der Kamerastreams mittels AMAD-Befehl (openURL) zum Tablet schicken?  Hätte allerdings den Nachteil, dass das dann eben nur mit diesem einen Tablet funktioniert, und nicht, wenn ich das vom Laptop oder PC aus mache. Ok, war dann wohl nur  "laut gedacht"... ;-)
Das habe ich auch nicht so ganz verstanden. Oder hast du meinen Code nicht ganz verstanden?  ;)
Der Button "Kamera" bei mir bewirkt eine Schaltung eines Klingel Dummys. Diese Änderung erzeugt ein Event, das vom Notify erkannt wird, welches dann die entsprechende URL ins KameraURL Dummy kopiert (und einen Timer startet etc.).
Da die Änderung in dem KameraURL Dummy ebenfalls ein Event auslöst, bekommt FTUI bzw. dein Tablet das über Longpoll ebenfalls mit und reagiert mit einem Popup darauf (wegen data-get-on="http://IPaddress/camera/httppreview" in der Index.html).
So ähnlich passiert das dann nach Ablauf des Timers mit dem Ausblenden des Popups.
Ich hoffe das so richtig beschrieben zu haben. Falls jemand mich verbessern möchte, nur zu.  ;)

Den Umweg über den Klingel Dummy mache ich nur, weil ich die Klingel bei mir ans FHEM hängen werde (dann kommt das Kamera Bild automatisch beim Betätigen der Klingel).

LG und frohes Ausprobieren.

howy-1

Hi, dann weiß ich jetzt, was Du meinst.

Zitat von: SirBen am 10 April 2019, 20:14:02
Moin,
ich weiß nicht genau wie du das gemeint hast. Also meine index.html hat das Menü auf der linken Seite. Dort ist ein Button "Kamera". Wenn man auf diesen drückt, öffnet sich das Popup für einen Bestimmten Zeitraum und verschwindet dann wieder. Das heißt, die Seite die vorher angezeigt wurde bleibt weiterhin bestehen.


Bei mir ist die index.html und dazu noch einige Unterseiten (page1.html bis page6.html), die von der index.html aus aufgerufen werden  Page 1 - 3 sind Kameras, deren Bild beim Aufruf erscheint, aber nicht als Popup. Guckst Du:

<li data-row="2" data-col="1" data-sizex="6" data-sizey="5">
    <Header>Kamera1</header>
        <div class="top-space">
            <div data-type="image"
                 data-url="http://MeinServer/Webcam1/video"
                 data-width="100%"
                 data-height="100%"
                 data-opacity="1">
            </div>
        </div>
</li>


Und oben im Header sorgt diese Zeile dafür, dass nach einer gewissen Zeit wieder Page1 angezeigt wird:

<meta http-equiv="refresh" content="180; URL=page1.html">


Aber ich werde das dann wohl spätestens am WE (so ich dazu komme) auf deine Variante mit den Popups umbauen. 
Ein automatisches Popup hatte ich schon aus den tiefen der Forums am laufen, wenn das Hoftor "offen" gemeldet hatte, kam das Kamerabild als Popup. Das lief ebstens, ich hatte es aber verworfen, weil ich irrtümlich dachte, es wäre der Auslöser für die hohe Netzwerklast.
Dann kann ich das ja für alle Kameras so umbasteln, wobei mir die Direktanzeige aber besser gefiel, weil ich da auch noch Schalter für Kameralicht und Nachtsicht integriert hatte. Die "Kameras" sind alte Android-Handys mit IP-Cam-App.  ;-)

Gruß

SirBen

Also soweit ich weiß kannst du in einem Popup auch weitere Widgets einbinden. Beispielsweise Buttons zum Steuern. Oder zum ,,schließen" des Popups mittels set KameraURL 0.
Versuch mal was schönes zu basteln.  ;)
LG