FTUI Neue Version chart_widget

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

Vorheriges Thema - Nächstes Thema

eki

Noch eine Frage: funktionieren wirklich alle Buttons nicht (also +/- </> Legend Cursor) oder geht einer von denen (Hintergrund ist dass für die verschiedenen Buttons z.T. unterschiedliche Methoden verwendet werden und wenn irgendetwas davon geht lässt das Schlüsse auf den Fehler zu).

freetz

#121
Auch wenn ich nicht direkt angesprochen war: Bei mir tritt das Problem bei Firefox mit den Zoom- und Verschiebe-Buttons dann auf, wenn ich das Widget über meinen DynDNS-Namen aufrufe, der nicht über den Standard-Port 8083 geht, sondern über 18083. Wenn ich die Installation über die lokale IP aufrufe, gibt es keine Probleme.
[EDIT: Die Buttons werden ausgeführt, jedoch mit extremer Verzögerung (Minuten?) - solange ist auch kein anderer Button auf der Seite anklickbar, auch außerhalb des Chart-Widgets]

Ein anderer seltsamer Fehler taucht bei mir aber auf, wenn ich bestimmte Werte plotten möchte, die sich von den übrigen aber eigentlich nicht unterscheiden (sollten): Ich möchte von meinem Max-Wandthermostat sowohl die gemessene Temperatur als auch die Ziel-Temperatur plotten lassen. Die gemessene Temperatur wird angezeigt, die Ziel-Temperatur (desiredTemperature) jedoch nicht und führt dazu, dass das Chart gänzlich leer bleibt. In der Konsole erscheint der Fehler
TypeError: pointsarray[k][ i ] is undefined [Weitere Informationen] widget_chart.js:720:5
In der Log-Zeile darüber wird allerdings noch gemeldet "function widget_chart.refresh() Got 53 points for Graph 2".
Es werden also genug Werte gefunden, die über eine sqlite3-Abfrage im Vergleich auch genau so aussehen, wie die der Ist-Temperatur.

Kann ich da noch weitere Informationen beisteuern oder worauf ich achten sollte?

Vielen Dank und beste Grüße


Frederik
Alle Infos zur Anbindung von Heizungssystemen mit PPS-, LPB- bzw. BSB-Bus ans LAN gibt es hier:
https://github.com/fredlcore/bsb_lan

Alle Infos zum WLAN-Interface "Robotan" für Ambrogio/Stiga/Wolf und baugleiche Rasenmähroboter:
https://github.com/fredlcore/robotan

eki

Das. Verhalten mit den Buttons ist schon sehr eigenartig. Offensichtlich braucht das Get welches die Punkte vom Server holt sehr lange (oder der Aufbau des Charts, aber der läuft ja komplett auf dem Client, deshalb tippe ich auf die Kommunikation zu Fhem). Es gibt im Browser die Möglichkeit zu schauen wie lange die einzelnen get brauchen (rechte Maustaste inspect und dann auf den Reiter Network gehen).

Für das zweite Problem wäre es schön mal die Chart Definition und die Ausgabe der Konsole zu sehe, poste das mal bitte, dann schau ichs mir an.

freetz

Danke für die schnelle Rückmeldung, ich glaube ich habe den Fehler gefunden, als ich mir das XHR-Log im Browser angeschaut habe: Der pointsarray-Fehler tritt dann auf, wenn bei den zurückgemeldeten Readings (in dem Fall der Ziel-Temperatur) Werte leer sind. Das sollte vermutlich eigentlich nicht vorkommen, ist aber bei mir bei einigen Einträgen in der Datenbank der Fall (reproduzierbar immer dann, wenn ich die Max auf "auto" anstatt auf eine feste Gradzahl setze. Da ich mir die Daten im 24h-Rückblick anzeigen lasse, scheint es jetzt gerade zu gehen, weil im Moment kein Leerfeld in dem Datenbereich ist. Wenn ich jetzt 24h zurück gehe, wird der Graph angezeigt, so dass das der Fehler nur dann zu einem komplett leeren Diagramm führt, wenn dieser Fehler in der initialen Darstellung auftaucht.

Hier wie gewünscht die Definition und das Protokoll:

<div    data-type="chart"
data-logdevice='["logdb"]'
data-logfile="HISTORY"
data-columnspec='["Wohnzimmer_Thermostat:valveposition","Wohnzimmer_Wandthermostat:temperature","Wohnzimmer_Wandthermostat:desiredTemperature"]'
data-style='["ftui l6fill","ftui l0fill","ftui l0"]'
data-ptype='["steps","quadraticSmooth","steps"]'
data-uaxis='["primary","secondary","secondary"]'
data-legend='["Ventil","Ist-Temperatur","Soll-Temperatur"]'
data-yunit_sec="&deg; C"
data-ytext_sec="Temperatur"
data-minvalue_sec="-5"
data-maxvalue_sec="30"
data-yunit="%"
data-ytext="Prozent"
data-height="300"
data-yticks="auto"
data-minvalue="0"
data-maxvalue="100"
data-daysago_start="24h"
data-daysago_end="0h"
data-nofulldays="true"
data-cursorgroup="1"
data-scrollgroup="1"
class="wider"
data-xticks="auto">


GET XHR http://local.abcde.de:18083/fhem/fhem/ [HTTP/1.1 200 OK 84ms]
Antwort
2016-11-26_22:52:25 16.0
2016-11-26_22:59:49 16.0
2016-11-26_23:29:50 16.0
2016-11-26_23:50:05 16.0
2016-11-27_00:21:21 16.0
2016-11-27_00:53:06 16.0
2016-11-27_01:24:30 16.0
2016-11-27_01:56:05 16.0
2016-11-27_02:27:21 16.0
2016-11-27_02:59:04 16.0
2016-11-27_03:30:27 16.0
2016-11-27_04:02:01 16.0
2016-11-27_04:33:31 16.0
2016-11-27_05:05:08 16.0
2016-11-27_05:36:39 16.0
2016-11-27_06:08:07 16.0
2016-11-27_06:39:45 16.0
2016-11-27_07:11:20 16.0
2016-11-27_07:42:34 16.0
2016-11-27_08:14:16 16.0
2016-11-27_08:45:38 16.0
2016-11-27_09:17:12 16.0
2016-11-27_09:48:41 16.0
2016-11-27_10:20:22 16.0
2016-11-27_10:51:42 16.0
2016-11-27_11:23:14 16.0
2016-11-27_11:54:42 16.0
2016-11-27_12:26:22 16.0
2016-11-27_12:30:50
2016-11-27_12:30:50 16
2016-11-27_12:30:51 20.0
2016-11-27_12:31:01 16.0
2016-11-27_12:31:19
2016-11-27_12:31:20 20.0
2016-11-27_13:03:37 20.0
2016-11-27_13:35:08 20.0
2016-11-27_14:06:36 20.0
2016-11-27_14:37:59 20.0
2016-11-27_15:09:34 20.0
2016-11-27_15:41:04 20.0
2016-11-27_16:12:30 20.0
2016-11-27_16:44:08 20.0
2016-11-27_17:15:41 20.0
2016-11-27_17:47:04 20.0
2016-11-27_18:18:39 20.0
2016-11-27_18:50:10 20.0
2016-11-27_19:21:52 20.0
2016-11-27_19:53:14 20.0
2016-11-27_20:10:20 20.0
2016-11-27_20:41:56 20.0
2016-11-27_21:13:28 20.0
2016-11-27_21:44:54 20.0
2016-11-27_21:50:42 20.0
2016-11-27_21:53:38 20.0
2016-11-27_22:07:52
2016-11-27_22:07:52 16
2016-11-27_22:08:02 16.0
2016-11-27_22:10:16
2016-11-27_22:10:17 20.0
2016-11-27_22:30:28 17.0
#Wohnzimmer_Wandthermostat:desiredTemperature:::


2 function widget_chart.refresh() Got 60 points for Graph 3widget_chart.js:51:35
TypeError: pointsarray[k][i] is undefined [Weitere Informationen]widget_chart.js:720:5
Alle Infos zur Anbindung von Heizungssystemen mit PPS-, LPB- bzw. BSB-Bus ans LAN gibt es hier:
https://github.com/fredlcore/bsb_lan

Alle Infos zum WLAN-Interface "Robotan" für Ambrogio/Stiga/Wolf und baugleiche Rasenmähroboter:
https://github.com/fredlcore/robotan

freetz

Zitat von: eki am 14 November 2016, 12:35:45
Ja, das geht mit den folgenden 3 Einstellungen:

data-daysago_start="24h"
data-daysago_end="0h"
data-nofulldays="true"


Und darf ich hier noch mal nachfragen, ob es auch möglich ist, auf der X-Achse bei diesen (sehr praktischen!) Einstellungen trotzdem nur volle Stunden angezeigt zu bekommen? Jetzt ist es 22:57 und ich bekomme dann immer Markierungen zu xx:57. Toll wäre, wenn ich auch bei einem etwa 1000 Pixel breiten Chart auf der X-Achse für jede volle Stunde eine Markierung erzeugen lassen könnte. Geht das vielleicht schon oder darf ich mir das wünschen ;)?

Viele Grüße

F.
Alle Infos zur Anbindung von Heizungssystemen mit PPS-, LPB- bzw. BSB-Bus ans LAN gibt es hier:
https://github.com/fredlcore/bsb_lan

Alle Infos zum WLAN-Interface "Robotan" für Ambrogio/Stiga/Wolf und baugleiche Rasenmähroboter:
https://github.com/fredlcore/robotan

eki

Danke für die Hinweise, mal wieder ein Spezialfall, den es abzufangen gilt, ich werde mich darum kümmern.

Das mit den geraden Stunden geht bisher nicht, ich werde mal schauen, ob ich Deinen Wunsch noch vor Weihnachten erfüllen kann.

freetz

Alle Infos zur Anbindung von Heizungssystemen mit PPS-, LPB- bzw. BSB-Bus ans LAN gibt es hier:
https://github.com/fredlcore/bsb_lan

Alle Infos zum WLAN-Interface "Robotan" für Ambrogio/Stiga/Wolf und baugleiche Rasenmähroboter:
https://github.com/fredlcore/robotan

freetz

...gerade noch mal die Datenbank überprüft: Die "leeren" Einträge für dieses Feld sind wohl korrekt, denn ich kann den Heizkörpern mit dem Befehl "desiredTemperature" entweder einen Zahlenwert (nämlich die Gradzahl) übermitteln oder den Parameter "auto" oder "eco", woraufhin die entsprechend in dem Thermostat hinterlegte Temperatur übermittelt wird. Aus welchen Gründen auch immer (vielleicht, weil der Modul-Maintainer die Spalte "Value" in der Datenbank numerisch halten möchte) wird bei nicht-Zahlen dann ein Leerstring gespeichert.
Würde es vielleicht ein Workaround sein, bei der Befüllung bzw. der Multiplikation des pointsarray-Arrays (in Zeile 720) zu prüfen, ob es sich um eine Zahl oder um einen (Leer-)String handelt und bei letzterem den Wert einfach zu überspringen? Ich habe das gerade einmal versucht, bin aber kein JavaScript-Programmierer, dann kommt ein Fehler, dass p in Zeile 1451 nicht definiert ist. Vermutlich müsste man also diesen Fall anderswo/früher abfangen...
Alle Infos zur Anbindung von Heizungssystemen mit PPS-, LPB- bzw. BSB-Bus ans LAN gibt es hier:
https://github.com/fredlcore/bsb_lan

Alle Infos zum WLAN-Interface "Robotan" für Ambrogio/Stiga/Wolf und baugleiche Rasenmähroboter:
https://github.com/fredlcore/robotan

eki

#128
So, Weihnachten ist schon heute. Ich habe einen neue Version angehängt, die einerseits mit den leeren Feldern zurecht kommen sollte (die Einträge mit leeren Werten werden jetzt ignoriert) und andererseits die Möglichkeit bietet, die von Dir gewünschte x-Achsen Beschriftung mit geraden Stunden zu versehen. Dazu muss ein zusätzlicher Parameter in die Chart Definition:

data-xticks_round="h"
(das "h" steht für Stunden, man kann auch auf Tage "d" und Wochen "w" runden falls man Charts mit längeren Zeiträumen hat Monate und Jahre gehen noch nicht, weil das etwas komplizierter ist wegen der unterschiedlichen Monatslängen und Schaltjahre, dazu hatte ich keine Zeit ;-) ).

Zusätzlich habe ich bei der Gelegenheit auch noch ein weiteres Feature eingebaut. Mit

data-xticks_angle="45"
Hermit kann man die x-Achsen Beschriftung drehen (die Zahl steht für einen beliebigen Winkel). Das ist manchmal ganz praktisch, wenn man sehr schmale Charts hat (z.B. bei Hochkant UIs)

Probiers mal aus, und sag Bescheid ob es klappt, falls ja, würde ich es für alle freigeben.

dadoc

Hi,
gibt es eigentlich irgendeine Möglichkeit, um z.B. bei einer Temperaturkurve Höchst- und Tiefstwert eines zurückliegenden Zeitraums X anzuzeigen?
Bevor ich das Rad neu erfinde, denn auch außerhalb des Chart Widgets habe ich dazu nichts gefunden, um etwa beim KS300 mit diesen Werten arbeiten zu können.
Muss man sich die selbst aus dem Log zusammenformeln? Oder über movingAverage berechnen?
Grüße
Martin
Standort 1: FS20 mit CUL und FHEM auf Raspi. HM-Komponenten (Heizung, Rollladen, Schalter). HM IP über Raspimatic (testweise)
Standort 2: Homematic (Wired) über CCU2 und PocketHome HD
3 x Raspi3 mit piCorePlayer/Kodi für Multiroom Audio (+ Tablets/iPeng/iPods

Mario67

So etwas würde ich eher in FHEM machen (z.B. mit http://fhem.de/commandref.html#statistics) in in FTUI nur anzeigen.
FHEM auf Raspberry Pi 4 mit CUL868, WMBUS,
FS20 ST, FS20 AS4-3, FS20 SU-2, FS20 DF, 1-Wire + RS-232: AB Electronics Com Pi RS232, Brandmelder + Fenster: AB Electronics IO Pi 32
BUDERUS GB142 über EMS/AVR-NET-IO, WESTAFLEX WAC250 über RS232, MySensors
mit fhem.cfg & includes glücklich

freetz

Zitat von: eki am 30 November 2016, 08:05:43
So, Weihnachten ist schon heute.
Probiers mal aus, und sag Bescheid ob es klappt, falls ja, würde ich es für alle freigeben.

Wow, klasse! Funktioniert prima, und das Drehen der x-ticks macht dann auch noch mal mehr Sinn, wenn es wie jetzt kurz vor voller Stunde ist und sonst am Rand die Datumsangabe mit der Zeit überlappen könnte (wäre aber auch ohne diesen neuen Parameter nur ein zu vernachlässigendes kosmetisches Problem).

Also: Vielen, vielen Dank!
Alle Infos zur Anbindung von Heizungssystemen mit PPS-, LPB- bzw. BSB-Bus ans LAN gibt es hier:
https://github.com/fredlcore/bsb_lan

Alle Infos zum WLAN-Interface "Robotan" für Ambrogio/Stiga/Wolf und baugleiche Rasenmähroboter:
https://github.com/fredlcore/robotan

freetz

Zitat von: Mario67 am 30 November 2016, 13:46:10
So etwas würde ich eher in FHEM machen (z.B. mit http://fhem.de/commandref.html#statistics) in in FTUI nur anzeigen.

DbRep würde auch gut dafür gehen, wenn man DbLog statt FileLog einsetzt:
commandref_DE.html#DbRep
Alle Infos zur Anbindung von Heizungssystemen mit PPS-, LPB- bzw. BSB-Bus ans LAN gibt es hier:
https://github.com/fredlcore/bsb_lan

Alle Infos zum WLAN-Interface "Robotan" für Ambrogio/Stiga/Wolf und baugleiche Rasenmähroboter:
https://github.com/fredlcore/robotan

dadoc

Zitat von: Mario67 am 30 November 2016, 13:46:10
So etwas würde ich eher in FHEM machen (z.B. mit http://fhem.de/commandref.html#statistics) in in FTUI nur anzeigen.
Vielen Dank für den Hinweis - statistics war mir bisher noch nicht über den Weg gelaufen, scheint aber genau das zu liefern, was ich suche.
Standort 1: FS20 mit CUL und FHEM auf Raspi. HM-Komponenten (Heizung, Rollladen, Schalter). HM IP über Raspimatic (testweise)
Standort 2: Homematic (Wired) über CCU2 und PocketHome HD
3 x Raspi3 mit piCorePlayer/Kodi für Multiroom Audio (+ Tablets/iPeng/iPods

dadoc

Zitat von: freetz am 30 November 2016, 13:52:47
DbRep würde auch gut dafür gehen, wenn man DbLog statt FileLog einsetzt:
commandref_DE.html#DbRep
Das Thema DbLog wollte ich mir eh mal durcharbeiten; DbRep scheint aber doch etwas komplexer zu sein für die eher simple Aufgabenstellung...
Standort 1: FS20 mit CUL und FHEM auf Raspi. HM-Komponenten (Heizung, Rollladen, Schalter). HM IP über Raspimatic (testweise)
Standort 2: Homematic (Wired) über CCU2 und PocketHome HD
3 x Raspi3 mit piCorePlayer/Kodi für Multiroom Audio (+ Tablets/iPeng/iPods