NEWS
Datenexport CSV Verlaufsdaten (aus MYSQL) *gelöst*
-
Hallo zusammen,
ich würde gerne von einem Datenpunkt die Werte eines Jahres als CSV exportieren, aber leider kommen nur die letzten 24 Stunden in der CSV Datei an. Mache ich etwas falsch?
SQL Adapter: Version 2.2.0
Gruß surfer
-
Moin,
nein, Du machst nichts falsch.Da ist wohl ein Fehler im
Admin
der das exportieren von mehr Daten verhindert. Such mal hier im Forum, nach CSV und/Oder Export, da solltest Du etwas dazu finden.VG
Bernd -
@dp20eic Okay schade. Dann warten wir mal auf ein Update
-
@dp20eic sagte in Datenexport Verlaufsdaten:
Da ist wohl ein Fehler im Admin d
naja, works as designed: 500 Einträge
mehr weden im Admin auch nicht angezeigt. -
-
@dp20eic Hey Bernd, da hängt mySQL dahinter. Ich kenne mich aber nicht so wirklich mit den Abfragen aus. Wäre natürlich cool, wenn das klappen würde. Bräuchte von einem Datenpunkt einen Export.
Alles was hinter diesem Datenpunkt liegt:
-
Moin,
ich nutze
influxdb
ich könnte Dir evtl. helfen, wenn ich die Datenstruktur in der Datenbank kennen würde und wenn ich die mySQL Workbench kennen würde, Du must dir erst ein SQL bauen, welches Dir die Daten liefert, die Du suchst, also die für ein Jahr deshs100.0.192_168_1_215.power
, wenn die Daten stimmen dann muss es in der Workbench ein Menüpunkt geben, mit welchem Du ein export der Daten machst.Ich habe das gerade mal bei MySQL gefunden expor-imort
Da ist der Export, wenn Du jetzt noch mal den Inhalt unter
Columns
zeigst, um den `select zu bauen.
Um wie viel Daten geht es, sind das Daten auf Monats, Wochen, Tages, Stunden, Minuten, Sekunden Basis?
Was passiert wenn Du auf das Dreieck neben der ID 50 klickst?Also, hier kann Dir sicherlich jemand helfen der MySQL/mariaDB und auch die Workbench nutzt, ich müsste mir das erst was Installieren um zu schauen, es geht sicher auch auf der Kommandozeile, aber dazu fehlt mir auch die Datenstruktur.
VG
Bernd -
@dp20eic Wenn ich auf das Dreick klicke passiert gar nichts. Mit Rechtsklick bekomme ich das hier angezeigt:
Ich bin auch noch nicht ganz durchgestiegen, wie ich an die Daten dieses Datenpunkts komme. Das müssten einige Daten sein, gestartet im Juni 2022 bis heute.
Export / Import funktioniert auch, den Button hatte ich schon gesehen.Wahrscheinlich liegen die Daten in der ts_number, wenn ich das richtig deute.
-
Moin,
da mir die Briefmarken nicht helfen, werde ich mir mal den SQL Adapter und ne
mariaDB
installieren und testweise mal Daten historisieren, dann kann ich Dir sicher ein SQL Bauen das dann auf Deine Anforderungen angepasst werden kann. Dauert aber etwas.VG
Bernd -
@dp20eic Ich bin da absolut kein Profi, was SQL Geschichten angeht... Vorallem, wie man die Daten dort herauszieht. Für jemand, der sich auskennt mit Sicherheit ein Kinderspiel.
Aber Danke schonmal für deine Mühe! -
Moin,
läuft schon, ich kenne mich auch nicht mit jedem Dialekt aus, habe früher mit DB2 zu tun gehabt.
Also aktuell baue ich mir das SQL zusammen, da ich jetzt das Datenmodell sehe.VG
BerndEdit
Ich habe in die von meiner Synology bereitgestelltemariaDB
mal die Raumtemperatur meine 11 Meross Thermostate und die Stromzähler Daten Aktuell und Total in dieiobroker
DB schreiben lassen.Da die
mariaDB
auf der Syno nicht ganz den Anforderungen das Applikationworkbench
entspricht, habe ich das von mir bevorzugtedbeaver
genutzt um die abfrage zu erstellen, ist aber nicht wichtig, nur falls Du auf den Bildern was siehst, dass in derworkbench
anders aussieht.Daten unter
datapoints
Daten unter
sources
Daten unter
ts_number
Abfrage
SELECT ts_number.id as ts_ID, ts_number.ts as Unix_Time, datapoints.name as Name, ts_number.val as Temp from iobroker.datapoints inner join iobroker.ts_number on datapoints.id = ts_number.id where ts_number.val is NOT NULL AND datapoints.name REGEXP 'meross.0.*.room'
Ergebnis
Jetzt muss man evtl. noch die Zeit eingrenzen auf die Periode, die Du gern exportieren möchtest.
Muss ich mir aber später anschauen, da ich mich langsam auf den Weg machen muss
Super Bowl
NightVG
Bernd -
@dp20eic Das ist ja schonmal gut. Jetzt gibt es zwar die Werte aus, aber dazugehörige Datum fehlt? Zumindest kann ich es in deiner Ausgabe nicht sehen...
-
Moin,
das ist die Spalte
Unix_Time
, das kann man sich auch umrechnen lassen, bin aber wegenSuper Bowl
heute noch nicht richtig wachWichtig ist auch, wieso möchtest Du das Exportieren, denn je nachdem was Du vor hast, muss dann auch noch aus der Tabelle
sources
etwas geholt werden.VG
Bernd -
@dp20eic Also ich habe gerade mal deinen Befehl auf meine DB angepasst. Allerdings läuft das Ganze auf einen Fehler, den ich nicht ganz beheben kann...
Achso zu der Frage, warum exportieren: Ich würde gerne die Daten nach Excel exportieren und diese grafisch darstellen lassen. Würde diese Daten dann gerne archivieren pro Jahr.
-
@surfer09 sagte in Datenexport Verlaufsdaten:
Achso zu der Frage, warum exportieren: Ich würde gerne die Daten nach Excel exportieren und diese grafisch darstellen lassen. Würde diese Daten dann gerne archivieren pro Jahr.
Moin,
zum Archivieren ist ja eigentlich die Datenbank da
Du kannst Excel auch mit einer Datenbank verbinden, ohne dass Du Daten exportieren musst
Hast Du dich schon einmal mit Grafana befasst? Das ist genau dafür gemacht um sich mit einer Datenbank oder Anderen Datenquellen zu verbinden und dann Auswertungen grafisch darzustellen, auch dafür muss man keine Daten exportieren.
Noch ein Tip hier für das Forum, wenn es sich um Text, wie die Fehlermeldung handelt, dann ist es besser diese in die sogenannten
Code Tags
zu packen, Bilder sind dazu nicht wirklich gut geeignet.
Auch wenn Du dein SQL als Text in dieCode Tags
packst, dann könnte ich das einfach kopieren, ich werde das nicht aus einem Bild abtippen ;), aber beim drüber Schauen, würde ich sagen, das das-
iniobroker-db
das Problem ist,-
ist eine Rechenoperationen wenn ich das auf dem anderen Bild richtig entziffern konnte sagte das auch dieWorkbench
das Du ein Problem bei-db.datapoints
hast.
Ich müsste schauen wie beimysql
die Syntax zum Quoten des-
ist, gerade keinen blassen Schimmer, Du kannst mal so versuchen'iobroker-db'.datapoints
Natürlich bei allen Ausdrücken im SQL wo der Datenbankname benutzt wird.
Die
Code Tags
findest Du über dem Bereich wo Du den Text verfasst</>
, Du kannst dich aber auch in die sogenannteMarkdown
Syntax einlesen oder beim Schreiben eines Posts einfach 3 maldann Enter, dann den Text, den Du zeigen möchtest, wieder Enter und wieder 3 mal
. Sieht dann wie folgt ausich habe 3 mal ` eingegeben Enter Dann den text und wieder 3 mal `
VG
Bernd -
@dp20eic: Fehler bleibt leider gleich, ich hab's mal in die Code-Tags gepackt
19:51:46 SELECT ts_number.id as ts_ID, ts_number.ts as Unix_Time, datapoints.name as Name, ts_number.val as Watt from 'iobroker-db'.datapoints inner join 'iobroker-db'.ts_number on datapoints.id = ts_number.id where ts_number.val is NOT NULL AND datapoints.name REGEXP 'hs100.0.192_168_1_215.power' Error Code: 1064. You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''iobroker-db'.datapoints inner join 'iobroker-db'.ts_number on datapoints.id = ' at line 5 0.000 sec
Error Code: 1064. You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''iobroker-db'.datapoints inner join 'iobroker-db'.ts_number on datapoints.id = ' at line 5
Von Grafana gehört ja, aber noch nicht benutzt.
Ich muss den Datenpunkt löschen, weil ich ein neues Gerät dafür einsetzen möchte, daher auch der Export, damit mir die Daten nicht verloren gehen. Ich möchte den "toten" Datenpunkt nicht in den Objekten behalten, nur dafür das ich die Daten noch im Zugriff habe. -
Moin,
also bei mir zeig
dbeaver
folgende Syntax anSELECT ts_number.id as ts_ID, ts_number.ts as Unix_Time, datapoints.name as Name, ts_number.val as Temp from `iobroker-db`.datapoints inner join `iobroker-db`.ts_number on datapoints.id = ts_number.id where ts_number.val is NOT NULL AND datapoints.name REGEXP 'meross.0.*.room' ;
Hatte vorhin die falschen Hochkommas genommen.
VG
BerndP.S.: also, wenn Du für die Zukunft, nicht auf die gleichen Probleme stoßen möchtest, immer wenn Du ein Gerät austauschen Musst, dann solltest Du dich mal mit dem Thema
Alias
beschäftigen. Grob gesagt, ist das z.B.:Alias Orig. Device Austausch Device Kaffeemaschine.power hs100.0.192_168_1_215.power da original ok, nicht vorhanden Kaffeemaschine.power original defekt neues-device.power Somit bleibt der Name des Datenpunkts nach außen hin gleich, auch in der Historie/Datenbank, oder für Scripts , nur der original Datenpunkt ändert sich.
-
@dp20eic Perfekt, mit den Hochkommas funktionierte der Export!
Eine Schwierigkeit habe ich jetzt noch mit dem Datum / Uhrzeit. In Excel ist das Ganze noch ein Zahlendurcheinander.
Muss beim Befehl "Unix_Time" vielleicht gegen etwas anderes ausgetauscht werden? -
Moin,
lass mich mal schauen, war heute mit anderen Dingen beschäftigt.VG
BerndEdit
SELECT ts_number.id as ts_ID, ts_number.ts as Unix_Time, DATE_FORMAT(FROM_UNIXTIME(ts/1000), GET_FORMAT(DATETIME,'EUR')) as formated_date, datapoints.name as Name, ts_number.val as Temp from iobroker.datapoints inner join iobroker.ts_number on datapoints.id = ts_number.id where ts_number.val is NOT NULL AND datapoints.name REGEXP 'meross.0.*.room' ;
Oder in Excel umwandeln -> Google "unixtime in datum umwandeln"
VG
-
@dp20eic sagte in Datenexport Verlaufsdaten:
DATE_FORMAT(FROM_UNIXTIME(ts/1000), GET_FORMAT(DATETIME,'EUR')) as formated_date,
Perfekt, ich danke dir! Hat alles funktioniert!