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...
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...