Wieso wird hier nicht aktualisiert?

Begonnen von Det20, 03 Februar 2019, 18:47:12

Vorheriges Thema - Nächstes Thema

Det20

Hallo,

irgendwie verstehe ich folgendes Problem nicht. Gegeben ist ein Dummy und ein Reading zur Anzeige von 2 Temperaturen:


  <div data-type="label" data-device="AussenTemp" data-fix=1 class="great thin top-narrow" data-unit=" &deg;C"></div><br>
  <div data-type="label" data-get="Strom.Aussen.Zisterne:temperatureExt" data-fix=1 class="top-narrow" data-pre-text="Carport "></div>


Das funktioniert. Baue ich nun ein Link drumrum, wird nix mehr aktualisiert:


  <div data-type="link" data-url="#sub_weather.html" class="prefetch fixcontent nocache" data-color="white">
     <div data-type="label" data-device="AussenTemp" data-fix=1 class="great thin top-narrow" data-unit=" &deg;C"></div><br>
     <div data-type="label" data-get="Strom.Aussen.Zisterne:temperatureExt" data-fix=1 class="top-narrow" data-pre-text="Carport "></div>
  </div>


Ist das ein Bug? Muss das so?

curt

Es wird Dir nicht helfen - aber den Trödel mit "label" habe ich auch.
RPI 4 - Jeelink HomeMatic Z-Wave

amenomade

Ich würde zuerst ohne prefetch probieren.
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

curt

Ich denke, dass es viel trivialer ist. Ich las so vor mich hin. Und sah dann aus dem Augenwinkel, dass es für das Widget Label die Option "data-refresh" gibt. Oh shit.

In wirklich keinem der bei mir kritischen Label-Konstrukte steht diese Option. <seufzt>

Ich werkele dann gleich mal los ...
RPI 4 - Jeelink HomeMatic Z-Wave

sinus61

Ich hab noch nie data-refresh bei Labels benutzt und meine aktualisieren sich immer sofort. Wenn ein Label nicht zeitnah aktualisiert wird würde ich erstmal sehen ob in FHEM für das Reading ein event generiert wird. Dann scheint data-refresh aber auch nicht zu helfen.

Im obigen Beispiel mag es natürlich eine Wechselwirkung mit dem link Widget zu geben.


Tungsten

hast du es lösen können?

Ich habe seit ein paar Tagen auch das Problem das Werte nicht mehr aktualisiert werden oder gar nicht erst angezeigt werden. Komischerweise aber sind es auf verschiedenen Geräten und Browsern immer andere.

https://forum.fhem.de/index.php/topic,97228.0.html



Det20

Ne leider nicht, verzichte aktuell auf Änderungen, die es mir kaputt machen würden.

amenomade

Keep it simple.

Das beste, um sowas zu debuggen, ist, alle nicht erforderliche Klassen und Attribute zu löschen und dann nach und nach wieder hinzufügen.
Fang an mit folgendes:
  <div data-type="link" data-url="#sub_weather.html" >
     <div data-type="label" data-device="AussenTemp"></div>
  </div>

Und dann entwickle weiter. Wenn das schon nicht funktioniert, guck mal die longpoll Parameter und die Events vom Device im Eventmonitor.
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

ToM_ToM

Ist es nur das eine Label welches sich nicht aktualisiert oder betrifft es auch andere Devices?
Prüf mal ob du das gleiche Problem auch mit anderen Devices hast.

WebView größer als Version 68.x verursacht z.B. Probleme dass nach einigen Minuten keine Daten mehr aktualisiert werden - allerdings nicht nur von Labels.
Wenn du Chrome auf dem Tablet hast, wird die Chromium Engine verwendet statt WebView. Dann müsstest du Chrome deinstallieren und schauen dass du WebView 68.x drauf machst.
Du kannst das Ganze auch erst mal mit Firefox testen, da Firefox die Gecko Engine nutzt. Wenns damit läuft.
Hardware: BananaPi, Busmaster CUL, SanDisk 16GB Ultra SD, 16 GB USB-Stick | Software: Armbian, FHEM 5.8

curt

Zitat von: ToM_ToM am 12 Februar 2019, 11:35:09
Ist es nur das eine Label welches sich nicht aktualisiert oder betrifft es auch andere Devices?

Mir ist das bislang nur bei Label aufgefallen.

Zitat von: ToM_ToM am 12 Februar 2019, 11:35:09
Wenn du Chrome auf dem Tablet hast, wird die Chromium Engine verwendet statt WebView. Dann müsstest du Chrome deinstallieren und schauen dass du WebView 68.x drauf machst.

Ich bin zwar nicht gemeint. Aber das wird schwierig, wenn man auf RPi Vivaldi einsetzt, da hängt auch Chromium drunter. Gibt es dafür überhaupt einen Lösungsansatz?

Zitat von: ToM_ToM am 12 Februar 2019, 11:35:09
Du kannst das Ganze auch erst mal mit Firefox testen, da Firefox die Gecko Engine nutzt. Wenns damit läuft.

Wenn mir recht ist, war das mal. Die haben nun auch Chromium unter der Haube. Bis 56 war Gecko.

Zitat von: amenomade am 12 Februar 2019, 10:20:41
guck mal die longpoll Parameter und die Events vom Device im Eventmonitor.

Interessanter Hinweis. Bei lokalem Feinstaub kommt gar kein Event trotz event-on-*. Bei openweatherdata (da gibt es auch Ärger) habe ich das noch nicht geprüft. Bei externem Feinstaub kommen events, werden aber nicht angezeigt.

longpoll ist auf websocket. Was bewirkt denn "1"?
RPI 4 - Jeelink HomeMatic Z-Wave

curt

@ToM_ToM @amenomade @Tungsten @sinus61 @setstate
Es ist das Widget Link. Es verhält sich nicht bestimmungsgemäß.

Ich wählte die Testanordnung von @amenomade in #7. Es traten gegeneinander an:


         <div>Nur Zahna:</div>

<div data-type="label"
      data-device="LuftZahna"
      data-get="PM10"
      >
</div>

<div data-type="link"
      data-url="#Feinstaub.html"
      >
<div data-type="label"
      data-device="LuftZahna"
      data-get="PM10"
      >
</div>
</div>


Mehrere Augen sehen mehr, ihr könnt das selbst problemlos nachvollziehen [¹]: In eure fhem.cfg gehört


define LuftZahna LuftdatenInfo remote 15976
attr LuftZahna event-on-change-reading PM2.5,PM10
attr LuftZahna event-on-update-reading PM2.5,PM10


Es ist ganz eindeutig das Widget "Link", welches die Werte des von "Link" umklammerten Widgets "Label" verfälscht. (Ich halte das für einen kritischen Fehler, das Widget "Link" ist alles andere als unbedeutend.)

Es hat grundsätzlich NICHTS mit den Browsern zu tun, weil: Auf mehreren Browsern liefert Widget "Label" zeitnah völlig korrekt aus.

Sofern man nun "Label" mit "Link" klammert, sieht es völlig anders aus: Der nun angezeigte Wert von "Label" ist falsch, ist ein vergangener/veralteter Wert.

Dabei (also in Bezug auf das Widget Link) ist interessant, dass die dargestellten Werte bei (schnelle Testanordnung: Vivaldi unter U18.04, Firefox56 unter U14.04) *nochmals* differieren!

[¹] Die Testkonstellation liefert nur alle 5 Minuten einen Wert. Daher ist es für mich im Moment schwierig zu sagen, wie die Zeitleiste der Veralterung wirklich ist.

In der Anlage Vivaldi gegen alten Firefox. Screenshots gleichzeitig gemacht. Erste Zeile jeweils der Wert von Label (identisch zu dem FHEM-Wert). In der zweiten Zeile der von "Link" verfälschte Wert.
RPI 4 - Jeelink HomeMatic Z-Wave

sinus61

Zitat von: curt am 12 Februar 2019, 21:22:11
longpoll ist auf websocket. Was bewirkt denn "1"?

Es wird Ajax statt Websocket benutzt. Das funktioniert meiner Erfahrung nach auf neuen Android-Tablets inzwischen besser, wenn man zwischendurch den Bildschirm abschaltet. Wenn man keine Möglichkeit zu einem Downgrade der Webview auf Version 68 hat sollte man das zumindest probieren.

sinus61

Zitat von: curt am 13 Februar 2019, 04:29:55
[¹] Die Testkonstellation liefert nur alle 5 Minuten einen Wert. Daher ist es für mich im Moment schwierig zu sagen, wie die Zeitleiste der Veralterung wirklich ist.

Hast Du shortpoll_interval auf 5 Minuten gestellt? Dann aktualisiert sich der Wert weil dann alle Werte einmal neu übertragen werden.

curt

@sinus61
Zitat von: sinus61 am 13 Februar 2019, 16:19:37
Hast Du shortpoll_interval auf 5 Minuten gestellt? Dann aktualisiert sich der Wert weil dann alle Werte einmal neu übertragen werden.

Ich habe überhaupt kein ... Du meinst doch in index.html?

Ich nahm die als Beispiel vorliegende 1.3.5 als index.html und erweiterte sie entsprechend meiner Bedürfnisse. Ein grep auf "short" bringt eine einzige Zeile:


        <meta name="longpoll" content="1"> <!-- 1=longpoll;0=shortpoll every 30sec --


Wie müsste das denn richtig aussehen?
RPI 4 - Jeelink HomeMatic Z-Wave

sinus61

Das ist schon so richtig. Damit wird über longpoll immer aktualisiert wenn sich in FHEM etwas ändert und dafür ein Event ausgelöst wird.

Ohne weitere Angabe gibt es außerdem einen shortpoll der alle x Sekunden alle Werte aktualisiert, standardmäßig glaube ich alle 15 Minuten. Das kann man über die Angabe von shortpoll_interval individuell einstellen.

Wenn sich also nicht sofort etwas ändert obwohl sich der Wert in FHEM ändert fehlt meist das Event in FHEM. Dann kommt der Wert eben irgendwann über den shortpoll rein. Ausnahme sind dann halt Probleme wie möglicherweise hier mit dem Link Widget.

curt

@sinus61
<meta name="shortpoll_interval" content="30">

Testweise eingebaut. Ändert nichts.

Ich habe ja in #10 ein sofort nutzbares Beispiel gegeben. Hast Du das bei Dir mal testweise eingebaut und kannst das Verhalten nachvollziehen?
RPI 4 - Jeelink HomeMatic Z-Wave

curt

@setstate
Interessant. Ich habe was.

Ich habe das Pagebutton-Design. Das Phänomen tritt auf in Unter-Seiten, übrigens nebst Widget Link auch beim Widget Range. Es tritt nicht auf, wenn ich das Test-Konstrukt auf die default-Seite packe.

Ich weiß nicht, ob wir da bei data-parent bzw. class="prefetch" angekommen sind. Möglicherweise. Leider kann ich damit nicht so recht umgehen: Ich finde nirgendwo etwas, was das Vorgehen vernünftig beschreibt.
RPI 4 - Jeelink HomeMatic Z-Wave

setstate

link unterstützt aktuell gar keine embedded widgets.
Das müsste ich erst noch einbauen, so wie es beim Basiswidget "famultibutton" drin ist.

curt

Zitat von: setstate am 16 Februar 2019, 13:34:40
link unterstützt aktuell gar keine embedded widgets.
Das müsste ich erst noch einbauen

Das wäre sehr erfreulich. Wie kann ich Dich dazu motivieren?

Folgendes Verhalten habe *ich* im Moment (immer die Konstellation, dass Link das Widget Label [bzw. Range] klammert) hier:

Klassisches Pagebuttondesign, index.html. Die per default angezeigte Seite ist uebersicht.html. Eine anwählbare Seite ist wetter. html.

Sofern ich das Konstrukt (sofort bei Dir nutzbares Beispiel unter #10) in wetter.html packe, sind die ausgegebenen Werte für Label und für Link[Label] unterschiedlich. Wenn das Konstrukt in der default-Seite (uebersicht.html) steht, sind die Werte identisch.

@setstate,
eine andere Frage. Ich habe dazu keine klare Vorgehensanweisung gefunden:
Ich las von data-parent bzw. class="prefetch". Diese bewirken wohl irgend etwas bei deep-Seiten. Ich habe keines dieser Konstrukte. Kannst Du bitte ganz konkret sagen, wohin das Konstrukt gehört?

Ich will zurück zum Ursprungsthema kommen:
Es wäre sehr schön, wenn Widget Link eingeschlossene Widgets könnte.

Danke!
RPI 4 - Jeelink HomeMatic Z-Wave

setstate


Det20


curt

@setstate
Seit dem Update bekomme ich bei Neuaufruf mehrere Toastnachrichten diesen Inhalts: fhem-tablet-ui.js 957 Failed to execute SEND on websocket . still in connecting state.

Teilweise wird die Seite nicht vollständig aufgebaut.
RPI 4 - Jeelink HomeMatic Z-Wave

setstate

Okay, dann muss ich noch auf den Connection Status achten, bevor man etwas sendet ...

Da ist dein System wohl etwas langsamer  8)

curt

Zitat von: setstate am 19 Februar 2019, 18:21:44
Okay, dann muss ich noch auf den Connection Status achten, bevor man etwas sendet ...

Ich kann lediglich berichten, dass es (dann) auf praktisch allen Seiten Ausfälle gibt (nicht ein Inhalt im Widget Link wird dann dargestellt!) - logisch, ich nutze das Widget Link massiv.

Zitat von: setstate am 19 Februar 2019, 18:21:44
Da ist dein System wohl etwas langsamer  8)

RPi 3+, dort nur FHEM, FTUI. Sonst nichts. - Wäre es möglich, dass die massive parallele Nutzung des Widgets Link ein Problem darstellt?
RPI 4 - Jeelink HomeMatic Z-Wave

curt

Das "erledigt" im Subject ist ja leider falsch.

@setstate
Du hast das Problem noch im Auge?
RPI 4 - Jeelink HomeMatic Z-Wave

setstate

Update gezogen? Sollte nicht mehr passieren.

curt

Zitat von: setstate am 24 Februar 2019, 14:26:58
Update gezogen? Sollte nicht mehr passieren.

Neueste Version gezogen, Problem minimal anders: Widgets gar nicht mehr dargestellt.

Ich schaffe das heute nicht, muss auch selbst noch genau prüfen. Ich würde in einigen Tagen in diesem Thread neu aufrufen.
RPI 4 - Jeelink HomeMatic Z-Wave

curt

Hallo @setstate,

habe bitte zwei Minuten für mich.

Sicher 70% meiner Kacheln (Gridster, Pagetab-Navigation links) sind anklickbar und der Klick führt zu einer jeweils andere nachzuladenden Teilseite. Diese nachzuladenden Teilseiten haben nur den body-Inhalt einer html-Seite; keine Dokumentdeklaration, kein head, nichts. Leider habe ich schon nicht verstanden, wie/wo man preload bzw. das alternative [hab vergessen] einsetzt. Es wäre schon, wenn Du es mir bitte erklären würdest.

Ich nutze das Widget Link ähnlich wie einen html-Link:
In einer Kachel klammere ich einen oder auch mehrere DIV-Konstruktionen und teils auch mehrere Widgets. Das geht (scheinbar) recht schön. [Ich weiß nicht, ob man an Stelle von Link auch Pagetab nehmen könnte, meine damaligen Versuche endeten jedenfalls katastrophal.

Vor Deiner letzten Änderung des Widgets Link wurde Label und Range (in Unterseiten) nicht bzw. stochastisch aktualisiert. Nach Deiner letzten Aktualisierung wird u.a. das Widget "Thermostat" gar nicht mehr dargestellt - der dazugehörige Zahlenwert ist noch da, steht aber auf "10".

Vielleicht gehe ich die Sache auch völlig falsch an: Ich möchte beliebige Kacheln anklickbar machen - dann soll eine definierte neue Pagetab-Seite nachgeladen werden. Ich hoffe, ich konnte mich verständlich ausdrücken.
RPI 4 - Jeelink HomeMatic Z-Wave