Mahlzeit!
auch wenn der Eintrag hier schon älter ist, passt meine Erfahrung mit dem Import-Script wohl am besten hier rein.
Evtl. hilft es ja jmd. mit dem gleichen Problem.
Ich habe kürzlich auch zu Influx gewechselt - aus versch. Gründe noch die 1.8, tut hier nichts zur Sache.
Habe mich aber dazu entschieden, die Objekt-Datenpunkte die ich zukünftig nach Influx loggen will, mit einem Alias zu versehen (im Gegensatz zu "HIS" wo ich keine Alias gesetzt hatte)
Dadurch finde ich die entsprechenden Felder in bspw. Grafana später schneller und die Namen sind wesentlich kürzer.
statt:
"history.sourceanalytix.0.sonoff__0__DVES_49A41C__ENERGY_Power_1.currentYear.consumed.02_currentWeek"
nur noch:
"Waschmaschine_SA_Power_currentYear_consumed_WOCHE"
Entsprechend habe ich den Alias in den Einstellungen des Objekts für Influx gesetzt.
Zum Problem wurde nun aber, dass meine alten History-Daten (gleiche Objekte) KEINEN Alias hatten wie oben erwähnt,
somit die JSON's mit dem original Objekt-Pfad-Namen benannt waren und das Import-Script diese natürlich als, ich nenn das mal "eigenständig" betrachtet
und nicht in meine bereits vorhandenen Felder der Influx importiert da dort ja bereits der Alias verwendet wird, den ich für Influx hinterlegt habe.
Ich habe daher alle betreffenden JSON's aus der History umbenannt (/opt/iobroker/iobroker-data/history-data/) - also so, dass diese nun identisch mit meinen Alias sind die ich für Influx vergeben habe
und zu den in Influx erstellten Datenbankfelder passen.
Der Analyzer lief durch, das Ergebnis war für mich soweit OK - wie erwartet; also hab ich den Import gestartet,
bekam dann aber immer die Ausgabe das die Objekte "ignoriert" werden.
Festzustellen war hierbei, dass die Objektnamen, die von HIS kamen, offensichtlich nicht zu den Feldern in der Influx passten obwohl der Name der JSON in der HIS identisch war.
Also bspw:
DB Feld in Influx (entsprechend dem Alias):
Waschmaschine_SA_Power_currentYear_consumed_WOCHE
und das entsprechend JSON File unter HIS:
Waschmaschine_SA_Power_currentYear_consumed_WOCHE.JSON
Bei genauer Betrachtung der Logs des Import-Script habe ich dann aber feststellen müssen, das das Script den Namen der aus HIS kommenden Daten wohl abschneidet.
Aus "Waschmaschine_SA_Power_currentYear_consumed_WOCHE" wurde "chine_SA_Power_currentYear_consumed_WOCHE".
Nach langem suchen; ich bin in erster Linie ma SysAdmin aber weiß Gott kein Entwickler..., habe ich dann im Script den folgenden Abschnitt entdeckt und festgestellt das tatsächlich immer die ersten 8 Zeichen abgeschnitten werden.
Das hat sicher generell seinen Sinn, da normalerweise jeder Eintrag mit "history." beginnt.
Das habe ich bei der Umbenennung jedoch nicht weiter beachtet, den Zusammenhang auch nicht gekannt - Ziel war es ja das die Namen identisch zu meinen Felder in Influx / dem Alias sind.
Hier die Script Zeilen (im org. die Zeilen 188ff)
function processFile() {
if (breakIt) finish(true);
if (Object.keys(allFiles).length === 0) finish(true);
const day = parseInt(Object.keys(allFiles)[Object.keys(allFiles).length - 1], 10);
const tsCheck = new Date(Math.floor(day / 10000), 0, 1).getTime();
if (allFiles[day].files.length > 0) {
const dir = allFiles[day].dirname;
const file = allFiles[day].files.shift();
const id = file.substring(8, file.length - 5); <--------HIER !!!!! ########
const weatherunderground_special_handling = (id.indexOf('weatherunderground') !== -1 && id.indexOf('current.precip') !== -1);
console.log('Day ' + day + ' - ' + file);
Ich habe somit die Zeile const id = file.substring(8, file.length - 5); zu const id = file.substring(0, file.length - 5);
geändert. Und siehe da, mein Import lief im Anschluss nun erfolgreich durch, da die Namen nun übereinstimmten.
Alternativ, das sei erwähnt wäre es wohl auch eine Option gewesen meine gesamten JSON Files unter "/opt/iobroker/iobroker-data/history-data/" nochmals umzubenennen und um "history." zu erweitern.
Ich habe mich nur aus Zeitgründen dagegen entschieden, da ich die Daten ~80000 Files erst einmal herunterladen und auch wieder uploaden hätte müssen. Die Anpassung des Scripts war da weit schneller.
Alles in allem wäre für mich aber festzuhaltend, dass es somit durch aus möglich ist, History-Daten auch aus der Vergangenheit zu importieren, wenn diese KEINEN Alias hatten und die neuen Datenpunkte einen verwenden.
Entsprechender Aufwand wie oben beschrieben vorausgesetzt.
Vermutlich erzählt mir nun einer, dass das anders viel einfacher gewesen wäre 😄 das wäre für mich OK,
aber für mich war es erst einmal die einzige Möglichkeit die ich gesehen habe - und sie scheint zu funktionieren.
Ich hätte mich geäergert, wären eine alten Daten aus HIS "verloren" gewesen - oder ich hätte dir org. Namen in Influx verwenden müssen...was doof gewesen wäre.
so long - Danke an der stelle für das Script!! - geniale Sache!
Grüße John.