SmartVISU Widget für Plots mit DbLog aus FHEM

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

Vorheriges Thema - Nächstes Thema

ToGe88

Zitat von: palermojammer am 09 November 2015, 11:50:04
Hallo,

bin leider in Sachen php ein Anfänger, habe soweit alles am Laufen in fhem (Datenbank & SVG Plots) aber komme bei smartvisu nicht weiter
Einerseits das Editieren der db Variablen, soll ich die im widget file einfach daneben editieren oder einen php-tag neu damit machen?
Vielleicht könnte mir da jemand einen Code Schnipsel  posten.
Datenbank ist sqlite am selben rechner (Raspi)
Und in smartvisu habe ich die Tags drinnen, nur er macht genau nichts.
Gad legt er in fhem auch nicht an.

Bin für jede Hilfe dankbar

lg

Also wenn du die Standart Konfiguration von DbLog mit sqlite in FHEM benutzt solltest du eigentlich an der PHP Datei und den Variablen für die Datenbank nichts anpassen müssen. Kannst du mal posten wie du das Widget in SmartVISU anlegst? Evtl. fehlt auch noch die SQLite3 Erweiterung für PHP? (sudo apt-get install php5-sqlite)

Gruß

bruece-lee

Hallo ToGe88,

ich habe gerade Dein Widget in Smartvisu getestet und bin begeistert! Vielen, vielen Dank von meiner Seite für die Mühe und insbesondere die ausführliche Doku, die es wirklich einfach macht damit klar zu kommen und erste Erfolge zu sehen. Ich habe noch eine Frage und eine Anregung. Mein FHEM und SV läuft auf einem Raspberry Pi 2, aktuell nutze ich DBLog mit MySQL. Leider ist das Laden der Charts bei mir extrem langsam auch wenn nur wenige Werte aus der DB abgefragt werden. Daher stelle ich die Frage in den Raum, ob das bei anderen ebenso ist oder was man evtl. noch tun kann um die Abfragen zu beschleunigen. Ist es evtl. ratsam auf MySQL zu verzichten und stattdessen SQLite Datenbanken einzurichten?

Meine Erfahrung zeigt, dass Plots unter FHEM, die auf einem FileLog statt DBLog basieren deutlich schneller sind. Wäre es evtl. noch eine Überlegung wert mal drüber nachzudenken, FileLog als Datenquelle ebenfalls noch in das Widget zu integrieren? Mit der Filelog get-Funktion sollte es meiner Meinung nach verhältnismäßig leicht sein, die Daten aus den Files abzufragen. Diese müssten dann nur passend in das JSON Format gewandelt werden und der restliche Code im Widget für die Weiterverarbeitung und Darstellung könnte dann gleich bleiben. Wie siehst Du das ToGe88, das müsste doch eigentlich so funktionieren, oder? Wenn ich demnächst mal wieder mehr Zeit habe, würde ich das mal versuchen, aber in tue mich derzeit bei PHP noch ein bißchen schwer...

Viele Grüße, Bruece-lee

pole23

Hallo, das Widget funktioniert echt gut, allerdings ich habe Probleme mit der Breite von dem Plot. Wenn ich das im Chrome öffne, das sieht das so aus wie in dem Screenshot. Wenn ich dann nochmal einen Refresh mit str+r mache, dann passt die Breite. Auf einem iPad passt die Breite mit dem Safari auch nicht.
Im Firefox passt es gleich beim ersten Laden der Seite.

dev0

Wenn es nach einem Reload funktioniert, dann könnte es auch mit dem Caching von SV zu tun haben -> Pagecache in SV ausschalten und <smartvisu_root>/temp löschen.
Wenn das nicht hilft, könnte man vermuten, dass es an modifierten css Einstellungen liegt. Untersuch die Seite doch mal mit Firebug o.ä. Tools. Vielleicht findest Du so etwas heraus...

thoweiss

Ich bin scheinbar auch zu blöd  :o


  • Ich habe gemäß Anleitung die Dateien in die angegebenen Ordner kopiert.
  • In der php-Datei habe ich die Zugangsdaten für meine mysql-Datenbank eingetragen und den Datenbanktyp auf mysql gesetzt
  • Ich habe den Beispielplot in eine Smartvisu Seite eingefügt

Leider passiert nichts, es wird kein Plot angezeigt. In der GAD-Konfiguration von fronthem tauchen die GADs des Plots auch nicht auf.
Apache und fhem habe ich schon neugestartet ohne Veränderung.

Kann ich irgendwo Fehlermeldungen in logs sehen?

Ich hänge heute Abend noch meine Dateien an, habe da gerade keinen Zugriff drauf.

Gruß,
Thorsten


thoweiss

Wie angekündigt hier meine Konfiguration:

Unter /var/www/smartvisu/widgets liegen folgende Dateien:
widget_dbplot.html und widget_dbplot.php

Das Widget habe ich so eingebunden:

{% set plotOptions =
[
{
'update_trigger_gad': 'updateOutsidePlot',
'device': 'therme',
'reading': 'ch_Toutside',
'config': {
'name': 'Temperatur',
'type': 'spline'
}
}
]%}
{{ dbPlot.linePlot('OutsideTempPlot', 'Außentemperatur', '', '', 'Temperatur', '°C', plotOptions, '', '', 300) }}


Aber irgendwie wird nichts angezeigt...

dev0

Zitat von: thoweiss am 18 November 2015, 09:39:11
Kann ich irgendwo Fehlermeldungen in logs sehen?
Wurde schon weiter geschrieben: http://forum.fhem.de/index.php/topic,43134.msg355692.html#msg355692

Die room_heating.html ist mit einer Größe von 0 Byte nicht sehr informativ ;)

thoweiss

#37
*EDITH*
Ich habe meine room.html noch einmal angehängr.

Gnarf - danke für den Tipp.

Ich schaue mir das zuhause einmal an.

Gruß,
Thorsten

thoweiss

Also ich habe das jetzt nochmal mit "Element untersuchen" mit der Netzwerkanalyse geprüft.

Bei mir passiert leider überhaupt nichts - in der Konsole gibt es keinerlei Datenverkehr zur php-Datei.

Muss ich noch irgendwelche rechte oder Module für den Apache  setzen oder installieren?


Gruß,
Thorsten

pole23

#39
Hallo,

ich habe es mal kurz überflogen. Hast du das Widget mit dem Befehl {% import "widget_xxx.html" as xxx %} irgendwo importiert?

thoweiss

Stimmt,

das fehlte scheinbar noch.

Ich habe die html jetzt so aufgebaut:

/**
* -----------------------------------------------------------------------------
* @package     smartVISU
* @author      Martin Gleiß
* @copyright   2012
* @license     GPL [http://www.gnu.de]
* -----------------------------------------------------------------------------
*/


{% extends "rooms.html" %}
{% import "widget_dbplot.html" as dbplot %}
{% set plotOptions =
[
{
'update_trigger_gad': 'HeatingTemperatureTrigger',
'device': 'therme',
'reading': 'ch_Toutside',
'config': {
'name': 'Temperature',
'type': 'spline'
}
}
]%}
{% block content %}

{{ dbPlot.linePlot('plot_1', 'Außentemperatur', '', '', 'Außentemperatur', '°C', plotOptions, '', '', 300) }}

{% endblock %}


Leider ohne Erfolg...

Beim laden der Seite tut sich immer noch nichts.

In der Konsole sehe ich auch keine Kommunikation mit der PHP-Datei.


dev0


thoweiss

#42
EDIT:
Jetzt läuft alles - allerdings lag es nicht allleine an der falschen Schreibweise...

Meine  widget_dbplot.php war nicht vollständig, scheinbar ist beim Kopieren auf den Server etwas schiefgegangen.

Meine Datei endete in Zeile 124.

Nachdem ich die Datei diesmal komplett kopiert habe und die Zugangsdaten für mysql neu eingetragen habe läuft jetzt alles :-)

Komisch - kaum mach man etwas richtig funktioniert es auch ;D


Danke für eure Hilfe - jetzt kann ich mit den plots spielen.


Gruß,
Thorsten



Oh mann  :-[

Da hatte ich wohl Tomaten auf den Augen!

Werde das zuhause gleich testen und hier Rückmeldung dazu geben.


Danke und gruß,
Thorsten

edkiss

#43
Bravo!
Es fehlt vielleicht noch ein Hinweis für den Import.
Bin Anfänger und hatte das nicht in meiner smartvisu html Datei eingefügt.

{% import "widget_dbplot.html" as dbplot %}

Noch eine Frage:
Wird der Plot automatisch neu gezeichnet, wenn ein neuer Wert vorhanden ist, oder erst, wenn ich die Seite neu lade?

Gruß
Eddie

thoweiss

Der Plot wird neu gezeichnet wenn ein Event der als Trigger definierten GAD eintrifft.

Dazu müssen aber im fronthem Editor die Leserechte der GAD für das entsprechende Endgerät aktiviert werden.

Gruß,
Thorsten