Einleitung
Im letzten Teil haben wir es so weit geschafft, dass wir unsere Werte von der DTU in unsere MariaDB speichern lassen.
Jetzt werden wir unsere Daten weiter in unsere DorisDB kopieren, eine View erstellen und können dann auch schon mit unserem Dashboard und Charts starten.
Übernahme der Daten in unsere DorisDB
Unsere DorisDB Tabelle legen wir analog unserer MariaDB Tabelle an:
CREATE TABLE bme280.hoymiles_dtu
(
Uhrzeit datetime,
Temperatur int(11) NULL,
Frequenz int(11) NULL,
Spannung int(11) NULL,
Strom int(11) NULL,
Leistung int(11) NULL,
Blindleistung int(11) NULL,
Leistungsfaktor int(11) NULL,
Ost_Spannung int(11) NULL,
Ost_Strom int(11) NULL,
Ost_Leistung int(11) NULL,
Ost_Energie_Tag int(11) NULL,
Ost_Energie_Gesamt int(11) NULL,
West_Spannung int(11) NULL,
West_Strom int(11) NULL,
West_Leistung int(11) NULL,
West_Energie_Tag int(11) NULL,
West_Energie_Gesamt int(11) NULL,
Message varchar(255) NULL,
)
UNIQUE KEY (Uhrzeit)
DISTRIBUTED BY HASH(Uhrzeit) BUCKETS 1
PROPERTIES(„replication_num“ = „1“);
Unser Datenübernahme-Skript ergänzen wir um unsere neue Tabelle, damit die Werte alle 5 Minuten übernommen werden:
- mysql -h pi5b -P 9030 -ubme280 -pbme280 –disable-ssl -e ‚insert into bme280.hoymiles_dtu select * from asusn100_mysql.bme280.hoymiles_dtu where Uhrzeit > (select max(Uhrzeit) from bme280.hoymiles_dtu);‘
Initial können wir einfach alle Daten übernehmen, wenn unsere Tabelle noch leer ist:
- mysql -h pi5b -P 9030 -ubme280 -pbme280 –disable-ssl -e ‚insert into bme280.hoymiles_dtu select * from asusn100_mysql.bme280.hoymiles_dtu;‘
Wenn wir die Daten erfolgreich übernommen haben, können wir auch schon unsere View basteln.
Wie wir welche Werte (hoffentlich korrekt) aufbereiten müssen, haben wir uns selbst zusammengereimt. Mit ein bisschen herumprobieren, haben wir die Einheiten bekommen, die wir möchten.
Manche Werte mussten wir z.B. durch 10 (oder 100) teilen, um die Komastelle richtig zu haben. Die Werte haben wir dann mit der Handy-App abgeglichen und überprüft.
Sollten wir hier mal nachbesser müssen (wie beim Leistungsfaktor), ist das kein großes Problem. Wir haben unsere DTU-Daten so übernommen wie sie sind und erst in unserer View weitere Aufbereitungen gemacht.
create view bme280.hoymiles_dtu_view
as
(
select
Uhrzeit,
Temperatur/10 as Temperatur,
Frequenz/100 as Frequenz,
Spannung/10 as Spannung,
Strom/100 as Strom,
Leistung/10 as Leistung,
Blindleistung/10 as Blindleistung,
case when Leistungsfaktor > 1000 then (65536-Leistungsfaktor)/10
else Leistungsfaktor/10
end as Leistungsfaktor,
Ost_Spannung/10 as Ost_Spannung,
Ost_Strom/100 as Ost_Strom,
Ost_Leistung/10 as Ost_Leistung,
Ost_Energie_Tag/1000 as Ost_Energie_Tag,
Ost_Energie_Gesamt/1000 as Ost_Energie_Gesamt,
West_Spannung/10 as West_Spannung,
West_Strom/100 as West_Strom,
West_Leistung/10 as West_Leistung,
West_Energie_Tag/1000 as West_Energie_Tag,
West_Energie_Gesamt/1000 as West_Energie_Gesamt
from bme280.hoymiles_dtu
);
View in Superset einrichten
Unsere neue View können wir in Superset als neues physikalisches Dataset einhängen:
Als zusätzliche Metrics können wir uns z.B. noch die Temperatur, Frequenz usw. anlegen.
In unserem Fall als Mittelwert (avg) – wir können aber auch min/max verwenden, je nachdem, welche Werte wir benötigen.
Natürlich können wir auch weitere virtuelle Datasets anlegen, in denen wir unsere View verwenden.
Dashboard und einige Chart-Ideen
Als nächstes erstellen wir ein neues Dashboard „Balkonkraftwerk“ – hier werden wir unsere Charts einfügen.
Als Chats können wir uns als Übersichtsseite die aktuellen Leistungen anzeigen lassen und die heute produzierte Energie:
Natürlich können wir unsere Leistungen vom ganzen Tag betrachten:
Oder uns die Gesamtproduktion anzeigen lassen:
Fazit
Anstatt die Daten unseres Balkonkraftwerks monatlich über die Herstellerseite zu exportieren und bei uns zu importieren, haben wir mit einem Open source Tool eine schöne Alternative gefunden. Wir haben die Werte immer aktuell bei uns und können uns selbst den gewünschten Überblick über unsere Daten machen.
Sollten wir die Werte nicht alle 5 Minuten benötigen, könnten wir uns auch einfach die Tages-/Gesamtwerte wegsichern (oder jede Stunde die erzeugten Energien) und nur diese weiterverarbeiten – hier haben wir die Freiheit selbst zu entscheiden, was wir übernehmen wollen.

