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.