SmartVISU Widget für Plots mit DbLog aus FHEM

Begonnen von ToGe88, 28 Oktober 2015, 13:02:47

Vorheriges Thema - Nächstes Thema

dev0

Temp und Luftfeuchte eines Raums im Sekundentakt zu loggen ist absolut sinnfrei und führt auch zu dem gezeigten Plot und ist alles andere als performant. Auch kurvige Plotoptionen können das nicht "gerade biegen".

Micha_88

Hallo zusammen,

kennt ihr das Problem, dass einige Linien im Plot nicht orange sondern schwarz dargestellt werden ? Der Plot bekommt Daten aus der Datenbank und aktualisiert diese auch. Nur wird die Linie ganz blass in schwarz dargestellt und nicht in Orange. Dies ist aber nicht bei allen Graphen so. Habt ihr dafür eine Erklärung ? Bei bedarf kann ich auch noch ein Screen anfügen

christiang

Hi zusammen,

ich hab ebenfalls ein kleines Problem mit dem tollen Widget. Vielleicht hat da jemand einen Tip.
Ich versuche bei einem Plot mit mehreren lines eine dataRange > 1 Tag zu setzen.
Allerdings werden nur die Daten für die erste line für den erweiterten Zeitraum gelesen (siehe Anhang).
Ein normaler SVG Plot funktioniert dagegen einwandfrei, also die Daten sind auf jeden Fall verfügbar.

Mein Code:

{% set plotOptions = [
{
'update_trigger_gad': 'klima_draussen.temperature',
'device': 'klima_draussen',
'reading': 'temperature',
'config': {
'name': 'Temperatur',
'type': 'line',
'color': '#e64d00',
'unit': '°C',
}
},
{
'update_trigger_gad': 'klima_draussen.dew',
'device': 'klima_draussen',
'reading': 'dew',
'config': {
'name': 'Taupunkt',
'type': 'line',
'color': '#804000',
'unit': '°C',
}
},
{
'update_trigger_gad': 'klima_draussen.humidity',
'device': 'klima_draussen',
'reading': 'humidity',
'config': {
'name': 'Feuchtigkeit',
'type': 'line',
'color': '#1a8cff',
'unit': '% rH',
'yAxis': 1,
}
}
]%}

{% set yAxisOptions = [
{
title: {
text: 'Temperatur',
},
labels: {
format: '{value} °C' ,
},
opposite: true
},
{
title: {
text: 'Feuchtigkeit',
},
labels: {
format: '{value}%',
}
}
]%}

{{ dbPlot.linePlot('plot_klima_draussen', 'Klima', 10080, '', '', '', plotOptions, yAxisOptions, '', 300) }}

dev0

Vermutlich mußt Du den Parameter maxRows erhöhen:
Zitat
* @param maxRows max row count that will be selected from the database | default: 300

christiang

Super, hat geklappt.
Vielen vielen Dank für die schnelle Antwort :)

Micha_88

Hallo,

gibt es eigentlich schon etwas neues zu dem Skalierungsproblem ?

dev0

Wenn das Widget korrekt eingebunden ist, dann ist mir kein Skalierungsproblem bekannt.

jba13

Hallo zusammen,

ich habe FHEM und smartvisu schon seit einiger Zeit am laufen. Jetzt möchte ich auch gerne meine Plots ins smartvisu integrieren und schaffe es einfach nicht. Ich hoffe ihr könnt mir weiterhelfen.

Mein DBlog funktioniert und die events werden sauber geloggt.
Ich habe die widget_dbplot.php und widget_dbplot.config.php im smartvisu/widgets kopiert.
Die widget_dbplot.html und die visu.js liegt in meinem 'pages Folder.'
Die Datenbankeinstellungen der widget_dbplot.config.php meiner mysql Datenbank passen.

In meiner Seite habe ich folgenden Code integriert:
                {{ basic.value('temperatur_plot_1', 'temperatur_puffer_oben.sw', '°C') }}
                    {% import "widget_dbplot.html" as dbPlot %}
                    {% set plotOptions =
                     [
                        {
                            'update_trigger_gad': 'temperatur_puffer_oben.sw',
                            'device': 'ow_temperatur_puffer_oben',
                            'reading': 'temperature',
                            'config': {
                                'name': 'Temperature',
                                'type': 'spline'
                            }
                        }
                    ]%}
                    {{ dbPlot.linePlot('PlotAussen', 'Temperatures', '', '', 'Temperatures', '°C', plotOptions, '', '', 300) }}


Mit dem basic.value habe ich überprüft, dass der GAD auch funktioniert. Das device und reading habe ich überprüft, das passt ebenfalls.
Leider bekomme ich aber nur einen leeren Plot. Einen Screenshot habe ich angehängt :-(

Das apache error log zeigt keinen Fehler an, die Ausgabe der Browser Console habe ich auch angehängt. Hier sehe ich auch keinen Fehler.
Ich habe keine Ahnung, was ich hier falsch mache.

Das ganze läuft auf einem Ubuntu 14.04. Die folgenden Pakete sind installiert.
libapache2-mod-php5
php5-mysql
libdbd-mysql-perl
libdbi-perl

Könnt ihr mir vielleicht einen Tip geben, wie ich weitersuchen könnte?

Vielen Dank,

Josef




Micha_88

Ich muss leider auch noch einmal ein älteres Thema bzgl der Skalierung aufgreifen, welches schon in vorherigen Posts thematisiert wurde. Ich habe bei mehreren Browsern das Problem sobald ich die Page einmal aufrufe wird der Plot nicht auf die gesamte Seite skaliert. Betätige ich aber dann den Reload button skaliert die Page den Plot richtig. Mir fehlt immer noch jedlicher Ansatz den fehler einzugrenzen oder zu finden. hat jemand dazu noch eine Idee woran es liegen kann oder wie man den Fehler eingrenzen kann oder tritt dieses Problem überhaupt nochchmals bei jemanden auf ?
Ich habe auch mal 2 Screenshots angehangen. Einmal bei ersten load mit der kleinen Skalierung und dann der Reload der Seite

Micha_88

Zitat von: Micha_88 am 03 November 2016, 21:57:30
Ich muss leider auch noch einmal ein älteres Thema bzgl der Skalierung aufgreifen, welches schon in vorherigen Posts thematisiert wurde. Ich habe bei mehreren Browsern das Problem sobald ich die Page einmal aufrufe wird der Plot nicht auf die gesamte Seite skaliert. Betätige ich aber dann den Reload button skaliert die Page den Plot richtig. Mir fehlt immer noch jedlicher Ansatz den fehler einzugrenzen oder zu finden. hat jemand dazu noch eine Idee woran es liegen kann oder wie man den Fehler eingrenzen kann oder tritt dieses Problem überhaupt nochchmals bei jemanden auf ?
Ich habe auch mal 2 Screenshots angehangen. Einmal bei ersten load mit der kleinen Skalierung und dann der Reload der Seite

Das Thema hat sich jetzt doch erledigt und habe eine Lösung für das Problem gefunden. ich übergebe direkt eine Feste breite, sodass es nicht mehr zu diesem Phänomen kommt. Trotzdem vielen Dank

bruece-lee

Hallo Micha_88,

schön, dass sich das Problem erledigt hat. Ich hatte früher Probleme mit den Plots, wenn ich sie in einer <table> eingebettet hatte. Nun habe ich sie im <div> eines typischen Blocks von Smartvisu untergebracht in folgender Form und alles funktioniert prima:


<div class="block" style="width:100%">
<div class="set-2" data-role="collapsible-set" data-theme="c" data-content-theme="a" data-mini="true">
<div data-role="collapsible" data-collapsed="false" >
<h3>Raumtemperatur</h3>
{% import "widget_dbplot.html" as dbPlot %}
.... (Definition des Plots) ....
</div>
</div>
</div>


VG, Bruece-Lee

Joker

Hi,

ich habe leider nach wie vor Skalierungsprobleme mit den Plots, nicht immer, aber doch sehr häufig. Meistens auf dem iPhone, aber auch ab und an lokal am Rechner.
Das Problem ist dann, dass der Plot quasi aus seiner Box herausläuft. Hier ein Screenshot:

Falsch skaliert

Auf dem iPhone muss ich dann das Telefon einmal ins Querformat drehen und wieder zurück, dann stimmt es und sieht so aus:

Richtig skaliert

Am Rechner lässt es sich durch einen Reload der Seite lösen.

Eingebettet ist mein Plot so:

    <div class="block">
    <div class="set-2" data-role="collapsible-set" data-theme="c" data-content-theme="a" data-mini="true">
    <div data-role="collapsible" data-collapsed="false" >
    <h3>Temperaturverlauf</h3>
    {{ tplDbPlot.heatingPlot('dbplot_living', 'Wohnzimmer')}}
    </div>
    </div>
    </div>


Und das Template sieht so aus:
{% macro heatingPlot(id, room, height, colorMeasured, colorDesired, colorValve) %}
{% import "widget_dbplot.html" as dbPlot %}
{{ dbPlot.linePlot('id'~id~'heatingPlot', '', '1440', '300', '', '',
[
{'update_trigger_gad': room~'_RTR_Clima.valve',         'device': room~'.Heizkoerperthermostat.Clima', 'reading': 'ValvePosition', 'config': {'name': 'Ventil',           'unit':'%', 'yAxis':1, 'type': 'area',   'color': colorValve|default('#828282') }},
{'update_trigger_gad': room~'_RTR_Clima.desired-temp' , 'device': room~'.Wandthermostat.Climate',      'reading': 'desired-temp',  'config': {'name': 'Soll Temp.',       'unit':'°',            'type': 'line',   'color': colorDesired|default('rgba(201,134,44,1)') }},
{'update_trigger_gad': room~'_RTR_Clima.measured-temp', 'device': room~'.Wandthermostat.Climate',      'reading': 'measured-temp', 'config': {'name': 'Ist Temp.',        'unit':'°',            'type': 'spline', 'color': colorMeasured|default('#FFC825') }}
],
[
{title: {text: '',}, labels: {format: '{value} °',}, opposite: true, max: 30, min: 0},
{title: {text: '',}, labels: {format: '{value} %',}, max: 100, min: 0}
],
{ align: 'right', verticalAlign: 'top', layout: 'horizontal', x: -35 },
height|default(300)) }}
{% endmacro %}


Jemand eine Idee??

Spielmann

Hallo,

the ratman schrieb:
Zitatnur eben ist ein problem aufgetreten, desssen lösung ich nicht finde:
und zwar suche ich einen plot-type der schrittweise, also in "steps" darstellt (für nur 4 schaltzustände mit immer geraden linien dazwischen).
es scheint den type "step" aber nicht zu geben, wenn ich mir http://api.highcharts.com/highcharts#series anschau.

ich habe das gleiche Problem um die Solltemperatur darzustellen. Bei highcharts habe ich schon einige Typen angeschaut und teilweise getestet - jedoch schaffe ich es nicht wie in SVG steps darzustellen. Ich könnte mehr Datenpunkte in der db erzeugen um die Darstellung zu verbessern - gefällt mir aber nicht, da ich die db nicht unnötig zumüllen möchte.
Hat jemand eine Idee?

Gruß
Spielmann

FHEM mit Raspi (Zentrale)
Raspberrymatic (Heizung)
Siemens LOGO8 (Lichtsteuerung)
Philips HUE Gedöns
Diesel-Tankstelle mit fhem und ESP (eine ewige Baustelle)

raman


Spielmann

Danke raman,
'step': 'left', war die Lösung. Das gibt mir gleich wieder Motivation an SmartVisu weiter zu basteln.

Hier mein Ergebnis:
{% import "widget_dbplot.html" as dbPlot %}
{% set plotOptions = [
{
'update_trigger_gad': 'og.bath.heating',
'device': 'HM_Wandthermostat_Bad',
'reading': 'Wandthermostat_Bad.1.TEMPERATURE',
'config': {
'name': 'Temperatur',
'type': 'line',
'unit': '°C',
}
},
{
'update_trigger_gad': 'og.bath.heating.set',
'device': 'HM_Wandthermostat_Bad',
'reading': 'Wandthermostat_Bad.2.SET_TEMPERATURE',
'config': {
'name': 'Soll Temp',
'type': 'area',
'fillOpacity': '0.3',
'step': 'left',
'unit': '°C',
}
},
{
'update_trigger_gad': 'og.bath.humidity',
'device': 'HM_Wandthermostat_Bad',
'reading': 'Wandthermostat_Bad.1.HUMIDITY',
'config': {
'name': 'Feuchtigkeit',
'type': 'spline',
'color': '#1a8cff',
'unit': '% rH',
'yAxis': 1,
}
}
]%}

{% set yAxisOptions = [
{
title: {
text: 'Temperatur',
},
labels: {
format: '{value} °C' ,
},
opposite: true
},
{
title: {
text: 'Feuchtigkeit',
},
labels: {
format: '{value}%',
}
}
]%}

{{ dbPlot.linePlot('plot_klima_bad', 'Klima', 4320, '', '', '', plotOptions, yAxisOptions, '', 300) }}


FHEM mit Raspi (Zentrale)
Raspberrymatic (Heizung)
Siemens LOGO8 (Lichtsteuerung)
Philips HUE Gedöns
Diesel-Tankstelle mit fhem und ESP (eine ewige Baustelle)