NEWS
History Adapter - exportieren / migrieren nach InfluxDB
-
Ohje Handy mal wieder ... Screenshots war das wort :-)) Aber wenn es jetzt tut ist ja alles super
-
Hallo zusammen,
ich wollte meine Datenbank auch zu Influx migrieren.
Habe die Skripte soweit befolgt. Die laufen auch ohne Fehlermeldung durch. Allerdings werden keine Daten aus dem Datenbestand vom History Adapter kopiert.
Meine Vermutung liegt im Timestamp der Daten im History Adapter.
Beim Blick in die .json-Datei vom Analyse-Skript werden für die frühesten Datensätze allesamt Timestamps angezeigt, die weit in der Zukunft liegen. Beim Durchlaufen des Migriervorgangs kann er dann natürlich keine Daten finden, die zwischen dem frühesten Timestamp und heute liegen.Nachfolgend noch der Inhalt aus der earliestDBValues.json
Bei Diagrammen, die ich mit Flot oder ECharts erstelle passen die Zeiten. Auch die Ordnerstruktur im History Ordner auf dem Pi passt. Da ist für jeden Tag ein Ordner nach dem muster YYYYMMDD erstellt.
Habt ihr ne Ahnung woran das liegen könnte und wie man das abstellen kann?
Vielen Dank schonmal
Edit wegen Typo
-
@saarlanduhu Wenn ich einen mit history erzeugten timestamp in https://www.epochconverter.com/ gebe und "timestamp to human date" drücke, kommt die richtige Zeit raus mit dem Hinweis "assuming timestamp in ms".
Lösche ich die letzten 3 Stellen, dann kommt auch wieder das gleiche Datum raus mit dem Hinweis "assuming timestamp in s".
Es scheinen also 2 Formate für epoch üblich zu sein, im ms und in s.
Vielleicht gibt es da Misverständnisse bei der konvertierung? -
@klassisch, danke dir.
das erklärt zumindest mal warums an den anderen Stellen dann passt.
Leider bringt mich das bei der Migration der Daten nicht weiter. Bzw. Zumindest weiß ich nicht wie ich die Info für mein Problem nutzen könnte. -
@saarlanduhu sagte in History Adapter - exportieren / migrieren nach InfluxDB:
Zumindest weiß ich nicht wie ich die Info für mein Problem nutzen könnte.Ich leider auch nicht. Vielleicht kann man bei InfluxDB (was ich nicht habe und nicht kenne) etwas konfigurieren?
-
Ookkk.die timestamps sollte er selbst behandeln. Also. Bitte zeig mal wie du es ausführst und was die Ausgabe ist.
-
@apollon77
so führe ichs aus
und das ist das Ergebnis (gekürzt, damit es nicht zu lange wird....geht in ähnlicher weise zurück bis zum 20221011)
-
Das Analyseskript funktioniert bei mir und schreibt auch die drei json files. Wenn ich dann history2db.js starte, kommt das hier:
Send Data to influxdb.0 Start at 20161001 Use historyDir /opt/iobroker/hist/ Use Delay multiplicator 2 Log changes only once per 30 minutes existingDBValues initialized from cache: 71 earliesDBValues initialized from cache 71 earliesDBValues overwritten with 1685612931206 ExistingDBTypes initialized from cache 71 Started processFiles with 71 known db values We start earliest at 20161001 DONE
Es werden aber keine Werte kopiert.
-
@bambulko mit welchen Parametern hast du es aufgerufen?
-
@apollon77 Ich glaube ich habe day-to-start falsch verstanden. Wenn ich den heutigen Tag nehme, passiert etwas.
-
@bambulko Ja, es läuft jetzt, aber ich bekomme ständig Fehlermeldungen:
Check: 20230530 / pos -1 datapoints reduced from 202 --> 117 type mismatch number vs. string: fixed=false --> null type mismatch number vs. string: fixed=false --> null type mismatch number vs. string: fixed=false --> null sorted out 3 values 3 errors happened while storing data DONE
-
@bambulko naja dann schau mal die rohdaten an was es sein kann. History Ost-Berlin Datentypen egal aber bei influxdb ist der wichtig.
-
@apollon77 Irgendwie verstehe ich das immer noch nicht. Manchmal macht er ein paar Tage, meistens jedoch nur einen Tag. Das konvertieren scheint dann zu klappen. Aber das für jeden Tag neu starten ist doch etwas mühsam.
Dies ist der Befehl, den ich verwende.
/opt/iobroker/node_modules/iobroker.history/converter/history2db.js influxdb.0 info 20230513 /opt/iobroker/hist/ 2 --logChangesOnly 30 --processNonExistingValuesOnly
-
@bambulko am besten poste mal die ganze Ausgabe und Aufruf in eine GitHub issue. Kann ich mir nach dem Urlaub ansehen
-
@dp20eic
da habe ich auch ein Problem:
root@server2:/opt/iobroker# node analyzeinflux.js influxdb.0 info --deepAnalyze
Do deep analysis to find holes in data
InfluxDB-Configuration: {"debounce":1000,"retention":7948800,"dbname":"smarthome","host":"85.215.52.227","protocol":"http","path":"","port":8086,"user":"","organization":"Softwerk","round":4,"seriesBufferMax":0,"seriesBufferFlushInterval":600,"changesRelogInterval":0,"changesMinDelta":0,"reconnectInterval":10000,"pingInterval":15000,"requestTimeout":30000,"validateSSL":true,"dbversion":"2.x","usetags":true,"pingserver":true,"blockTime":0,"debounceTime":0,"disableSkippedValueLogging":false,"enableLogging":false,"customRetentionDuration":365,"relogLastValueOnStart":true}
Query Data from instance "influxdb.0" (Version 2, Bucket smarthome)
Datapoints found: 4
This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). The promise rejected with the reason:
TypeError: Cannot read properties of undefined (reading 'ts')
at Object.cb (/opt/iobroker/analyzeinflux.js:143:73)
at change (/opt/iobroker/node_modules/@iobroker/js-controller-adapter/src/lib/adapter/adapter.ts:11102:45)
at Immediate.<anonymous> (/opt/iobroker/node_modules/@iobroker/db-states-redis/src/lib/states/statesInRedisClient.ts:379:37)
at processImmediate (node:internal/timers:476:21) -
@apollon77
da habe ich auch ein Problem:
root@server2:/opt/iobroker# node analyzeinflux.js influxdb.0 info --deepAnalyze
Do deep analysis to find holes in data
InfluxDB-Configuration: {"debounce":1000,"retention":7948800,"dbname":"smarthome","host":"85.215.52.227","protocol":"http","path":"","port":8086,"user":"","organization":"Softwerk","round":4,"seriesBufferMax":0,"seriesBufferFlushInterval":600,"changesRelogInterval":0,"changesMinDelta":0,"reconnectInterval":10000,"pingInterval":15000,"requestTimeout":30000,"validateSSL":true,"dbversion":"2.x","usetags":true,"pingserver":true,"blockTime":0,"debounceTime":0,"disableSkippedValueLogging":false,"enableLogging":false,"customRetentionDuration":365,"relogLastValueOnStart":true}
Query Data from instance "influxdb.0" (Version 2, Bucket smarthome)
Datapoints found: 4
This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). The promise rejected with the reason:
TypeError: Cannot read properties of undefined (reading 'ts')
at Object.cb (/opt/iobroker/analyzeinflux.js:143:73)
at change (/opt/iobroker/node_modules/@iobroker/js-controller-adapter/src/lib/adapter/adapter.ts:11102:45)
at Immediate.<anonymous> (/opt/iobroker/node_modules/@iobroker/db-states-redis/src/lib/states/statesInRedisClient.ts:379:37)
at processImmediate (node:internal/timers:476:21) -
@wde sagte in History Adapter - exportieren / migrieren nach InfluxDB:
da habe ich auch ein Problem:
root@server2Richtig. Warum machst du es denn dann?
Nie als root herumhampeln, immer mit einem User. -
@thomas-braun
Danke für die Unterstützung -
@wde Puuh ... scheinbar kommen da die daten nicht so wie erwartet ...
Da müsste man mal über https://github.com/ioBroker/ioBroker.history/blob/master/converter/analyzeinflux.js#L143C33-L143C33 ein console.log einbauen um zu schauen was da genau zurückkommt. Das mit issue im history Adapter dann im GitHub melden
-
@wde sagte in History Adapter - exportieren / migrieren nach InfluxDB:
Danke für die Unterstützung
Kein Problem, gerne.