FTUI Neue Version chart_widget

Begonnen von eki, 31 Januar 2016, 00:17:26

Vorheriges Thema - Nächstes Thema

eki

Hallo Mario,

Danke für den Hinweis. Werde aber erst nach dem Urlaub wieder dazu kommen da was dran zu tun. Also erst mal ein bisschen Geduld.

eki

Hallo Mario,

ich habe mich da jetzt mal wieder drangesetzt, brauche aber, glaube ich, noch ein paar Infos, wie das update in der neuen Version wirklich funktioniert. Was ich sehe ist folgendes Verhalten:
Wenn ein data-logdevice definiert ist, dann wird update mit data-logdevice als parameter 'dev' genau einmal am Anfang aufgerufen. Wenn kein data-device definiert ist, ist das der einzige Aufruf von 'update', was ja auch stimmt, weil das logdevice ja seinen Status nicht ändert. Wird ein data-device definiert (zusätzlich zum Logdevice als das Device, das die Inputs für das Logfile liefert, und das dann eben dynamisch seinen Status ändert, wenn sich an den zugrunde liegenden Daten etwas ändert), dann kommt das update, wie erwartet, regelmäßig aber mit dem in data-device definierten parameter 'dev' beim Aufruf. Ist das so richtig? Welche Fälle triggern denn das update?

Bisher prüfe ich im update von chart, ob ein data-logdevice definiert ist, und ob diese Definition dem in update als Parameter übergebenen Wert entspricht nur wenn das erüfllt ist und gleichzeitig der übergebene Wert 'par' dem in data-get definierten Wert entspricht, wird das chart neu gezeichnet.
Bisher hat das funktioniert, wenn der o.g. erste Fall erfüllt ist (data-logdevice und kein data-device). Im zweiten Fall wird nichts gemacht, weil ja das logdevice nicht dem device entspricht (die zuvor erwähnte Prüfung verhindert, dass bei so Dingen wie Label updates das chart gemalt wird).

Um jetzt einigermaßen rückwärts kompatibel zu bleiben (sonst müssten ja alle ihre bisherigen Definitionen ändern), wäre mein Vorschlag, dass ich den ersten Fall genauso zulasse wie ich das bisher mache. Zusätzlich würde ich dann testen ob dev und par passen (wie von Dir vorgeschlagen) und ob das Element ein data-logdevice hat (das gibt es ja nur bei charts oder?) und in dem Fall auch neu zeichnen.

setstate

Wo genau ist jetzt das Problem?
Mit der Version, die ich hier habe und mit dem Beispiel, was ich in die README.md übernommen habe, funktioniert alles bei mir. Auch sehe ich im Log keine unnötigen refreshs. Also alles gut von meiner Seite ...

nhetzke

Hallo zusammen,

ich habe zwei kleine Probleme mit mit dem Chart Widget. Nach dem Update auf die FTUI Version 2.2 funktioniert der automatische Update nicht mehr und ich bekomme zu dem am Anfang des Chart immer eine zusätzliche Linie gezeichnet.
Mein Chart ist wie folgt konfiguriert:

<div
data-type="chart"
data-nofulldays="true"
data-logdevice='["FileLog_BMP180","FileLog_AussenTemperatur"]'
data-columnspec='["4:BMP180.pressure-nn*:0:","4:AussenTemperatur.temperature*:0:"]'
data-style='["ftui l0fill","ftui l2"]'
data-ptype='["lines","histeps"]'
data-uaxis='["primary","secondary"]'
data-legend='["Luftdruck","Temp Aussen"]'
data-yunit=" hPa"
data-ytext="Luftdruck"
data-minvalue="auto"
data-maxvalue="auto"
data-minvalue_sec="auto"
data-maxvalue_sec="auto"
data-yunit_sec="°C"
data-ytext_sec="Temp"
data-yticks="auto"
data-daysago_start="1"
data-daysago_end="-1"
data-crosshair="true"
data-cursorgroup="0"
data-scrollgroup="0"
data-showlegend="true"
data-height="250px"
data-xticks="auto"
class="fullsize nobuttons">
</div>


Screenshot mit der Zusätzlichen Linie ist angehängt.
Entwickler, Projekt und Qualitätsmanager
RasPi1b & FHEM & HM-CFG-USB

gloob

Das gleiche Problem mit der Anfanglinie habe ich aktuell auch bei meinen Charts.
Raspberry Pi 3 | miniCUL 433MHz | nanoCUL 868 MHz | nanoCUL 433 MHz | MySensors WLAN Gateway | LaCrosse WLAN Gateway | SignalESP 433 MHz | SignalESP 868 MHz | HM-MOD-UART WLAN Gateway | IR - 360 Grad WLAN Gateway

eki

#65
Für das Thema Update habe ich eine Lösung, probier mal die angehängte neue Version (@setstate: das ist auch das aus meiner Sicht verbleibende Problem bezüglich update Funktion) und setze data-device auf das Device, das die Daten für das Logfile liefert.

Zu der Linie am Anfang: Das kann ich bei mir nicht nachvollziehen und es sollte eigentlich nur dann passieren, wenn bei den von fhem übermittelten Daten (HTTP Get im widget_chart.js aufgebaut aus columnspec etc.) der Zeitwert Sprünge macht. Damit ich mir das anschauen kann, bräuchte ich ein Stück des Logfiles (am besten 1-2 Tage) bei dem das Verhalten auftritt.

nhetzke

#66
Zitat von: eki am 27 September 2016, 13:03:10
Für das Thema Update habe ich eine Lösung, probier mal die angehängte neue Version (@setstate: das ist auch das aus meiner Sicht verbleibende Problem bezüglich update Funktion) und setze data-device auf das Device, das die Daten für das Logfile liefert.

Zu der Linie am Anfang: Das kann ich bei mir nicht nachvollziehen und es sollte eigentlich nur dann passieren, wenn bei den von fhem übermittelten Daten (HTTP Get im widget_chart.js aufgebaut aus columnspec etc.) der Zeitwert Sprünge macht. Damit ich mir das anschauen kann, bräuchte ich ein Stück des Logfiles (am besten 1-2 Tage) bei dem das Verhalten auftritt.

1. Die Datei werde ich testen.
2. Logs hängen an.
Entwickler, Projekt und Qualitätsmanager
RasPi1b & FHEM & HM-CFG-USB

eki

Zu1: Ich habe natürlich die Version gemeint, die ich direkt an mein vorheriges posting gehängt habe. Auf die erste Seite kommt die erst, wenn ich noch ein bisschen getestet habe (da sind auch noch ein paar andere Korrekturen und Verbesserungen drin).

eki

Zu2: Danke für die Logfiles. Das Problem lag an einem Fehler beim Typ "histeps", der erste Wert wurde nicht richtig gesetzt. Sollte in der an dieses Post angehängten Version beseitigt sein.

nhetzke

Zu1) Augenscheinlich noch ohne autom. Update :( Diagramm wird nicht fortgeführt.
Zu2) Eingespielt und funktioniert.
Entwickler, Projekt und Qualitätsmanager
RasPi1b & FHEM & HM-CFG-USB

eki

Zu1: kannst Du mir mal die chart definition posten?

nhetzke

Zitat von: eki am 27 September 2016, 13:53:20
Zu1: kannst Du mir mal die chart definition posten?
Du möchtest doch bestimmt das was ich bereits in diesem
https://forum.fhem.de/index.php/topic,48450.msg495801.html#msg495801
Post drinn hatte?
Alternativ im Anhang ;)

Entwickler, Projekt und Qualitätsmanager
RasPi1b & FHEM & HM-CFG-USB

eki

#72
Das ist genau das, was ich vermutet hatte ;).

Wie von mir beschrieben, musst Du zusätzlich zur Verwendung des neuen widget_chart.js auch folgenden Eintrag in Dein Definitionsfile einfügen:
data-device="xxx"
Als "xxx" musst Du den Namen des Devices eintragen, dessen Änderungen das Update triggern sollen.

Die FileLog Devices bekommen (zumindest nach meiner Beobachtung) keine Updates, auch wenn sich ihr Inhalt ändert. Daher musste ich einen anderen Weg finden. Falls das Update auf dem Device zu häufig passiert (z.B. bei Devices mit vielen readings, von denen aber nur wenige geloggt werden), muss man eventuell einen dummy definieren, der per notify entsprechend seltener getriggert wird, und den dann als data-device nehmen.

setstate

Die Update Funktion von chart ist aber auch sehr umfangreich, ich sehe da nur sehr schwer durch.

Bei Simple Chart habe ich nur diese 4 Zeilen


    function update(dev,par) {
        this.elements.filterDeviceReading('get',dev,par)
        .each(function(index) {
            refresh($(this));
        });
     };


Wenn Device und Parameter matchen, dann Refresh.

Reagieren auf Popup kann man mit

       elem.closest('[data-type="popup"]').on("fadein", function(event) {
           // do something
       });


gloob

Die Plots sehen jetzt sehr gut aus. Vielen Dank für den Fix
Raspberry Pi 3 | miniCUL 433MHz | nanoCUL 868 MHz | nanoCUL 433 MHz | MySensors WLAN Gateway | LaCrosse WLAN Gateway | SignalESP 433 MHz | SignalESP 868 MHz | HM-MOD-UART WLAN Gateway | IR - 360 Grad WLAN Gateway