Autor Thema: SmartVISU + fronthem - Plotübergabe (gelöst)  (Gelesen 1246 mal)

Offline blitz94

  • New Member
  • *
  • Beiträge: 16
SmartVISU + fronthem - Plotübergabe (gelöst)
« am: 10 Februar 2021, 17:22:22 »
Hallo zusammen,

arbeite aktuell an der Visualisierung von Graphen (Plots) mit SmartVISU über FHEM.
Habe dazu die Anleitung in folgendem Threat durchgearbeitet:
https://forum.fhem.de/index.php/topic,86584.0.html

Nach erfolgreichem Update der benannten Dateien war es nun möglich, in den GADs auch Plots zu bearbeiten.
Leider bekomme ich es nicht her, dass die Daten im Logfile auch tatsächlich ausgelsen und in SmartVISU angezeigt werden. Ich habe mittlerweile dutzende Kombinationen erfolglos versucht miteinander zu verbinden.

Mein Wunsch wäre es, das in FHEM definierte Element "WZ_Istwert", welches ins Logfile schreibt "FileLog_WZ_Heizung".

Ich habe im Anhang Screenshots der GAD Konfiguration und einen Logfileauszug angehängt. Ich wäre sehr für eure Ideen dankbar.

Zudem habe ich noch eine Fehlermeldung im Logfile finden können, mit der ich leider nicht viel anfangen kann.
2021.02.10 17:06:20 1: Devices: error doing $result = fronthem::Plotfile($param); Undefined subroutine &main::timelocal called at ./FHEM/99_fronthemUtils.pm line 38.
« Letzte Änderung: 12 Februar 2021, 10:58:46 von blitz94 »

Offline GammaTwin

  • Full Member
  • ***
  • Beiträge: 142
Antw:SmartVISU + fronthem - Plotübergabe
« Antwort #1 am: 11 Februar 2021, 09:30:00 »
Grüße,

Deine Einstellung im Screenshot sollte funktionieren. Wie viele Einträge hat den der Logfile? Kopiere mal die Datei, kürze diese mal drastisch auf den letzten Tag und probiere es dann mal mit der gekürzten Version.

Offline blitz94

  • New Member
  • *
  • Beiträge: 16
Antw:SmartVISU + fronthem - Plotübergabe
« Antwort #2 am: 11 Februar 2021, 17:03:46 »
Hallo, vielen Dank für deine Antwort.

Ich habe für diesen Zweck extra ein Versuchslogfile angelegt, das aktuell ca. 300 Einträge umfasst. Auch nach dem Löschen und Befüllen mit ca. 10 Werten kommt leider keine Grafik zustande.

Was mich etwas stuzig macht sind zwei Dinge
- Wenn ich den Browser mit SmartVisu offen habe, werden die aktuellsten Datensätze übergeben und in der Grafik dargestellt. Diese scheinen aber nur temporär zu sein, da sie nach einem Refreh der Seite wieder verschwinden.
- Die Fehlermeldung in der FHEM Log.
"Devices: error doing $result = fronthem::Plotfile($param); Undefined subroutine &main::timelocal called at ./FHEM/99_fronthemUtils.pm line 38."

Offline GammaTwin

  • Full Member
  • ***
  • Beiträge: 142
Antw:SmartVISU + fronthem - Plotübergabe
« Antwort #3 am: 11 Februar 2021, 22:28:09 »
Hänge hier mal die Bsp-Datei an. Ich versuche das mal nachzustellen.

Offline blitz94

  • New Member
  • *
  • Beiträge: 16
Antw:SmartVISU + fronthem - Plotübergabe
« Antwort #4 am: 12 Februar 2021, 00:07:07 »
Vielen Dank, das wäre sehr nett :)
Ich habe dir im Anhang die LogDatei angehängt, wie sie in FHEM generiert wird. Kann dir bei bedarf gerne noch weitere Dateien zukommen lassen.

Offline GammaTwin

  • Full Member
  • ***
  • Beiträge: 142
Antw:SmartVISU + fronthem - Plotübergabe
« Antwort #5 am: 12 Februar 2021, 09:27:52 »
Grüße,

ich habe die Datei in mein Log-Verzeichnis gelegt und folgendes FileLog-Device angelgt.
defmod FileLog_WZ_Sollwert FileLog ./log/autocreate/WZ_Sollwert-%Y.log test
Meine fronthem-Einstellungen: Diese entsprechen Deinen Einstellungen aus dem ersten Post, angepasst auf Sollwert und anderen Dateinamen
"type" : "plot",
"reading" : "getG1",
"converter" : "Plotfile FileLog_WZ_Sollwert",
"device" : "WZ_Sollwert",

Und dann erhalte ich auch eine Grafik in smartVISU. Ich erhalte auch keinen Fehler im Log.

 :-\ Also, die Einstellungen stimmen, es sollte funktionieren. Der Fehler liegt also wo anders.

Offline blitz94

  • New Member
  • *
  • Beiträge: 16
Antw:SmartVISU + fronthem - Plotübergabe
« Antwort #6 am: 12 Februar 2021, 10:58:30 »
Vielen Dank für deine Hilfe! Habe mir - da wir die Konfiguration ausschließen konnten - nochmal die Fehlermeldung " &main::timelocal" genauer angesehen und bin irgendwo im Forum auf einen ähnlichen Fehler gestoßen.

Kurzum: Falls so etwas bei jemandem auftreten sollte, ist die Lösung eine der obersten Zeilen "use Time::HiRes qw(gettimeofday);"  im File "99_fronthemUtils.pm" durch folgende zu ersetzen:
use Time::Local;

Jetzt kommen die Daten in SmartVISU an.

Danke nochmal und lg

Offline Boe3eh

  • New Member
  • *
  • Beiträge: 3
Antw:SmartVISU + fronthem - Plotübergabe (gelöst)
« Antwort #7 am: 22 August 2021, 20:04:01 »
Hallo,
ich habe das Problem, dass meine Logfiles zu groß werden (ich logge jede Stunde einen Wert, also 24*365=8760 pro Jahres-File), irgendwann sind um die 3000 Werte in dem File und dann bekomme ich in der SmartVISU den Plot nicht mehr angezeigt. Reduziere ich die Einträge in dem File ist der Plot wider da.
Hat jemand eine Idee, wo ich anpassen muss, dass ich das Jahresfile mit den 8760 Zeilen in SmartVisu als Plot dargestellt bekomme.
Hier mein Plot in Smartvisu:
{{ plot.period('AT',
         'AT',
         'avg',
         '1y',
         'now',
         '-25',
         '45',
         '100',
         ['Außentemperatur Süd'],
         ['#0000FF'],
         ['line'],
         '',
         'advanced',
         '',
         '',
         '',
         '',
         ['°'],
         { yAxis: [ { tickInterval: 1} ], legend: { verticalAlign: 'bottom', y: -5 }, rangeSelector: {selected: '2'}})
         }}



Offline wvhn

  • New Member
  • *
  • Beiträge: 48
Antw:SmartVISU + fronthem - Plotübergabe (gelöst)
« Antwort #8 am: 23 August 2021, 09:50:54 »
Der Aufruf des Plot-Widgets ist in Ordnung. Die eckigen Klammern brauchst Du nur, wenn Du mehrere Datenreihen oder y-Achsen hast und dafür Parameter als Arrays angeben musst. Sie schaden aber nicht.

Die Anzahl der Datenpunkte im Plot könntest Du von 100 auf 365 stellen, um für jeden Tag einen Temperaturwert  zu halbwegs konstanten Uhrzeiten zu bekommen. So wie Du es jetzt eingestellt hast, bekommst Du alle 87-88 Stunden einen Wert, also Werte, die von ganz unterschiedlichen Uhrzeiten stammen.

Das Problem der fehlenden Daten liegt vermutlich  auf der fronthem-Seite, dort wo das Logfile aufbereitet wird. Da kann ich Dir nicht weiter helfen. Wenn Du im Treiber (./driver/io.fhem.js) den Loglevel auf 2 stellst, wird beim Aufrufen der betreffenden Seite der Datenverkehr zwischen smartVISU und fronthem auf der Entwicklerkonsole des Browsers ausgegeben. Poste mal das Ergebnis. Vielleicht gibt das weiteren Aufschluss.

Gruß
Wolfram

Offline Boe3eh

  • New Member
  • *
  • Beiträge: 3
Antw:SmartVISU + fronthem - Plotübergabe (gelöst)
« Antwort #9 am: 23 August 2021, 19:23:05 »
Hallo,
prinzipiell wird ja der Plot angezeigt. Jedoch scheint es an der Anzahl der Einträge im File zu liegen, dass der dann nicht mehr dargestellt werden kann?
GammaTwin hatte in diesem Post am 11 Februar 2021, 09:30:00 geziehlt nach der Anzahl der Einträge gefragt, daher meine Hoffnung das dazu die Lösung schon bekannt ist?!
Ich schau dann aber mal, ob über das Log wie du beschrieben hast was zu sehen ist...

Offline GammaTwin

  • Full Member
  • ***
  • Beiträge: 142
Antw:SmartVISU + fronthem - Plotübergabe (gelöst)
« Antwort #10 am: 29 August 2021, 12:43:42 »
Grüße,

das Problem mit der Anzahl ist noch vorhanden. Ob es aber das gleiche Problem ist, weiß ich nicht. Ich beschreibe meine Auffälligkeit.
Ich nutze als Quelle allerdings eine SQL-DB und nicht den Logfile.

##############Einstellung "raw"

Ich habe ein Diagramm, welches meinen Strombezug bzw. -lieferung darstellt. Es werde alle 5 Sekunden beide Werte geliefert.
Ich stelle die letzten 11 Minuten mit der Einstellung "raw" dar, neue Werte werden schön hinzugefügt - sieht toll aus, wenn man sich einen Kaffee rauslässt und die dazugehörige Stromspitze sieht :D
{{ plot.period('pAktLiefBezugFein', ['Strom.aktLieferung.plot', 'Strom.aktBezug.plot'], 'raw', '11i', 'now', '', '', '', ['Lieferung', 'Bezug'], ['#aa0', '#ce7f2b'], ['area', 'area'], '', '') }}
Erhöhe ich die Zeit von 11i passiert folgendes:
- 5h: es kommen keine Werte
- 4h: Es erscheinen Werte
- 240i (entspricht 4h in Minuten): es kommen keine Werte
- 99i ist die Grenze, da werden Werte angezeigt

Vereinfacht: Für "raw" scheinen folgende Grenzen zu gelten:
Stunden: 4h
Minuten: 99i

Was übrigens immer klappt: Es werden neue Werte hinzugefügt.

##############Einstellung "avg"

In Deinem angehängten Beispiel hast Du ja "avg" verwendet und ein Jahr "1y" als Zeitraum gewählt.

Ich habe das gleiche Diagramm noch als "Langzeit-Chart": 72h
{{ plot.period('pAktLiefBezugGrob', ['Strom.aktLieferung.plot', 'Strom.aktBezug.plot'], 'avg', '72h', 'now', '', '', '', ['Lieferung', 'Bezug'], ['#aa0', '#ce7f2b'], ['area', 'area'], '', '1h') }}
Wenn ich da auf "1y" stelle, bleibt mein FHEM ca. eine Minute stehen und dann wird das Chart angezeigt. Es werden dafür so grob 21.000.000 Werte genutzt (2 Daten * 365 Tage * 24 Stunden * 60 Minuten * 20 Sekunden (alle 5 Sek kommt ein Wert)). Es werden 12 Schritte (Monate) auf der x-Achse dargestellt.

Für mich heißt das aber, dass für die Einstellung "avg" keine Grenze für die Darstellung der Werte gibt.

Wie am Anfang gesagt, es könnte auch ein völlig anderes Phänomen für Einstellung "raw" sein.

Offline wvhn

  • New Member
  • *
  • Beiträge: 48
Antw:SmartVISU + fronthem - Plotübergabe (gelöst)
« Antwort #11 am: 29 August 2021, 23:40:11 »
Das smartVISU Widget Plot.period macht nichts anderes, als die Daten beim Backend anzufordern und 1:1 an Highcharts weiter zu leiten. Highcharts kann Hunderttausende von Punkten darstellen und sollte in Euren Fällen keine Begrenzung darstellen. Die Aufbereitung der Daten (Zeitbereich, Anzahl, Wertearten 'raw', 'avg' usw.) ist Aufgabe des Backends. Zur Lösung des Problems wäre es deshalb wichtig, zu sehen, welche Daten das Backend bei der Anfrage liefert. Dazu brauche ich die Logs von der Konsole.

Gruß
Wolfram