NEWS
inflxudb kurze Speicherdauer einstellen
-
Hallo,
ich möchte meinen derzeitigen Stromverbrauch in Grafana grafisch mit "Gauge" darstellen. Das geht ja nur über Influxdb. Aber dafür ist es ja nicht notwendig, den DP monatelang/jahrelang in influxdb zu speichern.
Im influxdb-Adapter (bzw. inflxudb 2.x) kann ich ja nur für die komplette Datenbank die Speicheraufbewahrung einstellen.Kann ich für diesen DP "aktueller Stromverbrauch" die Speicherdauer auf 1 Tag oder so begrenzen? Mich interessiert ja dann nicht mehr, wie hoch der Stromverbrauch letzte Woche um xx.xxx Uhr war.
Vielen Dank für Anregungen -
@cbrocker 2te Instanz von influxdb und in ein zweites Bucket mit kurzer Speicherdauer schreiben.
-
@spacerx said in inflxudb kurze Speicherdauer einstellen:
2te Instanz von influxdb und in ein zweites Bucket mit kurzer Speicherdauer schreiben.
Hey, danke. Ja, das hatte ich mir auch schon überlegt.
Aber nur deswegen möchte ich keine 2. Instanz.Weißt du, kann man in influxdb aber von einem measurement dann Daten, z.B. älter als 1 Woche, manuell löschen?
-
@spacerx
ich lese gerade in der influxdb Doku folgendes:A database can have multiple retention policies with one set as default. If no retention policy is specified in a query or write request, InfluxDB uses the default retention policy for the specified database. Use the influx CLI or the InfluxDB API to set a retention policy as the default retention policy for a database.
Dann könnte es doch möglich sein, unterschiedl. Aufbewahrungsrichtlinien einzustellen.
Das heißt, rumtüfteln... -
@cbrocker Nein in der Regel lässt Du iobroker kurzfristig sammeln - das Konsolidieren in langfristige Buckets solltest Du selbst innerhalb von influx machen. Die Vorhaltedauer, die Du im Adapter einstellst wird automatisch auf die Retention Time im Bucket übertragen.
-
@mickym
Hey, was meinst du mit, in iobroker kurzfristig sammeln?Diese Einstellung im Adapter ist letzten Endes die Retention Policy in influxdb?
-
@cbrocker Ja - für das iobroker bucket halt.
-
@mickym ja, verstehe. ok, danke. Ich lese mich gerade bißchen durch die Doku und frage ChatGPT um Rat
-
@cbrocker Ja ich habs nur mal im Test gehabt und hab bisschen gelernt - und ein paar Kurse der univeristy durchgemacht - habs dann erst mal wieder auf Eis gelegt, weil ich nicht der große Datensammler bin.
Aber immerhin - 3 Kurse habe ich durchgemacht.
-
@mickym wow, da hast dich echt reingekniet, da ja auch alles auf englisch ist.
Ja, so ein SmartHome System erfordert dann Kenntnisse in 30 weitere Dinge/Programmiersprachen/Datenbanken usw.
Aber das macht echt Spaß -
@cbrocker Ja aber wieder viel vergessen - da gibts Leute, die hier viel fitter sind. Aber dieser Grundlagen oder dass die Retention Time des Adapters mit dem des iobroker buckets übereinstimmt, habe ich halt selbst schon festgestellt.
Und das Telegraf ist wieder ein eigenes System mit dem Du direkt Dinge überwachen kannst, das habe ich mal auf meinem Windows und auf dem Raspberry ausprobiert. Aber es sind richtige Agenten die auf den Zielsystemen laufen. Der Vorteil ist, dass Du damit Daten systemübergreifend sammeln kannst. Ist aber auch eine Wissenschaft für sich. Manchmal kniet man sich bissi rein und dann lässt man es wieder. In Teilbereichen kannst Du damit auch iobroker Adapter ersetzen. Aber manchmal führen zuviele Wege nach Rom.
Also ich bin da kein Fachmann drin, auch wenn ich Dir glaube für Deine Frage eine fachlich richtige Auskunft gegeben habe.
-
@mickym ja, das hat mir schon weitergeholfen von dir.
Stimmt, mit Telegraf und Chronograph usw. könnte man weitermachen...
Aber ich denke, für das eigene SmartHome braucht man so Zeugs nicht wirklich -
@cbrocker sagte in inflxudb kurze Speicherdauer einstellen:
ich lese gerade in der influxdb Doku folgendes:
A database can have multiple retention policies with one set as default. If no retention policy is specified in a query or write request, InfluxDB uses the default retention policy for the specified database. Use the influx CLI or the InfluxDB API to set a retention policy as the default retention policy for a database.
Dann könnte es doch möglich sein, unterschiedl. Aufbewahrungsrichtlinien einzustellen.
Das gibt es in der Influxdb 2.x nicht mehr. Ein Bucket = eine Retention Time.
-
@cbrocker sagte in inflxudb kurze Speicherdauer einstellen:
@mickym ja, das hat mir schon weitergeholfen von dir.
Stimmt, mit Telegraf und Chronograph usw. könnte man weitermachen...
Aber ich denke, für das eigene SmartHome braucht man so Zeugs nicht wirklichMoin,
ich nutze ein Bucket für den
ioBroker
in den alle DP geschrieben werden, dieser hat nur eine geringe Halbwertzeit von 15 Tagen
Anschließend mache ich innerhalb voninfluxDB
Downsampling der Daten aus demioBroker - Bucket
in ein Bucket, das die Daten für einen Monat hält, wo ich dann wieder einDownsampling
mache und in ein Quartals - Bucket schreibe und dann nochmal aus dem Quartals - Bucket, in das Jahres - Bucket.Ist am Anfang viel Arbeit, aber ich denke, wenn ich damit fertig bin, habe ich meine Daten gut im Griff und kann dann auch schnell Diagramme auf Basis der Buckets machen.
Das ganze läuft aktuell noch alles in einer Testphase, da ich noch auf meine endgültige Hardware warte, die leider erst Ende Mai, Anfang Juni kommt, da es ein Kickstarter Deal ist
VG
Bernd -
@dp20eic Hey, das ist ein interessanter Ansatz.
Machst du dann Grafana Diagramme nur mit den Daten aus dem Jahres-Bucket oder auch von den anderen?Sprich, deine längste Aufbewahrungsdauer ist aber 1 Jahr?
Was für ne Hardware hast du bestellt?
-
@cbrocker Hier mal mein Beitrag zum Thema Retentionpolice.https://forum.iobroker.net/topic/58462/datenaufzeichnung-retention-influxdb-2-0/16
Ich hab das für mich so gelöst das ich im ioBroker Bucket eine Aufbewahrungzeit von 3 Monaten eingestellt habe.
Alles was ich länger haben möchte, wird mit Downsampling in andere Buckets geschrieben. -
@spacerx danke für die Infos und Links. Das ist natürlich so ideal. Muß ich mir tatsächlich genauer anschauen, genauso wäre es für mich passend.
Wird immer umfangreicher, mit was man sich beschäftigen kann -
@cbrocker sagte in inflxudb kurze Speicherdauer einstellen:
@dp20eic Hey, das ist ein interessanter Ansatz.
Moin,
hab den Post von @SpacerX nicht weiter verfolgt, ich lasse alle Datenpunkte in mein
iobroker
Bucket schreiben, also alles ob nun sekündlich oder nur alle paar Stunden ein Wert kommt.Machst du dann Grafana Diagramme nur mit den Daten aus dem Jahres-Bucket oder auch von den anderen?
Ich mache auch von den anderen Buckets Diagrammen, z.B. Spritpreise bleiben nur im
iobroker
Bucket für 15 Tage, daraus baue ich mir die Anzeige für den Tag, da mir eine Aggregierung auf Tag nicht für den aktuell günstigsten Preis hilft
Bei anderen, wie z. B. Strom, Gas und Wasser ist es auch unterschiedlich, Strom will ich den aktuellen Verbrauch sehen → 15 Tages Bucket, dann aber auch wie war der Verbrauch gestern über den Tag im Vergleich zum Vortag oder Woche zur Vorwoche nehme ich dann aber nicht mehr die Daten aus dem 15 Tages Bucket, sondern schon aggregierte Werte aus einem anderen Bucket. Beim Wasser ist es dann nicht der aktuelle Wert der mich interessiert, sondern vielleicht nur noch der Verbrauch im Monat oder Quartal.Ich stelle ich mir die Frage, welche Werte brauche ich länger als die eingestellten 15 Tage, z. B. Stromverbrauch total, möchte ich mindestens zwei Jahre zurückverfolgen, also aggregiere ich täglich, kurz nach Mitternacht, die Werte des Datenpunkts und schreibe ihn in ein eigenes Bucket, hier speziell noch eins nur für Strom, mit eigener Org. und eigenem Token.
import "timezone" option task = {name: "Downsampling Vb_Stromzaehler", cron: "15 0 * * *"} option location = timezone.location(name: "Europe/Berlin") data = from(bucket: "iobroker_strom") |> range(start: -2mo, stop: now()) |> filter(fn: (r) => r["_measurement"] == "sonoff.0.DVES_8AA766.SENSOR.SML.total_kwh") |> filter(fn: (r) => r["_field"] == "value") // Spalten "_start", "_stop", "ack", "from", "q", ausschliessen |> drop(columns: ["ack", "q", "from"]) data |> aggregateWindow(every: 1d, fn: last, timeSrc: "_time") // In Wh ohne Komma |> toInt() |> set(key: "_measurement", value: "Hauptzaehler") // Use the to() function to validate that the results look correct. This is optional. |> to(bucket: "Stromverbrauch", org: "iobroker_strom")
Aktuell erstelle ich mir eine Liste mit den DP, die ich archiviere, damit ich mir einen Überblick verschaffen kann, wie ich welchen Wert brauche
Beispiel:dp 15 T Monatswert Quartalswert Jahreswert für immer sonoff.0.DVES_8AA766.SENSOR.SML.total_kwh X X X tankerkoemig.0.e10 X X Sprich, deine längste Aufbewahrungsdauer ist aber 1 Jahr?
Aktuell Ja, ich habe aber auch erst z. B. mit Strom dieses Jahr im Jan. angefangen, ich beobachte mal wie was anwächst, das ist ja auch ein Vorteil des Downsampling, dass die Menge der gespeicherten Daten geringer wird.
Was für ne Hardware hast du bestellt?
Zwei davon https://www.kickstarter.com/projects/storaxa/fully-customizable-home-cloud-storage-with-remote-access-nas?lang=de
Mit je 64 GB Memory, aber noch ohne M.2 oder SSD, da nutze ich das Vorhandene aus meiner DS716 + DX510, wenn aber die Preise für M.2 weiter so attraktiv sind, werde ich mir da wohl noch die ein oder andere holenVG
Bernd -
@dp20eic Hey Bernd,
vielen Dank für die ausführlichen Infos. Sehr interessant und hilft mir bei meinem Brainstorming.Im Thread von SpacerX habe ich auch gelesen, daß es mit der Zeitzone Probleme geben kann.
Ist die timezone.location schon notwendig?Warum hast du bei dem Strom Bucket eine Org und Token?
Wie viel Buckets hast du insgsamt?Grüße Christoph
-
Moin,
@cbrocker sagte in inflxudb kurze Speicherdauer einstellen:
@dp20eic Hey Bernd,
vielen Dank für die ausführlichen Infos. Sehr interessant und hilft mir bei meinem Brainstorming.Gerne doch, deswegen sind wir doch hier, um uns auszutauschen
Im Thread von SpacerX habe ich auch gelesen, daß es mit der Zeitzone Probleme geben kann.
Ist die timezone.location schon notwendig?Ich habe bis jetzt immer festgestellt, dass ich
Zulu Zeit = UTC
in den Rohdaten habe, daher ist das für mich erst einmal so gesetzt, wenn ich feststelle, dass etwas nicht stimmt in der Abfrage, dann fliegt es rausWarum hast du bei dem Strom Bucket eine Org und Token?
Als ich anfing, hatte ich noch alles unter einer Org und einem Token, dann kamen immer mehr, auch andere Sachen, die nichts mit
ioBroker
zu tun haben dazu, dann habe ich auch ab und an Mist gebaut und so fing ich an alles zu trennen, ob das so sein muss, keine Ahnung. Da ich mich immer noch im Aufbau befinde, tut das auch nicht so weh. Wenn dann die Hardware da ist, wird das sauber aufgebaut, und die Daten exportiert und im Zielbucket importiert.Wie viel Buckets hast du insgsamt?
Aktuell sind es glaube ich neun, plus zwei hier für das Forum, falls man mal etwas testen muss,
proxmox metrik
,telgraf Metriken LXC Container, Office PCs
,Loki Logfile Monitoring
,FritzinfluxDB
,15T iobroker
,Monats-, Quartals-, Jahres-, Immer-Bucket
VG
Bernd