Community

Export der Verlaufsdaten in eine externe Datenbank


#1

Was willst du damit machen?
Ich möchte gerne die Verlaufsdaten der einzelnen Geräte in eine externe Datenbank schreiben. (z.B. mySQL, InfluxDB). D.h. alternativ oder zusätzlich soll nicht die interne Datenbank beschrieben werden, sondern eine externe. Analog der Möglichkeit eine FTP Verbindung zu erstellen, sollte es die Möglichkeit geben eine Datenbank Verbindung zu erstellen.

Warum interessiert es nicht nur dich?
Durch den Export im CSV-Format ist die Sicherung der Verlaufsdaten zwar gegeben, jedoch sind die Möglichkeiten diese Auszuwerten (z.B. Excel) sehr bescheiden. Durch die Nutzung einer externen Datenbank hätte man die Möglichkeit die Visualisierung und Auswertung der Daten z.B. mit Grafana durchzuführen.

@hblaschka, vielleicht könntet ihr im Projekt homeean auch Grafana und InfluxDB mit aufnehmen?


Verlaufsdaten in eine Datenbank pumpen und diese dann graphisch darstellen
#2

Das würde einen Raspi zur Heizplatte machen, würde ich mal annehmen… Da brauchst Du richtig CPU und RAM.


#3

Ich habe auf meinem sowohl InfluxDB wie auch Grafana drauf. Ich gebe dir recht in Verbindung mit einer SD-Karte ist das wenig zielführend. Boot von USB oder sogar SSD ist da schon zu empfehlen. Wegen der Leistung vom pi würde ich mir da keine Sorgen machen. Wir sprechen hier nicht davon die Packete auf dem homee laufen zu lassen! :grin:


#4

So sehen die Datenbei mir in Grafana aus.

Eine Anbindung an eine DB wäre echt super!
Optimalerweise sollten die Daten bei jeder Wertänderung in die externe DB geschrieben werden, so hat man die Graphen immer in Echtzeit vorliegen! :grinning:


#5

Was ist der Mehrwert für Echtzeit ?
Gegenüber nachts im batch ?
Unter der Annahme dass die homee Diagramme korrekt dargestellt sind.
Würde das nicht den homee überlasten wenn er für 100 Geräte ständig werte absetzen muss ?


#6

Da gibt es viele Gründe!
Du lässt Dir ja auch nicht den Status deiner Haustür einmal pro Tag als Zusammenfassung zu schicken lassen, oder?!
Wenn ich Daten Auswerte/Analysiere/Visualisiere/Etc. möchte ich nicht erst ein Tag warten bis diese zur Verfügung stehen!
Wenn ich die Visualisierung auf anderen Plattformen nutze z.B. Grafana zu Imperihome, möchte ich mir auch nicht 1 Tag alte Daten anschauen, etc…

Selbst der Rechner bei der ersten Apollo Mission hatte nur einen Bruchteil der Rechenleistung eines homee.

Diese werden doch heute schon in die interne Datenbank geschrieben.

Ein ständiges Publishing zu anderen Diensten wird doch bereits praktiziert:

  • homee zu HomeKit
  • homee zu ImperiHome
  • homee zu Node Red
  • homee zu homeeToMqtt
  • etc.

#7

Für mich war das bisher kein relevantes Feature, aber rein aus Neugier : welches Konkurrenzprodukt unterstützt das?


#8
  • HC2 über Lua Skript
  • Vera Edge über Lua Skript
  • Z-Way Server über App
  • Home Assistant
  • Openhab
  • etc.

Es geht also nicht darum sich von der Konkurrenz abzuheben, sondern mit der Konkurrenz gleichzuziehen!!


#9

Ok
Allerdings (siehe auch parallel - Thread) kann man das ab 2.20 jetzt recht gut und mit geringem Aufwand selber bauen.

Insofern halte ich den Begriff „Unding“ von dir hier für etwas übertrieben

all die anderen drängenden Themen (Zigbee stabil (ohne DSDZ), ständig neue Geräte auf dem Markt, Komplettierung der homeegramme mit ODER und Variablenvergleich, Einbindung bidirektionaler Enocean -Aktoren, Heizplan, …) kann ich hingegen nicht selbst lösen.


#10

Wenn Du mir eine Lösung hast, wie ich 1467 Dateien verteilt auf 761 Ordner ohne großen Aufwand einlesen kann, wäre ich die sehr dankbar! Und es kommen täglich neue dazu!

Verlaufsdaten

Ich sage ja nicht, dass es keine andere wichtigere Baustellen gibt!
Wir sprechen hier von einen Feature Vorschlag, der in keinster Weise in Konkurrenz
zu den bekannten Bugs oder lang ersehnten Feature Vorschlägen steht.
Ob und wann und in welchen Umfang etwas umgesetzt wird weiß nur CA (hoffentlich).


#11

Ok wir sind uns einig :wink:

Aber das täglich neue Dateien dazukommen, würde ich fast als Vorteil sehen.
Von der Einfachheit und Konsistenz her gebe ich dir recht: ein großer Schnappschuss ist sicher anfänglich handlicher, und im Idealfall ohne Lücken.
Aber skaliert das ausreichend? Ob ich wirklich über die Monate /Jahre mehrere Millionen Zeilen in einer einzigen Datei akkumulieren möchte, weiß ich noch nicht.

Und da ja die Verlaufsdatenbank gelegentlich korrupt ist und der Verlauf zurückgesetzt werden muss, sollte man sichleider ein inkrementelles Einlesen angewöhnen. :frowning:
Und dann ist die neue Ordnerstruktur wohl erst recht besser.

Nebenbei aus dem anderen Thread:
@SirDive nutzt die neue Dateistruktur für Analyetools wie PowerBI

Und auch @xenji mit seinem Azure cloud Import kommt damit klar.


#12

Es gibt kaum eine Frage in der IT, die nicht mit RAM beantwortet werden kann. 1.6MB sind jetzt nicht wirklich viel und die Anzahl der Ordner und Dateien ist dabei nicht sachlich relevant. Was soll mit den Daten passieren? Wenn es nicht zu kompliziert ist, scripte ich dir schnell was.


#13

Hallo @xenji,

Es wäre schon eine Erleichterung, wenn die neuen Tagesverläufe in eine bestehende Tabelle einer Datenbank automatisch geschrieben werden könnten.

Mein Setup:

  • Synology DS DS214play
  • MariaDB
  • phpMyAdmin

Ich habe mir eine DB “homee” angelegt und für jedes Gerät eine oder mehrere Tabellen angelegt, in die ich aktuell täglich über phpMyAdmin die CSV-Dateien händisch in die jeweilige Tabelle importiere.

Für die Verlaufsdaten werden aktuell je Gerät ein Ordner angelegt. Und Unterordner für die jeweiligen Dienste.
Ordner1

Darin sind wiederum die CSV-Dateien die täglich abgelegt werden.
Ordner2

Meine Tabellen in der DB habe ich analog der Dateinamen aus den Export benannt, ohne Datum am Ende.

Wenn Du die Muße hast, was zu skripten, das wäre echt toll!
Schon mal Vielen Dank im Voraus.


#14

Ich hab das 2.20er noch nicht drauf, daher brauch ich bitte eine Beispieldatei von dir. Gern per Mail an mario at xenji Punkt com. Wenn du GPG nutzen magst, findest du meine PubKeys hier: https://keybase.io/xenji

Schick mir bitte folgendes:

  • Eine zwei Dateien aus zwei verschiedenen Ordnern unterschiedlichen Datums.
  • Den Struktur Export deiner Datenbank (ohne Daten!)
  • Eine Programmiersprache, die Du zumindest lesen kannst und die auf dem Synology Hobel verfuegbar ist (PHP, Ruby, Python, Java) oder halt, wenn du ne Shell hast, die Ausgabe von uname -a, dann kann ich dir ne Golang binary cross-compilen.

#15

@Osorkon So, https://github.com/xenji/homee_csv_to_mysql/releases

Nimm dir die Linux i386 Version fuer deinen Synology Hobel. Auspacken und einfach mal mit ./homee_csv_to_mysql -h die Hilfe aufrufen.

Habs lokal mal getestet und sieht soweit ganz gut aus. Die double-encoded Umlaute werden aktuell noch in die Tabellennamen uebernommen. Habe ich keine schnelle Loesung fuer parat.

Der Rest funktioniert erstmal wie erwartet. Mit --force-all kannst du einen kompletten Ordner neu einlesen, andernfalls werden nur Dateien mit dem Aenderungsdatum von “heute nach Mitternacht”.

Die Importe sind idempotent, d.h. du koenntest theoretisch immer wieder den ganzen Import durchfuehren und es wuerden keine Daten dupliziert werden. Die Importdauer liegt fuer das von dir gelieferte Sample bei ein paar Millisekunden.


#16

Guten Morgen @xenji,

Du bist ein Tier!! :grinning:
Vielen Dank!
Werde es heute Abend ausprobieren!
Gruß aus
Osorkon


#17

Ich hab den Quellcode mal n bissl auf Deutsch Kommentiert, vielleicht hilft es ja.


#18

Hallo @xenji,

ich bin letzt leider kein Linux Freak! :tired_face:
Ich habe jetzt die Linux_i386 Version runtergeladen und entpackt.
Habe es in das gleiche Verzeichnis agelegt wo auch die Velaufsdaten bzw. das Backup agelegt werden
volume1/homee/
Der Import wird jetzt mit dem befehl: ./homee_csv_to_mysql -i
ausgeführt. Wie übergebe ich jetzt die adresse der DB, User und PW sowie den Pfad zu den Verlaufsdaten? Oder habe ich :tomato: auf den Augen?

Vielen Dank und Gruß
Osorkon


#19

Danke @xenji,

Funktioniert! Mit einem Knopfdruck sind alle Tabellen erstellt und die Daten werden in die DB gepusht!
Versuche das ganze jetzt als tägliche Routine auf der DS einzurichten, dann ist es perfekt!! :grinning:


#20

Gern, kein Thema. Freut mich wenn es gefällt und Spaß macht.