NEWS
ehemalige Historydaten finden
-
Ich habe inzwischen sehr viele Daten in meiner History. darunter auch sehr eng getaktete.
Letztens hatte ich ein wenig aufgeräumt, erst von keine Löschung auf 1 Tag, dann komplett deaktiviert.
Hat mir einige GB Plattenplatz freigeschaufelt.Leider habe ich das nicht immer so konsequent gemacht. Oft hatte ich für die Skriptentwicklung diverse HilfsDP erzeugt, diese geloggt und mit flot visualisiert.
Wenn das Skript dann längere Zeit sauber due gewünschten Ergebnisse brachte habe ich das Loggen der
HilfsDPs einfach beendet.Jetzt kann ich diese DPs nicht mehr durch Filtern nach history finden um die alten Werte zu löschen.
Gibt es eine Möglichkeit solche Datenpunkte wieder ausfindig machen zu können, ohne die History-Verzeichnisse der ketzten 3-4 Jahre manuell durchsuchen zu müssen?
-
sieh mal dort nach...
Zugriff auf History Werte mit JavaScript
Mit installiertem JavaScript-Adapter kann auf die Werte des Adapters zugegriffen werden.count könnte ja auch größer als 50 sein...
//Die 50 zuletzt gespeicherte Ereignisse für alle IDs holen: sendTo('history.0', 'getHistory', { id: '*', options: { end: Date.now(), count: 50, aggregate: 'onchange', addId: true } }, function (result) { for (var i = 0; i < result.result.length; i++) { console.log(result.result[i].id + ' ' + new Date(result.result[i].ts).toISOString()); } });
-
@armilar sagte in ehemalige Historydaten finden:
Zugriff auf History Werte mit JavaScript
ja aber!!
die von mir gesuchten Daten sind ja nicht mehr in history.0 "registriert".
existieren nur noch als Dateileichen in älteren Verzeichnissen. -
Ach so... Wäre eine influx.0 oder sql.0 nichts für dich zum anfreunden? Könntest du die vorhandenen Daten exportieren und anschließend alles an history.0 in den Müll werfen. Dann sollten die benötigten Daten bereits in der anderen Variante schlummern und die Datenleichen werden mit den history.0 vernichtet. Oder nochmaliger Reimport aus sql oder influx zurück in history.0 . Einen echten Datenleichensucher kenne ich auch noch nicht
Daten zur Auswertung sind bei mir nicht auf dem PROD-System. Genau weil sie irgendwann zur Bremse werden.
-
@homoran sagte in ehemalige Historydaten finden:
Gibt es eine Möglichkeit solche Datenpunkte wieder ausfindig machen zu können, ohne die History-Verzeichnisse der ketzten 3-4 Jahre manuell durchsuchen zu müssen?
Ich würde mir ein Skript schreiben bzw. es in der Bash lösen:
find /tmp/* -mtime +7
würde alle Dateien älter als 7 Tage finden
Nimm das auf den History-Stamm-Ordner und dann z.B. mit 365 Tagen
Man kann auch einen Befehl anhängen, z.B. löschen:find /tmp/* -mtime +7 -exec rm {} \;
ich würde aber erste den Find-befehl perfektionieren - dann siehts du ja was "Alt" ist und ob das passt.
Siehe auch https://www.baeldung.com/linux/find-exec-command
Nachtrag: Wenn es mehr ist (ich zeichne so 200 Datenpunkte auf) würde ich langfristig zu einem Wechsel zu SQL oder Influx empfehlen.
-
Ich nahm an, das etliche Dateien auch noch einen Nutzen haben, auch wenn sie älter sind... Aber der Ansatz um uralte Daten zu finden (>2 Jahre) ist echt gut...
-
@armilar So genau weis ich nicht wie der History-Adapter das ablegt, aber ja, verschaffe dir einen Überblick und prüfe doppelt (+ backup) wenn du was löscht
-
@bananajoe sagte in ehemalige Historydaten finden:
Wenn es mehr ist (ich zeichne so 200 Datenpunkte auf) würde ich langfristig zu einem Wechsel zu SQL oder Influx empfehlen.
@armilar sagte in ehemalige Historydaten finden:
Wäre eine influx.0 oder sql.0 nichts für dich zum anfreunden?
im Moment nicht.
kenne mich weder mit SQL noch mit influx aus.
klar, ich hatte beides damals zum Testen laufen, als die Adapter herauskamen, um die Doku zu schreiben.
war kein Hexenwerk. Allerdings warxes für mich persönlich nicht zufriedenstellend dass ich nicht wusste und verstand was da abläuft.Abschließend war es auch noch erst als Hörtetest gedacht um zu prüfen was man mit history eigentlich schafft.
Jetzt nach > 3 Jahren hat es dann auch noch eine Eigendynamik bekommen, so dass due history DB lnzwischen 48GB groß ist@armilar sagte in ehemalige Historydaten finden:
Ich nahm an, das etliche Dateien auch noch einen Nutzen haben, auch wenn sie älter sind...
korrekt! die will ich auch behalten.
ich möchte nur temporär verwendete Daten, die ich in history ggf. schon lange deaktiviert habe, bereinigen@bananajoe sagte in ehemalige Historydaten finden:
So genau weis ich nicht wie der History-Adapter das ablegt
der schreibt für jeden Tag ein Verzeichnis und darin für jeden geloggten Datenpunkt ein JSON.
klar kann ich 1000 Verzeichnisse manuell öffnen und die JSONs löschen, die ich nicht mehr brauche.Allerdings tue ich mich schwer ohne Objektstruktur nur anhand der ID zu entscheiden ob ich den DP noch brauche.
ich stelle mir prinzipiell vor, dass ich eine Liste der IDs bekäme, die aktuell nicht mehr in history geloggt werden.Damit müsste ich dann die älteren Verzeichnisse überprüfen.
-
@homoran Ungefähr so?
159 Verzeichnisse wurde(n) gelesen! fromDir und toDir dürfen nur im Bereich von 0 bis 159 sein! Bitte in 10er-Schritten verwenden! Es wurde ein Bereich von 0 bis 10 gewählt-> es dauert 20 Sekunden 75 DPs im Verzeichnis: 20220602 70 DPs im Verzeichnis: 20220601 72 DPs im Verzeichnis: 20220603 72 DPs im Verzeichnis: 20220604 73 DPs im Verzeichnis: 20220605 68 DPs im Verzeichnis: 20220606
-
@mcu klingt gut!
muss ich mir am PC mal zu Gemüte führen.Der Titel hatte mich erstmal irritiert, aber im Text steht dann der wichtige Punkt:
Möchte man die alten DP-Leichen aus seiner umfangreichen historyDB löschen, kann man sich mit diesem Script die DPs (Dateien), die nicht mehr aktiv geloggt werden, anzeigen lassen.
-
@mcu hab es jetzt doch nicht abwarten können und vom Tablet versucht. Bekomme Fehler:
javascript.1 2022-11-05 10:25:19.721 error at processTimers (internal/timers.js:500:7) javascript.1 2022-11-05 10:25:19.721 error at listOnTimeout (internal/timers.js:557:17) javascript.1 2022-11-05 10:25:19.720 error at Timeout._onTimeout (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:2239:34) javascript.1 2022-11-05 10:25:19.720 error at Object.<anonymous> (script.js.historyLeichen:31:13) javascript.1 2022-11-05 10:25:19.720 error at searchDir (script.js.historyLeichen:136:5) javascript.1 2022-11-05 10:25:19.719 error Error in callback: ReferenceError: fs is not defined javascript.0 2022-11-05 10:18:41.702 warn State "javascript.0.scriptEnabled.historyLeichen" has no existing object, this might lead to an error in future versions
irgendwo stand auch erro, wahrscheinlich statt error.
SORRY! bekomme am Tablet den code nicht kopiert!
auch hier noch Mecker:
-
@mcu
passend dazu das log2022-11-05 10:22:21.336 - info: javascript.1 (1578246) Stop script script.js.historyLeichen 2022-11-05 10:23:41.168 - info: javascript.1 (1578246) Start javascript script.js.historyLeichen 2022-11-05 10:23:41.179 - info: javascript.1 (1578246) script.js.historyLeichen: registered 1 subscription and 0 schedules 2022-11-05 10:25:14.722 - info: javascript.1 (1578246) script.js.historyLeichen: Anzahl der aktiv geloggten DPs: 421 2022-11-05 10:25:19.719 - error: javascript.1 (1578246) Error in callback: ReferenceError: fs is not defined 2022-11-05 10:25:19.720 - error: javascript.1 (1578246) at searchDir (script.js.historyLeichen:136:5) 2022-11-05 10:25:19.720 - error: javascript.1 (1578246) at Object. (script.js.historyLeichen:31:13) 2022-11-05 10:25:19.720 - error: javascript.1 (1578246) at Timeout._onTimeout (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:2239:34) 2022-11-05 10:25:19.721 - error: javascript.1 (1578246) at listOnTimeout (internal/timers.js:557:17) 2022-11-05 10:25:19.721 - error: javascript.1 (1578246) at processTimers (internal/timers.js:500:7)
-
@homoran Javascript 6.1.3 und history 2.2.4 im Einsatz?
Bei früheren Javascript Versionen muss man fs bei npm Modulen eintragen. -
@mcu sagte in ehemalige Historydaten finden:
Javascript 6.1.3 und history 2.2.4 im Einsatz?
noch nicht.
@mcu sagte in ehemalige Historydaten finden:
Bei früheren Javascript Versionen muss man fs bei npm Modulen eintragen.
mach ich!
Danke
EDIT:
ist bereits drin
-
-
@mcu sagte in ehemalige Historydaten finden:
Welche javascript Version hast du?
5.70
Danke!
ist gestartetEDIT:
oops
javascript.1 2022-11-05 12:21:33.463 info script.js.historyLeichen: fromDir und toDir dürfen nur im Bereich von 0 bis 1193 sein! Bitte in 10er-Schritten verwenden! javascript.1 2022-11-05 12:21:33.463 info script.js.historyLeichen: 1193 Verzeichnisse wurde(n) gelesen! javascript.1 2022-11-05 12:21:28.472 info script.js.historyLeichen: Anzahl der aktiv geloggten DPs: 421
das mit den 10er Schritten stand doch vorher nicht da?
-
@homoran Hast du als dirEnd 1193 eingegeben? Dann 2x 1193 Sekunden warten!
-
@mcu sagte in ehemalige Historydaten finden:
@homoran Hast du als dirEnd 1193 eingegeben? Dann 2x 1193 Sekunden warten!
nee, ganz so mutig war ich nicht.
bei den ersten hatte ich 0-100 und jetzt 101-200 -
@homoran Und wie sieht es aus?
-
@mcu erstmal sieht es gut aus!
bekomme nur den Download des logs am Tablet nicht hin, da friert der Feuerfuchs ein.also könnte ich auch alles auf einmal Abfragen?
Zeit und Leistung vorausgesetzt!