NEWS
History-Adapter: Wie an Werte kommen?
-
Ich arbeite an einer Heizungsregelung für mehrere RasPis, auf denen jeweils eine ioBroker-Instanz mit der programmierten Regel-Logik läuft. Die Regelung wird über ein eigenes Web-Interface ferngesteuert, in dem ich aus der Ferne die Regelkonfiguration setze, Hosts und Geräte verwalte, sowie Statusinformationen anzeige.
Die Statusinformationen möchte ich jetzt durch eine Historie ergänzen (Temperaturverlauf, Schaltzeitpunkte, Regelstatus, etc…). Der History-Adapter schien mir da am einfachsten, um die Werte zu speichern. Nur muss ich jetzt irgendwie an diese Werte kommen (in ihrer Rohform, <u>nicht</u> per vis/flot/rickshaw), um sie remote anzuzeigen/auszuwerten. Geht das mit Bordmitteln oder muss ich selbst speichern?
-
Der History-Adapter speichert die Werte in Tages-Ordnern mit der Datenpunkt-ID im Dateinamen ab. Das Script liefert einen Ansatz wie man an die Werte des aktuellen Tages kommen kann:
// History Daten einlesen var fs = require('fs'); var heute = formatDate(new Date(),"YYYY") + formatDate(new Date(),"MM") + formatDate(new Date(),"DD"); var id = "javascript.0.Aussen.Temperatur"; var fn = "/opt/iobroker/iobroker-data/history/" + heute + "/history." + id + ".json"; var buffer = JSON.parse(fs.readFileSync(fn)); // array of objects var len = buffer.length; var lastval = buffer[len - 1].val; log(len + " " + lastval);
-
Ok danke, das sollte ich hinbekommen. Aktuell ist es ja noch so, dass der Adapter erst auf die Platte schreibt, sobald die Anzahl der RAM-Datenpunkte überschritten wird.
Das sollte ja in Kürze geändert werden, wenn ich das richtig gelesen habe?!
-
Aktuell ist es ja noch so, dass der Adapter erst auf die Platte schreibt, sobald die Anzahl der RAM-Datenpunkte überschritten wird. `
Als Anzahl RAM-Datenpunkte habe ich 1 eingegeben. Damit fehlen nur die aktuellen Werte in den Dateien. -
Ok, sieht aus als hätte es vor 2h ein Update (oder eine Anpassung der Dokumentation) gegeben, das genau mein Problem löst
.
-
Als Anzahl RAM-Datenpunkte habe ich 1 eingegeben. Damit fehlen nur die aktuellen Werte in den Dateien. `
dann meckert history aber du sollst einen Wet >100 eingeben! klappt das wirklich?Ok, sieht aus als hätte es vor 2h ein Update (oder eine Anpassung der Dokumentation) gegeben, das genau mein Problem löst
.
Siehe https://github.com/ioBroker/ioBroker.history `
Die Version ist aber noch nicht freigegebenGruß
Rainer
-
dann meckert history aber du sollst einen Wet >100 eingeben! klappt das wirklich? `
Ja, das klappt. Ich kann mich nicht daran erinnern, dass history gemeckert hat -
-
Bei mir meckert er nicht:
Liegt vielleicht daran, dass ich schon in der Adapter-Konfiguration den Wert 1 eingetragen habe ? -
Die Version ist aber noch nicht freigegeben `
Oh, kann man schon abschätzen, wann ungefähr? -
Bluefox arbeitet an etwas Größerem.
Ich fürchte diese Version läuft unter der Standardkonfiguration nicht unbedingt problemlos.
Gruß
Rainer
-
Ich fürchte diese Version läuft unter der Standardkonfiguration nicht unbedingt problemlos. `
Das kann ich für den Reiter "Zustände" im Admin-Adapter bestätigen, der die Zeitstempel nicht richtig aktualisiert, was sicherlich mit der Umstellung auf Millisekunden zu hat. Ich habe zum Funktionstest der Wertänderung von Datenpunkten vom Typ "Schalter" (boolean with states) im jeweiligen Reiter nur die Dateien "adminStates.js" und "adminObjects.js" ausgetauscht.Ich hoffe, dass die Übergabe aller nach Millisekunden geänderten Adapter (vor allem js-controller) an npmjs.org möglichst bald erfolgt.
Die History-Einstellung von nur 1 Datenpunkt im RAM bewirkt, dass History häufige Logs verursacht, was ich insofern gelassen sehe, da ich die ioBroker-Logs (über Symlink) und die History auf einen 32 GB USB-Stick und nicht auf die SD-Card schreibe.