Neues Charting / Plotting - GUI Redesign?

Begonnen von Johannes, 20 Januar 2013, 12:06:52

Vorheriges Thema - Nächstes Thema

Harald

Danke Johannes für Deine  Ausführungen. Jetzt verstehe ich die Hintergründe etwas besser.

Wenn ich das richtig verstanden habe, ist es doch wohl sinnvoll, wenn ich Puschels Anleitung folge, ein Datenbanksystem installiere und in Zukunft nutze. Das ist wieder eine neue Herausforderung für mich, da ich bisher noch keine wirkliche Berührung mit Datenbanken hatte. MS-Excel ist ja kein Datenbanksystem.

Viele Grüße

Harald
Router:AVM7590 1&1 FW:FRITZ!OS 07.56 Anbindung:1&1 50/10 Mb/s, WLAN-Repeater 300E
ELV MAX!Cube, 7xThermostat, ECO, RasPi 4B mit bullseye auf Festplatte,
CUL V 1.67, JeeLink v3_10.1c, nanoCUL, 1xS300TH, 4xHMS100T, 4xELRO, 1xTFA, 2xMAX_FK
ELV MAX!1.4.5, FHEM 5.7 auf RasPi, Kostal PIKO plus

Johannes

Zitat von: Harald am 17 Dezember 2013, 20:38:08
Wenn ich das richtig verstanden habe, ist es doch wohl sinnvoll, wenn ich Puschels Anleitung folge, ein Datenbanksystem installiere und in Zukunft nutze.
Auf jeden Fall!
Zitat von: Harald am 17 Dezember 2013, 20:38:08
S-Excel ist ja kein Datenbanksystem.
Nein! :-)

Grüße!

Strippenzieher

Hallöle,

Ich hab mal 2 Filelogs gestartet für Yahoo Weather in 2 verschiedenen Orten, hab jetzt auch mal ein Chart gestartet und dabei ist mir aufgefallen, dass die Zeit Intervalle etwas komisch laufen ...
Gibt es eine Möglichkeit so ein Diagramm fortlaufend zu gestalten?
Gibt es eine Einstellungsmöglichkeit wie die letzten 7 Tage statt wöchentlich oder die letzten 24h statt täglich usw. da man Montags um 00:05h sonst im Chart nicht viel sieht?

Hast du noch vor es möglich zu machen, dass man die Filelog-Version auch speichern kann?
Ich vermisse auch ein richtiges Raster im Diagramm, aber das könnte auch daran liegen, dass ich noch nicht alle Funktionen ausgetestet habe.

Ab nächstes Jahr fang ich an meine Heizung zu automatisieren, da kommen dann auch noch ein paar Logs von den Thermostaten und Stellventilen dazu.

MFG Chris

Johannes

Hallo,

Zitat von: Strippenzieher am 23 Dezember 2013, 02:33:39
Gibt es eine Möglichkeit so ein Diagramm fortlaufend zu gestalten?
Du meinst selbstständige Aktualisierung des Charts? Aktuell nein, wollte ich bei Gelegenheit noch einbauen.

Zitat von: Strippenzieher am 23 Dezember 2013, 02:33:39
Gibt es eine Einstellungsmöglichkeit wie die letzten 7 Tage statt wöchentlich oder die letzten 24h statt täglich usw. da man Montags um 00:05h sonst im Chart nicht viel sieht?
Klar, einfach den Kalender benutzen, damit kannst du es genau definieren. Das passt dann aber nur zum aktuellen Chartaufruf. Wenn man das mit Kalender speichert, ist natürlich die Kalenderzeit fix eingetragen. Einträge wie "die letzten 7 Tage" liessen sich natürlich auch dynamisch einbauen, so dass sich der Zeitraum jedes mal beim Laden des Charts anpasst.
Ich packs mal auf meine Todo Liste

Zitat von: Strippenzieher am 23 Dezember 2013, 02:33:39
Hast du noch vor es möglich zu machen, dass man die Filelog-Version auch speichern kann?
Solange ich nicht weiss, wie man Filelogs richtig parst mit Hilfe der get Methode (siehe ein paar Beiträge zurück) werde ich mir das Speichern garnicht erst anschauen.
FileLogs zu parsen ist ziemlich witzlos, da die Struktur stark unterschiedlich sein kann und ich nicht alles vorher sehen kann.
Ein Beispiel:  http://forum.fhem.de/index.php/topic,17726.msg117305.html#msg117305
Dort stehen in einer Zeile zu zwei Attributen 6 Messwerte, aber nur der jeweils erste ist dem Attribut zugeordnet (T:5).
Da es keine verlässliche Struktur und Spaltendefinition für Filelogs gibt und ausserdem die get Schnittstelle nicht funktioniert wie sie sollte (oder ich zu blöd bin), muss ich das erstmal auf Eis legen.
Es sei denn, jemand kann mir da helfen.

MarkusN

Hallo Johannes,

danke für Deine Arbeit, beeindruckend wie sich das ganze Projekt entwickelt hat. Ich habe mir mal das Charting-Frontend angeschaut. Analog dazu auch dblog. Von Letzterem bin ich jedoch (erstmal) wieder weg, aus folgenden Gründen:

1) So wie ich es sehe Logge ich mit dblog pauschal alles (es sei denn ich gebe in der dblog-Definition wilde RegEx an), und gebe dann als Attribut an welche Readings ich nicht geloggt haben möchte. Das wird bei einer größeren Installation zu aufwändig. Schön wäre es wenn ich als Attribut angeben könnte dass ich es loggen will.
2) Ein Import meiner mittlerweile über 1 Jahr angewachsenen FileLogs (an denen ich tatsächlich ein Interesse habe sie aufzuheben und im nachhinein auswerten zu können) scheint nicht so einfach möglich zu sein
3) Die Performance ist, zumindest wenn ich alles logge, auf meinem Pi irgendwann im Keller

Daher habe ich das Thema dblog erst mal verworfen, finde es jedoch grundsätzlich eine geschmeidigere Lösung als tausende Logfiles.

Jetzt würde ich gerne meine FileLogs nutzen um Charts zu erstellen. Jedoch habe ich das  gleiche Problem welches vor einigen Seiten bereits berichtet wurde (beim Auswahl eines beliebigen Filelogs bekomme ich die Meldung "No Readings found in the last 24 hours for this Logfile!").

Meine Uhrzeit passt jedoch, und die FileLogs werden auch kontinuierlich mit Daten gefüttert.

[biomann@pi:~/fhem]$ tail /var/log/fhem/thermostat_bad-2013-12.log
2013-12-23_22:21:40 thermostat_bad valveposition: 11
2013-12-23_22:22:41 thermostat_bad desiredTemperature: 18.0
2013-12-23_22:22:41 thermostat_bad temperature: 21.3
2013-12-23_22:22:41 thermostat_bad valveposition: 11
2013-12-23_22:23:43 thermostat_bad desiredTemperature: 18.0
2013-12-23_22:23:43 thermostat_bad temperature: 21.3
2013-12-23_22:23:43 thermostat_bad valveposition: 11
2013-12-23_22:24:44 thermostat_bad desiredTemperature: 18.0
2013-12-23_22:24:44 thermostat_bad temperature: 21.3
2013-12-23_22:24:44 thermostat_bad valveposition: 11
[biomann@pi:~/fhem]$ date                                         
Mo 23. Dez 22:25:11 CET 2013


Die Definition eines der FileLogs die ich versuche zu nutzen sieht so aus:

define FileLog_thermostat_bad FileLog %L/thermostat_bad-%Y-%m.log (thermostat_bad:.*(temperature|desiredTemperature|valveposition)).*

Kann es daran liegen dass ich Variablen wie %L, %Y oder %m nutze?

Grüße,

Markus

steve6502

Hi Johannes,

hab die letzte Version installiert und wenn ich die URL aufrufe, bleibt es beim " .. is starting" stehen?

Die Firefox-Console sagt:

Ext.Error: You're trying to decode an invalid JSON String: { ..

Ich verwende Fhem 5.5 unter Linux und die letzte Version von Dir.

Was geht da schief? Du rufst doch ziemlich sicher jsonlist auf, oder?

Produziert fhem evtl. manchmal kein gültiges JSON?

Gruss Stefan


Johannes

Hallo Stefan,

Zitat von: steve6502 am 24 Dezember 2013, 12:18:42
Produziert fhem evtl. manchmal kein gültiges JSON?

Ja, das ist leider wahr. Manchmal produziert der jsonlist Befehl ungültiges JSON. Damit kann das Frontend dann natürlich nicht arbeiten.
Ich hatte das Problem selbst vor ca. 2 Wochen und konnte nicht rausfinden, woran es lag. Hatte es als Bug gemeldet aber kein Feedback bekommen.
Die fhem.cfg konnte ich einigermaßen ausschließen.
Ein Tag später nach einem fhem-update lief es wieder wie gewohnt.
Ich vermute einen Bug im jsonlist Modul, der durch Fehler in anderen Modulen ausgelöst werden kann.
Bei mir wurden Objekte und Arrays im JSON nicht sauber geschlossen, schön zu sehen, wenn man z.B. die Ausgabe von jsonlist bei http://jsonlint.com/ eingibt...
Ich kann dir also leider nicht helfen, das Problem hat nichts mit dem Frontend zu tun.
Gruß!

Johannes

Hallo Markus,

Zitat von: Markus Niemann am 23 Dezember 2013, 22:43:07
1) So wie ich es sehe Logge ich mit dblog pauschal alles (es sei denn ich gebe in der dblog-Definition wilde RegEx an), und gebe dann als Attribut an welche Readings ich nicht geloggt haben möchte. Das wird bei einer größeren Installation zu aufwändig. Schön wäre es wenn ich als Attribut angeben könnte dass ich es loggen will.
Sollte eigentlich problemlos gehen, musst du mal nach Beispielen suchen.
Zitat von: Markus Niemann am 23 Dezember 2013, 22:43:07
2) Ein Import meiner mittlerweile über 1 Jahr angewachsenen FileLogs (an denen ich tatsächlich ein Interesse habe sie aufzuheben und im nachhinein auswerten zu können) scheint nicht so einfach möglich zu sein
Wenn die Struktur deiner Filelogs nachvollziehbar ist, ist ein Import eigentlich nicht sonderlich kompliziert, z.B. über CSV Konvertierung
Zitat von: Markus Niemann am 23 Dezember 2013, 22:43:07
3) Die Performance ist, zumindest wenn ich alles logge, auf meinem Pi irgendwann im Keller
Müsste eigentlich gehen, wenn du Punkt 1.) im Griff hast.
Habe gerade keine passende Definition parat, da ich alles logge.

Zitat von: Markus Niemann am 23 Dezember 2013, 22:43:07
beim Auswahl eines beliebigen Filelogs bekomme ich die Meldung "No Readings found in the last 24 hours for this Logfile!").

Meine Uhrzeit passt jedoch, und die FileLogs werden auch kontinuierlich mit Daten gefüttert.
Deine Logs sehen einwandfrei aus, die sind ok.


Zitat von: Markus Niemann am 23 Dezember 2013, 22:43:07
Kann es daran liegen dass ich Variablen wie %L, %Y oder %m nutze?

"Eigentlich" nicht, da diese Variablen erstmal nur Einfluss auf den Namen der Datei haben.
Ich würde dich bitten, mal in fhem den Befehl "jsonlist" einzugeben und mir die Antwort zukommen zu lassen, wenn du willst per PN.

Auch wichtig wäre die korrekte Systemzeit deines Rechners, mit dem das Frontend aufrufst, und den eingesetzten Browser.
Gruß!

Johannes

Update:

Ein größeres Update steht bereit:

  * Erkennung mutipler Readings in einem Logfile verbessert
  * Bug behoben, dass keine Readings gefunden werden konnten (get Schnittstelle von fhem kann keine absoluten Pfade...)
  * FileLog-Charts können nun gespeichert, in Räumen verschoben, umbenannt und gelöscht werden!
    * Die FileLog-Charts werden in einer neuen Datei gespeichert "filelogcharts.js". Sollte es beim Speichern Probleme geben, die Berechtigungen dieser Datei prüfen. Sie muss für fhem schreibbar sein
  * Fehlermeldungen verbessert bei FileLogs mit Ausgabe des verwendeten Befehls
  * Neue Zeitbereiche für Charts hinzugefügt (da mehrfach gewünscht): Last Hour, Last 24h, Last 7 days, Last month
  * Layoutanpassungen der Chartkonfiguration, Zeilenumbrüche durch Scrollbars ersetzt
  * Hintergrund des Charts ist nun ein Raster. Dies wird in der nächsten Version noch konfigurierbar
  * Punktgröße der Messwerte im Chart verkleinert. Dies wird in der nächsten Version noch konfigurierbar
  * Genauigkeit der Maus beim Hovern über Messwerten verbessert
  * Zeitachse im Chart trägt jetzt als Titel den ausgewählten Zeitbereich
  * und weitere Kleinigkeiten

Bekannte Probleme:
  * Readings aus FileLogs, die pro Zeile mehrere Readings enthalten, werden unter Umständen falsch oder garnicht ausgelesen

Geplant fürs nächste Release:
  * Erweiterung der Stylingmöglichkieten für den User. Neben dem Charthintergrund, Farbauswahl, Messwertpunktgröße (auch abschaltbar, sodass nur Linien gezeichnet werden) wird es auch Füllungen mit Farbverläufen geben.


Das Update bitte mit "force" installieren, also:


update thirdparty http://svn.code.sf.net/p/fhem/code/trunk/fhem/www/frontend frontend force

Johannes

Update:

Nun ist der geplante Styler fertig. Damit kann man jetzt eine Reihe von Dingen für jede einzelne Achse des Charts konfigurieren:

  * Strickstärke
  * Strichfarbe
  * Füllen ja / nein
  * Füllstärke (opacity)
  * Füllfarbe
  * Messpunktanzeige ja / nein
  * Farbe der Messpunkte
  * Form der Messpunkte
  * Größe der Messpunkte
  * "Steps" für Achse aktivieren
  * "Smoothing" der Linie konfigurieren ( Glättung der Linie)
  * Anzeige in Legende an / aus

(fast) Jede Änderung die man macht, wird interaktiv in der Vorschau oben angezeigt, so dass man ein Bild davon bekommt, wie die Achse später ausschaut.
Hier mal ein Bild des Stylingfensters:
(http://www7.pic-upload.de/29.12.13/will8barh3e.jpg)

Und zwei Ergebnisse:
(http://www7.pic-upload.de/29.12.13/dgm9ubfk344c.jpg)
(http://www7.pic-upload.de/29.12.13/21wrpjsprtjy.jpg)

Der Styler findet sich in der Achsenkonfiguration, taucht dort als Button "Styling" auf.
Styles sind also für jede Achse einzeln anpassbar.
Sollte auch alles mit FileLog funktionieren.

Ich hoffe das lässt beim Styling kaum noch wünsche offen :-) ...

Reinemann67

Hallo und vielen Dank für das Frontend. Ich habe es mit Freude getestet und möchte zwei Punkte als Feedback geben.
Als Basis habe ich eine MySQL DB auf einem Linux System.

Ein Chart konnte ich erfolgreich erstellen und auch speichern. Wenn ich nun weitere Charts erstellen und speichern möchte, erhalte ich immer den Hinweis:
The Chart could not been saved. Error Message:
Could not execute statement Duplicate entry '0' for key 'PRIMARY

Was kann ich machen, damit diese Fehlermeldung nicht mehr erscheint ?

Dann habe ich in der Darstellung ein Problem, wenn ich manuell in der SQL-DB Werte nachgetragen habe. (Manuelle Erfassung von Zählerständen)
Es scheint, als ob das Laden der Werte nicht nach Timestamp erfolgt, sondern nach der Reihenfolge in der sie in die DB geschrieben wurden.
Kann das sein ?

Wäre prima, wenn ich Hinweise bekommen könnte, wie ich beide Fehler beseitigen kann.

Johannes

Hallo,

Zu den beiden Punkten:
Ich habe es nochmal getestet, unter MySQL exisitiert das Problem nicht, wenn man sich brav an die Anleitung hält.
Das wichtigste ist bei der Erstellung des neuen Tables für das Fronend sich an die Zeile aus dem WIki zu halten.
Habe den Table "frontend" gerade bei mir frisch aufgesetzt, 2 Minuten Daten geloggt und anschließend 2 verschiedene Charts ohne Probleme speichern können.
Bitte prüf also, ob du den Table sauber anegelgt hast.
Was die Fehlermeldung dir sagen will ist übrigens folgendes: Es gibt einen Eintrag in der Tabelle, der in der SPalte ID den Wert 0 hat. Vermutlich dein erster Chart.
Da die Spalte aber "unique" ist, darf dieser Wert kein zweites mal verwendet werden bei einem neuen "INSERT". Genau das wurde aber scheinbar versucht.

Zum 2. Punkt: Nein, die Daten werden primär mittels Timestamp Vergleich abgefragt. Wenn du händisch Daten einträgst muss man darauf achten, einen gültigen TImestmap einzugeben.
Was ist denn überhaupt nochmal genau das Problem bei Punkt 2 ? :-)

Invers

Tolle Sache, finde ich. Sieht gut aus und lässt sich auch gut bedienen und das selbst für Anfänger, wie mich.
Danke für die viele Arbeit.

Aber ich habe (wie sollte es auch anders sein :-) ) ein kleines Problem:

Ich benutze 3x FHT80b
Ich habe ein Chart angelegt und bekomme darin nur die Temperatur, aber nicht die Werte für Actuator angezeigt.
Mein LOG scheint ok zu sein. Hier mal ein Auszug:

2014-01-01_13:51:47 FHT_4955 actuator: 15%
2014-01-01_13:53:44 FHT_4955 actuator: 15%
2014-01-01_13:55:42 FHT_4955 actuator: 15%
2014-01-01_13:57:39 FHT_4955 actuator: 15%
2014-01-01_14:11:22 FHT_4955 actuator: 13%
2014-01-01_14:11:22 FHT_4955 desired-temp: 21.5
2014-01-01_14:11:23 FHT_4955 measured-temp: 21.6
2014-01-01_14:11:23 FHT_4955 temperature: 21.6
2014-01-01_14:13:19 FHT_4955 actuator: 13%
2014-01-01_14:15:17 FHT_4955 actuator: 13%
2014-01-01_14:17:14 FHT_4955 actuator: 13%
2014-01-01_14:19:12 FHT_4955 actuator: 13%
2014-01-01_14:21:09 FHT_4955 actuator: 13%
2014-01-01_14:25:04 FHT_4955 actuator: 11%
2014-01-01_14:27:02 FHT_4955 actuator: 0%
2014-01-01_14:28:59 FHT_4955 actuator: 10%
2014-01-01_14:30:57 FHT_4955 actuator: 10%
2014-01-01_14:32:54 FHT_4955 actuator: 10%


Bei den Temperatursensoren mit Luftfeuchtigkeit, die ich auch noch habe, werden beide Werte angezeigt. Daher gehe ich davon aus, dass ich (hoffentlich) keinen Fehler gemacht habe.

Könnte das vielleicht am Prozentzeichen (2014-01-01_13:53:44 FHT_4955 actuator: 15%) liegen?

Pi3B+ mit SSD/ Bullseye | FB7590 AX | 12 x Dect200 | CUL433+868 | SDuino | HM-LAN | 3 x Heizung FHT + FKontakte | KeyMatic + 4 FB | HM Wandtaster 2-fach m. LED | 6 x Türkont. TFK-TI | HM-Bew.-Melder innen | 3 x Smoked. HM-SEC-SD-2

Johannes

Zitat von: Invers am 02 Januar 2014, 01:20:33
Tolle Sache, finde ich. Sieht gut aus und lässt sich auch gut bedienen und das selbst für Anfänger, wie mich.
Freut mich, so soll es auch sein!

Zitat von: Invers am 02 Januar 2014, 01:20:33
Könnte das vielleicht am Prozentzeichen (2014-01-01_13:53:44 FHT_4955 actuator: 15%) liegen?
So ist es, ich bin schon dran, denke es gibt heute noch ein Update was das unter Anderem behebt.

Grüße!

Invers

Pi3B+ mit SSD/ Bullseye | FB7590 AX | 12 x Dect200 | CUL433+868 | SDuino | HM-LAN | 3 x Heizung FHT + FKontakte | KeyMatic + 4 FB | HM Wandtaster 2-fach m. LED | 6 x Türkont. TFK-TI | HM-Bew.-Melder innen | 3 x Smoked. HM-SEC-SD-2