ioBroker.echarts icon indicating copy to clipboard operation
ioBroker.echarts copied to clipboard

ECharts erzeugt falschen Zusätzlichen Datenpunkt in der Zukunft

Open Homeworker11 opened this issue 3 years ago • 16 comments

Falscher zusätzlicher Datenpunkt bei Zeit Tagesende.

Darstellung zeigt den Sonnenstand. Tageswerte bis 11:28 Uhr diese werte sind auch nur in der InfluxDB enthalten. Also sollte die Linie um 11:28 Uhr aufhören.

Am Ende der Zeit Skala wird ein nicht existierender Datenpunkt erzeugt. (Rote Markierung 00:00 Uhr) Wie kann ich das verhindern oder ist es ein Bug ?

image

In Grafana ist die Darstellung korrekt gleiche Datenbasis. So soll es aussehen.

image

Versions:
Adapter version: 1.0.3 Raspberrypi4 Plattform linux Betriebssystem linux Architektur arm64 CPUs 4 Geschwindigkeit 1500 MHz

RAM 3.71 GB

Node.js v14.19.1 (Es gibt eine neuere Version: v14.19.2)

Anzahl der Adapter 408

Homeworker11 avatar May 05 '22 14:05 Homeworker11

Ich denke das ist Absicht und "optimierung der grafischen darstellung". In 99% der Fällen beeutet "kein weiterer Wert" das der gleiche Wert einfach weiterhin besteht. Diese Daten werden von den History-Adaptern extra zusätzlich berechnet o.ä. ... Hier wäre es also ein Feature Request das der echarts diese Zusatzdatenounkte nicht anfordert und dann auch nur das darstellt was da ist

Apollon77 avatar May 05 '22 14:05 Apollon77

Es kann ja nicht sein das Irgend ein Graph sich nicht an die Realität hält. Es darf grundsätzlich nur das Abgebildet werden was auch Tatsächlich vorhanden ist. Es sei denn man kann etwas über Optionen Aktiviren und dazu schalten. Hier wird einfach am Ende der Zeit Skala der letzte bekannte wert dazu gedichtet. Den gibt es aber zu diesem Zeitpunkt gar nicht, also ein Eindeutiger Fehler.

Homeworker11 avatar May 05 '22 17:05 Homeworker11

Es kann ja nicht sein ...

Doch kann es und viele User wollten es so und es ist seit >2 Jahren so. Von daher, ja, man kann es gern als Feature Request deaktivierbar machen.

Apollon77 avatar May 06 '22 12:05 Apollon77

Was ist damit? image

GermanBluefox avatar May 13 '22 17:05 GermanBluefox

@GermanBluefox

Die Gültige Zeit hat keinen Einfluss auf den Falsch erzeugten Datenpunkt, der bleibt bestehen.

Homeworker11 avatar Jun 10 '22 08:06 Homeworker11

Ich habe das gleiche Verhalten: image

Das Problem scheint aber nur in Zusammenhang mit InfluxDB zu liegen (rote und gelbe Linien). Ich habe testweise den Wert der roten Linie mit dem History-Adapter protokolliert (blaue Linie) und dort ist das Verhalten, wie gewünscht.

Es war zuerst die Vermutung, dass die Einstellung "Null als" etwas ändern könnte, aber bei Daten von InfluxDB hat diese Einstellung keine Auswirkung.

PeddeF avatar Oct 04 '22 09:10 PeddeF

Ich kann das Verhalten ebenfalls bestätigen. Es tritt offenbar nur in Zusammenhang mit Daten aus einer InfluxDB auf. Ich bin gerade von history auf InfluxDB umgezogen. Erst seitdem habe ich die oben beschriebenen Effekte.

image

Ich bin mir nicht sicher, ob das Label "enhancement" hier angebracht ist. Da das Verhalten zwischen history und InfluxDB Daten nicht konsistent ist, handelt es sich eindeutig um einen Bug.

0xdefec71f avatar Jan 17 '23 14:01 0xdefec71f

Ich wechsle gerade von SQL auf InfluxDB und mir ist das gleiche aufgefallen - bei den anderen Datenquellen hört er brav beim letzten Wert in der Datenbank auf, nur bei InfluxDB gibt es die Linie bis zum Ende. Ich bin auch der Meinung das es ein Fehler ist, kein Feature. Wenn es doch ein Feature ist möchte ich es bitte abschalten können. Eventuell liegt es ja auch an der Art wie InfluxDB die Daten liefert.

In der Vorschau beim Datenpunkte ist es das gleiche, auch hier wird bei Influx bis zum Ende gezeichnet. Ich vermute wenn man die Daten anfordert liefert der für das Ende des Zeitraums auch einfach den letzten Wert zurück statt nichts

BernhardLinz avatar Feb 01 '23 18:02 BernhardLinz

Ok, ich will nicht spammen, ich meine aber die Ursache gefunden zu haben. Wenn man InfluxDB (aus ioBroker heraus) nach Werten für einen Zeitraum fragt dessen Ende in der Zukunft liegt, so liefert er alle Werte die er hat + einen. Ich frage um 18:05 Uhr nach den Werten von 17:00 bis 21:00 Uhr. Er gibt alle Werte zurück die er aus dem Zeitraum hat, also von 17:00 Uhr bis 18:05 Uhr. Und dann noch einen für 21 Uhr in welchen der letzte Wert noch einmal drinsteht. Die anderen Datenbank liefern diesen letzten Wert halt nicht. Ich kann noch nicht sagen ob es am InfluxDB-Adapter liegt oder ob das eine Eigenheit von InfluxDB ist.

BernhardLinz avatar Feb 01 '23 18:02 BernhardLinz

Interessant, aber dieser Zukunftswert sollte ja eigentlich ignoriert werden, denn in den Einstellungen ist bei Ende "jetzt" eingestellt. Und warum kommt grafana mit den selben Daten klar und echarts nicht?

0xdefec71f avatar Feb 02 '23 06:02 0xdefec71f

Ich denke das Problem liegt nicht am iobroker.echarts Adapter - sondern am iobroker.influxdb Adapter. Liege ich richtig mit der Vermutung das eCharts zur Abfrage den InfluxDB Adapter nutzt?

Ich habe versucht direkte Abfragen an die InfluxDB zu senden. Dabei habe ich es nicht geschafft einen solchen zusätzlichen Wert zu erzeugen. Wenn ich die Abfrage über den InfluxDB Adapter mache bekomme ich aber den zusätzlichen Wert.

Ich habe unter https://forum.iobroker.net/post/939163 mein Beispiel als JavaScript gepostet, da muss man nur einen eigenen Datenpunkt einsetzen und kann das Problem nachvollziehen. Mein Beispiel ist eine Abwandlung aus dem Beispiel aus der Adapteranleitung.

BernhardLinz avatar Feb 03 '23 21:02 BernhardLinz

Um mal Bewegung in die Sache zu bringen, habe ich hier neue Erkenntnisse geteilt: https://github.com/ioBroker/ioBroker.influxdb/issues/322#issuecomment-1454584621

Es scheint tatsächlich ein Echarts Problem zu sein. Mit Flot werden die identischen Daten richtig dargestellt.

0xdefec71f avatar Mar 04 '23 07:03 0xdefec71f

@GermanBluefox hier prägnanter zu sehen:

image

und wenn ich dann bei ECharts hinein zoome (siehe X Achse), dann werden die Daten richtig dargestellt.

image

0xdefec71f avatar Mar 05 '23 09:03 0xdefec71f