[gelöst]FTUI Chart wird nicht neu gezeichnet

Begonnen von AB1970, 22 August 2022, 13:31:12

Vorheriges Thema - Nächstes Thema

AB1970

Hi,
nachdem ich schon seit ung. 1 Jahr nach dem Fehler suche und Unmengen an Foreneinträgen durchgearbeitet habe, sehe ich den Wald vor lauter Bäumen nicht mehr. Meine Hoffnung ist immer noch, das es was triviales ist, aber ich finde es nicht.

Ich benutze FTUI2.6 ( heute geupdated), der  HTTP Server kommuniziert mit Website via web sockets. Webbrowser ist der Fully Browser ( immer mal 1 min an wenn ich in der Nähe bin. )

Und genau hier started das Problem, alle Widgets werden aktualisiert und zeigen den korrekten Status an, aber nicht das Chart Widgets. Dies wird nur nach einem  Reload wieder aktualisiert. was könnte das Problem sein?

Beispiel Widget , aber wie gesagt, es sind alle Chart Widgets, die das Problem haben.

  <header>Wohnzimmer Luftqualität</header>
   <div class="nobuttons normal"
data-type="chart"
data-device="WZ.Klima"
data-get="co2"
data-logfile='["HISTORY","HISTORY","HISTORY"]'
data-logdevice='["logdb","logdb","logdb"]'
data-columnspec='["WZ.Klima:co2:::$val>750?$val=750:$val","WZ.Klima:co2:::$val>1000?$val=1000:$val","WZ.Klima:co2:::$val>1500?$val=1500:$val"]'
data-style='["ftui l4fill","ftui l0fill","ftui l2fill"]'
data-ptype='["lines","lines","lines"]'
data-uaxis='["primary"]'
data-legend='["Gut","Mittel","Schlecht"]'
data-minvalue="auto"
data-maxvalue="auto"
data-height="15vh"
data-yticks="auto"
data-nofulldays="true"
data-cursorgroup="0"
data-scrollgroup="0"
data-yunit=" ppm"
data-xticks="240">
</div>


Meta Data:

<!DOCTYPE html>
<html>
<head>
    <meta name="fhemweb_url" content="http://10.0.1.58:8083/fhem">
    <meta name="apple-mobile-web-app-capable" content="yes" />
    <meta name="apple-mobile-web-app-status-bar-style" content="black" />
    <link rel="apple-touch-icon" href="http://10.0.1.58/tablet/favhomekit.png"/>
    <link rel="icon" href="favhomekit.png" type="image/png" />
    <!-- define your personal style here, it wont be overwritten  -->
    <link rel="stylesheet" href="css/fhem-tablet-ui-user.css" />
    <meta name="longpoll" content="websocket">
    <!meta name="longpoll" content="1"/>
    <meta charset="UTF-8"/>
    <script src="js/fhem-tablet-ui.min.js" defer></script>
    <title>FHEM-Tablet-UI</title>
</head>
<body onload="document.body.style.opacity='1'" style="background-color:black;">
 
    <div ></div>
    <div class="gridster">
        <ul>
            <li data-row="1" data-col="1" data-sizex="1" data-sizey="7" data-template="menu.html"></li>
        </ul>
    </div>
</body>
</html>



Bin für jede Idee dankbar :-)

Viele Grüsse
Andreas

eki

Das Chart wird dann neu gezeichnet, wenn ein Event des bei data-device angegebenen Devices generiert wird (und natürlich, wenn irgendwelche Buttons gedrückt werden).
Gibt es irgendein Event, das durch das Aktivieren des Fully Browsers generiert wird?

AB1970

Danke!
Es gibt in der Tat ein FHEM Modul für den Fully Browser.
Ich habe die Definition, wie folgt geändert:

<header>Wohnzimmer Luftqualität</header>
   <div class="nobuttons normal"
data-type="chart"
data-device="TR.Tablet"
data-get="co2"
data-logfile='["HISTORY","HISTORY","HISTORY"]'
data-logdevice='["logdb","logdb","logdb"]'
data-columnspec='["WZ.Klima:co2:::$val>750?$val=750:$val","WZ.Klima:co2:::$val>1000?$val=1000:$val","WZ.Klima:co2:::$val>1500?$val=1500:$val"]'
data-style='["ftui l4fill","ftui l0fill","ftui l2fill"]'
data-ptype='["lines","lines","lines"]'
data-uaxis='["primary"]'
data-legend='["Gut","Mittel","Schlecht"]'
data-minvalue="auto"
data-maxvalue="auto"
data-height="15vh"
data-yticks="auto"
data-nofulldays="true"
data-cursorgroup="0"
data-scrollgroup="0"
data-yunit=" ppm"
data-xticks="240">
</div>



Ich lasse es Dich wissen, ob es was bringt. Aber ein dickes Dankeschön schon einmal.

AB1970

#3
Hi ,
leider keinen Erfolg. Im angehängten Bild hab ich mir die Websockets mit den Chrome Developertools angeschaut ( nicht das ich zuviel Ahnung hätte , aber Google hilft) Der Websocket übermittelt  das Event von TR.Tablet, aber leider wird das Diagramm nicht neugezeichnet. Ich sehe auch nicht das irgendwelche Chart Daten übertragen werden.

Was könnte denn noch das Problem sein?

Vielen Dank für deine bisherige Hilfe!
Andreas

eki

Sorry für die Funkstille, war im Urlaub und nur beding online.

Noch eine Frage um das Thema weiter einzugrenzen: Geht das Update denn in einem "normalen" Browser (FF, Chrome etc.)?

AB1970

Hi ,
vielen Dank für deine Antwort und keine Sorge , mir ist sehr wohl bewusst, das wir uns alle gegenseitig zu helfen versuchen und daher bin ich dankbar für jede Antwort.
Dieser Fehler fällt auf dem Tablet / Computer in der Regel nicht auf , da man hier meist nur kurz die Seite lädt und dann wieder schließt. Ich habe es unter Safari und Chrome getestet und ja der Fehler ist auch da sichtbar .

Könntest du mal versuchen den Fehler mit einem Chart zu reproduzieren? Eine Besonderheit habe ich wohl: LogDB.

Vielleicht liegt es daran ?

Viele Grüße Andreas

eki

Ich antworte mal hier (Du hast die gleiche Frage ja auch noch mal in einem anderen Thread gestellt). Ich habe jetzt noch mal Deine Definition angeschaut. Wenn Du TR.Tablet als data-device verwendest und "co2" als data-get, dann wird das wohl eher nicht funktionieren (oder gibt es im Device TR.Tablet ein Reading co2?). Lass das data-get mal weg, dann wird das STATE Internal oder das state reading (falls es das gibt) verwendet um zu triggern, vielleicht passt es ja dann.

AB1970

Dank dir !
Ich habe folgenden Versuch gestartet.
Devices auf

data-device="WZ.Klima"
data-get="co2"

geändert. 
Cache gelöscht
FTUI UI neu geladen
2 Stunden gewartet ( Damit das Neuzeichnen gut sichtbar ist )

Tablet angeschaltet
-1 Minute gewartet.
-Messung bei NetAtmo angefordert.
-In der FHEM UI verifiziert, das sich der CO2 Wert geändert hat.
Diagramm wird nicht neu gezeichnet
Siehst du noch einen Fehler? Oder könnte ich das Diagramm alle 5 min automatisch neu  zeichnen lassen?



   <header>Wohnzimmer Luftqualität</header>
   <div class="nobuttons normal"
data-type="chart"
data-device="WZ.Klima"
data-get="co2"
data-logfile='["HISTORY","HISTORY","HISTORY"]'
data-logdevice='["logdb","logdb","logdb"]'
data-columnspec='["WZ.Klima:co2:::$val>750?$val=750:$val","WZ.Klima:co2:::$val>1000?$val=1000:$val","WZ.Klima:co2:::$val>1500?$val=1500:$val"]'
data-style='["ftui l4fill","ftui l0fill","ftui l2fill"]'
data-ptype='["lines","lines","lines"]'
data-uaxis='["primary"]'
data-legend='["Gut","Mittel","Schlecht"]'
data-minvalue="auto"
data-maxvalue="auto"
data-height="15vh"
data-yticks="auto"
data-nofulldays="true"
data-cursorgroup="0"
data-scrollgroup="0"
data-yunit=" ppm"
data-xticks="240">
</div>


eki

Ich habe das jetzt noch mal bei mir versucht nachzustellen, kann allerdings nicht mit fully testen sondern nur mit Standard Browsern. LogDB ist kein Problem, das habe ich bei mir auch mal ausprobiert und es hat bei mir geklappt.

Kannst Du noch mal ein List Deines Devices posten (list WZ.Klima in der FHEM Kommandozeile).

eki

Noch was, wenn es am Fully liegt, könntest Du auch noch mal schauen, ob sich was ändert, wenn Du von Websocket auf Longpoll umschaltest
Also anstatt:
<meta name="longpoll" content="websocket">
<meta name="longpoll" content="1">

AB1970

Hi , dank dir , sorry ich war im Urlaub, daher die späte Antwort.

Hier ist das List:

Internals:
   DEF        70:ee:50:83:80:28
   Device     70:ee:50:83:80:28
   FUUID      61c32aa7-f33f-9b57-dc1c-ad25759041832582
   IODev      WO.Wetter
   LAST_POLL  2022-10-12 11:59:17
   NAME       WZ.Klima
   NOTIFYDEV  global
   NR         1809
   NTFY_ORDER 50-WZ.Klima
   STATE      gruen
   SUBTYPE    DEVICE
   TYPE       netatmo
   altitude   178
   city       Aachen
   country    DE
   dataTypes  Temperature,CO2,Humidity,Noise,Pressure
   date_setup 2021-12-22 12:46:50
   eventCount 5988
   firmware   181
   last_setup 2021-12-22 12:46:50
   last_status_store 2022-10-12 11:57:26
   location   50.785734,6.093915
   model      NAMain
   moduleName Wohnzimmer
   openRequests 0
   stationName Zuhause (Wohnzimmer)
   status     ok
   wifi_status 22
   .attraggr:
   .attrminint:
   Helper:
     DBLOG:
       co2:
         logdb:
           TIME       1665569331.33213
           VALUE      919
       humidity:
         logdb:
           TIME       1665568757.17293
           VALUE      52
       pressure:
         logdb:
           TIME       1665568757.18387
           VALUE      1024.4
       pressure_abs:
         logdb:
           TIME       1665568775.84476
           VALUE      1003
       pressure_trend:
         logdb:
           TIME       1665568775.85008
           VALUE      stable
       temperature:
         logdb:
           TIME       1665568757.14344
           VALUE      20.0
   READINGS:
     2022-10-12 11:59:17   .lastupdate     1665568757
     2022-10-09 00:58:05   IODev           WO.Wetter
     2022-10-12 11:59:17   active          ok
     2022-09-18 20:21:04   c02             1102+1
     2022-10-12 12:08:51   co2             919
     2022-10-12 11:57:23   humidity        52
     2022-10-12 11:57:23   noise           42
     2022-10-12 11:57:23   pressure        1024.4
     2022-10-12 11:57:23   pressure_abs    1003
     2022-10-12 11:57:23   pressure_trend  stable
     2022-10-12 07:24:37   temp_max        20.3
     2022-10-12 05:48:50   temp_min        18.8
     2022-10-12 11:57:23   temp_trend      stable
     2022-10-12 11:57:23   temperature     20.0
   helper:
     INTERVAL   900
     NEXT_POLL  1665569363
     last_status_store 1665568646
     readingNames:
       temperature
       co2
       humidity
       noise
       pressure
Attributes:
   IODev      WO.Wetter
   alias      Wohnzimmer Klima
   devStateIcon gruen:10px-kreis-gruen gelb:10px-kreis-gelb rot:10px-kreis-rot
   group      Luftqualität
   room       Technik,Wohnzimmer
   stateFormat {
my $voc=ReadingsVal("WZ.Klima","co2",0);
if ($voc <1000) {return "gruen"};
if ($voc <1500) {return "gelb"} else {return "rot"};
}


Deinen Tip probiere ich gerade aus.

Drücke mir die Daumen.

Viele Grüße
Andreas

AB1970

Leider macht dein letzter Vorschlag auch keinen Unterschied , was mir allerdings auf gefallen ist:
Wenn ich zu einer der Unterseiten und wieder zurückwechsle , dann werden die Chart aktualisiert.
Hilft dir der Hinweis ?

Viele Grüße Andreas

HGButte

Habe genau das gleiche Problem.

Die Charts haben sich noch nie aktualisiert.
Ein Wechsel auf andere Seite bringt bei mir nichts. Nur wenn ich die Navigationsbuttons "rechts" - "links" betätige oder die Seite neu lade aktualisiert sich das Chart.

Ich habe viele Charts auf diversen Seiten. Teils auf Basis von filelog oder logdb. Es aktualisiert sind keine einziges.

Browser ist Chromium.

wcraffonara

Hallo,
  ich steige auch mit ein in dieser Diskussion... habe genau das gleiche Problem (schon seit 2018 :) ) und würde es gerne lösen. Ich verwende auch Fully. Hier mein Post:
https://forum.fhem.de/index.php/topic,90412.0.html

Ich verwende Dblog.

lG
Walter

AB1970

Danke, das ihr euch meldet. Ich bekomme auch langsam das Gefühl, dass es sich hier um einen Softwarefehler im Chart.js handelt. Der Fehler fällten der Regel nicht auf weil ein Tablet die Seiten der Regel neu lädt und diese nicht lange offen bleibt.
Ich kann auch nur sagen , nach langem suchen , ich sehe keine Optionen bei mir mehr und mit alle anderen Widjets funktioniert es einwandfrei.

lg
Andreas