Graphics genereren met RRDtool en SQLite3

Pagina: 1
Acties:

Vraag


Acties:
  • 0 Henk 'm!

  • amarok
  • Registratie: Januari 2009
  • Laatst online: 24-09 08:21
Afgelopen week kreeg ik een P1-kabeltje binnen om mijn slimme meter uit te kunnen lezen met een Raspberry Pi. Per minuut wordt nu een aantal waardes uitgelezen uit de slimme meter en geplaatst in een sqlite3 database. Scriptjes die ik hiervoor gebruik zijn gebaseerd op slimmemeter-rpi die ik hier vond: https://github.com/gejanssen/slimmemeter-rpi. Verder enkele aanpassingen gedaan om het werkend te krijgen met de slimme meter die hier in gebruik is. Daarnaast ben ik overgeschakeld naar een sqlite database.

De database wordt sinds gistermiddag gevuld en ziet er goed uit. In eerste instantie gebruikte ik mysql, maar om het sd-kaartje te sparen, plaats ik nu de data in de genoemde sqlite3 database op een share op mijn NAS. Met mysql kon ik al grafieken met rrdtool maken, waarbij de mysql database als data-source gebruikt werd.

De database ziet er als volgt uit:

sqlite> .schema
CREATE TABLE Slimmemeter(
ID INTEGER PRIMARY KEY AUTOINCREMENT,
Date VARCHAR(15),
Time VARCHAR(15),
Timestamp BIGINT,
T1afgenomen BIGINT,
T2afgenomen BIGINT,
T1terug BIGINT,
T2terug BIGINT,
Tarief INT,
Afgenomenvermogen BIGINT,
Teruggeleverdvermogen BIGINT,
Totaalvermogen BIGINT,
Gas BIGINT);


Records zien er zo uit:

sqlite> select * from Slimmemeter;
[...]
1028|2018-04-01|12:18|1522577881|7014|6077|0|0|1|1610|0|1610|0
1029|2018-04-01|12:19|1522577942|7014|6077|0|0|1|1640|0|1640|0
1030|2018-04-01|12:20|1522578002|7014|6077|0|0|1|2720|0|2720|0


Dit is het scriptje waarmee ik de grafiek genereer:

#!/bin/bash

DS_BASE="sql//sqlite3/dbname=slimmemeter.sqlite3/sqlite3_dbdir=/media/slimmemeter//Slimmemeter/Timestamp/Totaalvermogen/Totaalvermogen>=0"
RRDDEBUGSQL="True"

rrdtool graph beugstraat.png -v --slope-mode --imgformat=PNG --start=-12hours --end=now --width=800 --height=200 \
"DEF:watt=$DS_BASE:avg:AVERAGE" \
"LINE1:watt#FF0000:Watt"


Output van het script is helaas alleen maar:

ubuntu@ubuntu:~/slimmemeter$ ./create_rrd_sqlite.sh
ERROR: No DS called 'avg' in 'sql//sqlite3/dbname=slimmemeter.sqlite3/sqlite3_dbdir=/media/slimmemeter//Slimmemeter/Timestamp/Totaalvermogen/Totaalvermogen>=0'


Uit officiële documentatie (https://rrdtool.org/rrdtool/doc/rrdgraph_libdbi.en.html) begrijp ik dat de DS die teruggegeven wordt door RRDtool o.a. avg kan zijn. Met mysql als database werkte dit wel en kreeg ik een grafiek als output.

Ziet iemand wellicht wat ik fout doe? Kan helaas geen voorbeelden op internet vinden met sqlite3 als data-source... :'(

Alle reacties


Acties:
  • 0 Henk 'm!

  • Hero of Time
  • Registratie: Oktober 2004
  • Laatst online: 29-09 21:21

Hero of Time

Moderator LNX

There is only one Legend

Is de structuur van de database in je sqlite3 hetzelfde als in mysql? Want het wil een gemiddelde berekenen of iig tonen maar die staat niet in de database. Hoe zou dat gemaakt moeten worden?

Commandline FTW | Tweakt met mate


Acties:
  • 0 Henk 'm!

  • amarok
  • Registratie: Januari 2009
  • Laatst online: 24-09 08:21
Ik denk dat ik dit deel niet goed begrijp, eerlijk gezegd. Wat ik eigenlijk wil is dat RRDtool de waarde uit de database ophaalt die bij de timestamp hoort. Dat is in principe maar één waarde. Vervolgens moet elke timestamp één punt op de grafiek zijn.

In plaats van avg heb ik ook min, max, count en sigma geprobeerd, maar dat werkte ook niet. Zou dat komen omdat ik AVERAGE gebruik? Heb ook MAX en MIN geprobeerd. Maar zonder nog veel resultaat.

Misschien nog iets proberen met stepsize?

Acties:
  • 0 Henk 'm!

  • Hero of Time
  • Registratie: Oktober 2004
  • Laatst online: 29-09 21:21

Hero of Time

Moderator LNX

There is only one Legend

Geen idee. Maar je hebt nu de sqlite3 op je NAS staan. Heb je niet de mogelijkheid om Mysql op je NAS te draaien? Dan heb je 't wel gewoon werkend.

En anders mount je een share van je NAS op de locatie van de Mysql data locatie (standaard /var/lib/mysql).

[ Voor 27% gewijzigd door Hero of Time op 01-04-2018 13:20 ]

Commandline FTW | Tweakt met mate


Acties:
  • 0 Henk 'm!

  • amarok
  • Registratie: Januari 2009
  • Laatst online: 24-09 08:21
Ik ben idd zojuist voor deze oplossing gegaan. Nu is de NAS een zeer simpel ding, een WD MyBook Live, en die biedt alleen CIFS shares aan. Ergens ben ik een beetje huiverig om /var/lib/mysql op zo'n type share te mounten i.p.v. een NFS-share. Maar omdat het slechts een hobbyprojectje is, ga ik het eerst zo maar eens uitproberen en dan zie ik wel of het stabiel functioneert.

Dank voor de input! :-)