Daten in der HA Datenbank verändern

Hallo zusammen,
um Sensorwerte in der DB zu ändern, hatte ich gedacht, ich könnte mir “DB Browser for SQLite” installieren, via FTP-Plugin den HA Config-Ordner im Windowsexplorer mappen, die “home-assistant_v2.db” öffnen und dann nach Herzenslust Werte korrigieren.

Das klappt alles wunderbar, aber nur bis ich nachprüfen möchte, ob das Update-Statement auch das gemacht hat, was ich möchte. Dies ist aber nicht der Fall. Alle Änderungen, die ich vornehme, werden nicht auf das System gebracht.

Lokal sind die Werte korrekt angepasst worden, aber wenn ich die DB im DB Browser neu öffne, ist alles wieder zurück auf Anfang. Entweder wird das Update beim Schreiben einfach geblockt oder die Arbeiten mit dem DB Browser finden auf einer tmp-Datei statt, anstelle dass es durchgeschrieben wird.

Hand da jemand eine Idee?

Danke.

Moin,

man sollte an einer SQLite Datenbank nicht remote arbeiten, da es eine File basierende Datenbank ist, Du kannst HA stoppen, dann die Datenbank auf Windows kopieren, dann Werte ändern, solange man die Abhängigkeiten beachtet. Nach dem Speichern , die original Datenbank in ha umbenennen und die von Windows wieder hoch kopieren, testen und hoffen, dass alles wieder/noch läuft.

So aber, das ist auch alles umständlich, es gibt auch das Add-on SQLite WEB

VG
Bernd

P.S.: Ich übernehme keine Garantie, für eventuell Schäden, bei Änderungen am offenen Herzen.

1 „Gefällt mir“

Super vielen Dank für diesen Hinweis. Ich habe direkt erreicht, was ich dachte, dass ich erreichen wollte, aber ich glaube, ich habe es noch nicht korrekt verstanden.

Ich habe einen Wert, der einfach Quatsch ist.

Nun habe ich via DB Browser herausgefunden, dass es sich um folgende Zeile handeln müsste:


Also hier stand exakt diese 85.00 °C und der Zeitstempel passte auch. Also habe ich dies nun auf etwas geändert, was passen sollte.

Die Zeile ist nun angepasst, aber wenn ich in die InfluxDB reinschaue, ist immer noch der Wert von 85 da. Irgendwas mache ich noch nicht richtig.

Trotzdem vielen Dank :wink:

Moin,

das ist ja nochmals was ganz anderes!

Wenn Du den Wert in der HA Datenbank änderst, wird der nicht nochmals an InfluxDB übertragen, entweder dann auch in der InfluxDB händisch ändern, oder, aber da bin ich mir nicht ganz sicher, ob sich dann da etwas tut, den falschen Wert, den Du ja jetzt leider nicht mehr in der HA Datenbank hast, über die Statistiken ändern.



grafik

VG
Bernd

1 „Gefällt mir“

Hast du Versuch den Wert über die Entwicklerwerkzeuge - Statistik zu korrigieren? Unter Umständen wird dir dort eine Korrekturmöglichkeit angeboten.

1 „Gefällt mir“

Leider bekomme ich über die Statistiken nichts angezeigt:

Das war auch meine erste Anlaufstelle.

Aber gut, dann bin ich also in der falschen DB und muss mal schauen, ob ich die Influx-DB finde.

Bleibt für mich noch die Frage, was in dem Diagramm als Datenbasis genutzt wird, weil selbst hier wird noch ein Ausreißer angezeigt:
grafik

Selbst wenn ich die Langzeitwerte in der InfluxDB nicht angepasst habe, müsste der Wert in diesem Diagramm doch nun korrekt sein, oder?

Moin,

ich verstehe nicht, was Du für eine Installation hast :thinking:

Wie hast Du die InfluxDB installiert, als Add-on?
Dann frage ich mich wieso, wie greifst Du auf die InfluxDB zu, denn dazu braucht man Grafana, das geht aus HA nicht!

Das ist ja das, was ich oben versucht habe zu sagen, wenn man die Datenbank, das Datenbankmodell nicht kennt, sollte man die Finger von lassen :wink:

Es gibt zwei Hauptbereiche in der Datenbank,

  • die historischen Daten

    alle Daten/Werte, die im Standard für 10 Tage gespeichert werden, alle Entitäten, die den anforderungen der Langzeitdaten entsprechen, werde entsprechend in dieLangzeitdaten geschrieben, alles andere wird nach den 10 Tagen gelöscht

  • die Langzeitdaten

    Long-term Statistics

    Home Assistant has support for storing sensors as long-term statistics if the entity has the right properties. To opt-in for statistics, the sensor must have state_class set to one of the valid state classes: SensorStateClass.MEASUREMENT, SensorStateClass.TOTAL or SensorStateClass.TOTAL_INCREASING. For certain device classes, the unit of the statistics is normalized to for example make it possible to plot several sensors in a single graph.

Wie schon gesagt, in HA wird die InfluxDB nicht genutzt, also frage ich mich warum Du sie Installiert und eingerichtet hast?

Bei der Installation von InfluxDB als Add-on, wird auch ein Programm mit installiert welches Chronograf heist, taucht dann auch im Menü links auf und sieht in etwa so aus

Da kannst Du alle Werte anschauen.

VG
Bernd

Nochmals danke für deine Antwort. Wenn ich die Finger davon ließe, wüsste ich niemals, was ich denn da nutze :wink:

Meine HA Installation stammt aus 2010 und ist, mal abgesehen von den fortlaufenden Updates, nicht sonderlich verändert worden.

Über das normale Lovelace-Dashboard kann ich auf diese “Langzeitdaten” zugreifen, allerdings erst seit Mitte 2021:

In Grafana, welches die InfluxDB als Quelle nutzt kann ich bis 01.10.2020 zurück:

Wieso es hier einen Unterschied gibt, weiß ich nicht.

Sowohl die Influx DB, als auch Grafana, sind ziemlich simpel als Addon installiert worden, strikt nach den Beschreibungen, die vor Jahren aktuell gewesen sind.

Ich würde auch gar nichts ändern wollen, da ich “ganz bestimmt” mal nachschauen möchte, wie warm es an Weihnachten vor 5 Jahren in jedem einzelnen Raum gewesen ist. :wink:

Allerdings sind diese Dashboards nur so gut, wie die Daten und besonders im ESP-Bereich, wenn ein Update gemacht wird, zeigt er mir plötzlich 85°C an und das ist Mist. Diese Fehlwerte würde ich gerne anpassen, damit ich einen brauchbaren Graph behalten kann.

Den File, in dem die InfluxDB liegt, habe ich noch nicht gefunden, aber deine Hinweise auf zwei unterschiedliche Dateien, in denen die Werte liegen, erscheinen mir schlüssig. Nur kann ich mir dann nicht erklären, wieso im HA direkt immer noch die 85 zu sehen ist, obwohl ich sie in der home-assistant_v2.db ersetzt habe.

Moin,

Interessant :wink:

Home Assistant wurde 2013 von Paulus Schoutsen ins Leben gerufen.

Du warst einfach der Zeit schon weit voraus :slight_smile:

Vor dieser Zeit, gab es noch keine Langzeitdaten in HA selbst, damals war es wirklich nur über eine externe Datenbank, z. B. InfluxDB, möglich auf Langzeitdatendaten zurückzugreifen.
In 2021 wurden dann die Langzeitdaten in HA selbst eingeführt :wink:

Siehe Erklärung oben :wink:

ok, jeder hat halt so eine Macke :slight_smile:

Du kannst da nicht, so wie in ein Textfile hineinschauen, das sind Binärdateien, wenn Du da, auch nur mal aus Versehen die Datei aus einem Editor heraus abspeicherst, obwohl Du nichts geändert hast, kann die danach kaputt sein!

wie schon geschrieben HA SQLite Datenbank InfluxDB Datenbank!

Wie auch schon geschrieben, die HA SQLite Datenbank hat unterschiedliche Tabellen, in denen,

  • die Kurzzeitdaten gespeichert sind
  • die Langzeitdaten gespeichert werden

Du hast aber nur an einer Stelle der SQLite Datenbank die Daten manipuliert.

VG
Bernd

Grummel - 2020, wie auf den Screenshots zu sehen :wink:

Dann wären es nun wieder mehr Fragen:

  • Es scheint, als ob ich nun an den Kurzdaten geschraubt habe, was im Grund keinen Sinn hat. Der Wert, den ich verändern muss, damit es in HA sichtbar wird, liegt irgendwo hier?
    grafik

  • Wenn die Langzeitstatistiken ein opt-in voraussetzen, wieso kann ich dann alle (?) meine Werte dort sehen? Ich habe nie etwas dergleichen aktiv gewünscht und da meine Snapshots mittlerweile 9GB groß sind, lege ich auch keinen Wert auf doppelte Datenhaltung. :man_shrugging:

  • Wieso bekomme ich keine Statistik angeboten, mit der ich die Daten korrigieren könnte?

  • Um in Grafana die Werte dann korrekt überwintern zu lassen, müsste ich die Werte direkt in der InfluxDB ändern. Gibt es in dem HA Szenario einen eleganten Weg, dies zu machen?

Ich lerne, aber manchmal gibt es erst mehr Fragezeichen, bevor daraus ein Sinn entsteht :smiley:

Moin,

doch Du hast die Updates gemacht!
Das ist etwas, was man nicht ausschalten, kann, denn x Anwender wollten Langzeitdaten und deswegen wurde das auch in HA in 2021 umgesetzt!
Es ist halt eher nicht mehr nötig eine InfluxDB mitzuschleppen, weil

Denn das kommt dann ja eher von Deiner InfluxDB und nicht von der HA SQLite Datenbank!

Du kannst aber die Größe der SQLite Datenbank einfach anschauen, wenn Du

  Home Assistant URL:       http://homeassistant.local:8123
  Observer URL:             http://homeassistant.local:4357
➜  ~ ls -la config/home-assistant_v2.db*
-rw-r--r--    1 root     root     5914947584 Dec 22 13:16 config/home-assistant_v2.db
➜  ~ 

Oder wenn Du mit User freundlich besser klarkommst,

➜  ~ ls -lha config/home-assistant_v2.db*
-rw-r--r--    1 root     root        5.5G Dec 22 13:17 config/home-assistant_v2.db
➜  ~ 

Wenn Du diese Datenbank dann in ein Backup, Snapshot, gibt es in HA nicht, packen würdest, dann wäre die nur noch ca. 1 - 2 GB groß, weil alles in einer komprimierten Archivdatei abgelegt wird.
Du kannst aber auch ein Backup auf Dein Windows-PC holen und dort mittels 7ZIP hineinschauen und dann siehst Du ja welche Datei da wie groß ist.

Die doppelte Datenhaltung hast Du ja eingerichtet, als Du die InfluxDB installiert hast, auch das schriebe ich jetzt gern noch einmal, die InfluxDB läuft parallel zur HA SQLite Datenbank und ersetzt dies nicht!

ohne es recherchiert zu haben, weil °C nicht zu den Daten gehört!

Ja!
Nein, weil HA keinen Zugriff auf die InfluxDB hat, HA nutzt das nur als Datenablage, aber nicht um mit den Daten zu arbeiten!
Wenn Du die InfluxDB als Add-on installiert hast, dann wurde Dir auch das Tool Chronograf mit installiert, hatte ich weiter oben ja schon gesagt

Du kannst versuchen Dir die fehlerhaften Daten zu exportieren, dann zu korrigieren und wieder zu importieren.

VG
Bernd

Ok, verstanden. Für mich ist ein opt-in noch was anderes, als ein Update zu machen, aber wenn dies so war, dann lebe ich mit den Folgen.

Jupp, meine HA DB ist etwas dicker als 1,2GB - Schade, dass ich eine zweite DB mitschleppe, welche die Daten nicht so schön komprimiert oder auch mehr Daten ablegt, die man vielleicht nicht braucht. Aber das scheint nun historisch gewachsen zu sein, also muss ich es hinnehmen.
Ich nehme auch an, dass man ein Grafana nicht auf die HA DB loslassen kann, oder? :thinking: Vielleicht ist es dann auch gar nicht so verkehrt.

Ok, ich hatte das vor 2-3 Jahren mal versucht, aber dann erfolglos abgebrochen. Weiß leider nicht mehr genau, wieso. Aber vielleicht wäre dies dann der Weg, wie ich mein Problem lösen könnte.

Moin,

also ich kann Dir nicht folgen

Du

1,2 GB

Ich

 5.5 GB

Solltest Du Dich verschrieben haben, dann wurde Deine SQLite Datenbank vielleicht nicht geprunt, sodass Du noch alte Daten mit Dir herumschleppst.

Hast Du irgendetwas in der configuration.yaml stehen, das mit recorder zu tun hat, oder hast Du die Aufbewahrungszeit der Kurzzeitdaten irgendwie verändert?
Z. B. sieht man das wenn man sich die letzten 20 - 30 Tage anschaut

Du scheinst es nicht zu verstehen, die InfluxDB ist die, die Du mitschleppst!

so wie ich Dich jetzt verstehe, verdrehst Du das schon wieder!
Wenn Du die Daten von HA in die InfluxDB schiebst, dann werden die in der InfluxDB nicht komprimiert oder irgendwie aggregiert, dazu müsstest Du Tasks, continius Queries erstellen, was, wie ich Glaube, nicht hast?
Im gegensatz dazu werden die Langzeitdaten der SQLite Datenbank aggregiert und somit platzsparend in der SQLite Datenbank abgelegt.

Auch das habe ich oben schon gesagt, ja kannst Du nicht!

VG
Bernd

Danke, fürs Geduldigbleiben :wink:

Ich habe das Gefühl, dass ich dich gut verstehe - vielleicht ein Trugschluss.

Zusammengefasst mein Verständnis aus deiner Antwort von gestern:

HA DB (bei mir 1,2GB) - enthält Kurz- und Langzeitdaten (aber erst seit Mitte 21, weil die Option der Langzeitdaten erst dann eingebracht wurde und was die fehlenden Daten vorher erklärt). Leider nur schwierig mit Grafana zu verheiraten, da keine Time-series DB. Änderungen in dieser DB haben keine automatischen Updates der InfluxDB zu Folge (jedenfalls nicht nachträglich), weswegen ich in den Views unter Grafana auch keine Änderungen sehe.

Influx DB (bei mir wahrscheinlich für große Teile der knapp 9GB verantwortlich) - enthält alle meine historischen Daten, weil dies zum Zeitpunkt 2020 (HA-Start bei mir) die einzige Möglichkeit war, Werte länger als ein paar Tage zu halten. An diese Daten möchte ich rankommen, was aber schwierig ist, weil man nicht mal eben in einem File mit einem Tool Manipulationen vornehmen kann. Da ich jedoch die Datenauswertung als nutzlos ansehe, wenn ich immer wieder 85°C Ausreißer drin habe, muss ich da wohl ran. Auf Grafana verzichten möchte ich nicht, weil die Auswertungen und Visualisierungen für mich geeigneter sind.

Nächste Schritte:

  • Mal schauen, ob sich im Chronographen was getan hat und ich die Werte in der DB beeinflussen kann (meinetwegen über Ex- und Import).
  • Einsehen, dass dies auf Dauer nicht wirklich sinnvoll ist, wenn die Daten so gehalten werden. Laut schimpfen und resignieren.
  • Mal darüber nachdenken, ob ich die Langzeitdaten in HA abstelle, weil sie für mich komplett nutzlos sind. Somit würde ich vielleicht 1GB weniger in den anfangs noch Snapshot und nun Backup genannten Sicherungen haben.
  • Mir eingestehen, dass meine Aktivitäten hinsichtlich Auswertungen doch eher gering sind und vielleicht der komplette Weg über Influx und Grafana Zeitverschwendung sind.

(In der configuration.xml habe ich im Kontext des recorders nur viele Werte ausgeschlossen, von denen ich keine Speicherung der Daten möchte. Das war vor längerer Zeit der Versuch, das Erreichen der 10GB Backupgröße noch hinauszuschieben.)

Hast du das versucht auszudrücken oder geht unsere Kommunikation komplett aneinander vorbei? :smiley:

Moin,

das kann man, soweit mir bekannt, nicht!
Du hast da immer noch ein Knoten im Kopf, löse Dich von dem Gedanken, dass die InfluxDB für HA interessant ist, ist sie nicht.
Wenn Du unbedingt eine Datenbank haben möchtest, die auch in Grafana eingebunden werden kann, dann könntest Du Dir eine MariaDB installieren, die ersetzt dann die SQLite Datenbank 1:1.
Wenn man sich dann noch die InfluxDB Daten exportiert und in eine zweite Datenbank in MariaDB schreibt, dann kann man aus Grafana auf beides zugreifen.

Dazu kann ich nicht viel beitragen, ich nutze das nicht.
Es gibt noch eine andere Möglichkeit, da Du ja aktuell alle Daten so wie sie kommen, in die InfluxDB schiebst, könntest Du ja eine zweite InfluxDB erstellen, und dann aus der alten die Daten per Continuos Query, in die neue Schreiben, dabei kannst Du die Daten aggregieren, z. B. auf Tageswerte, dann würde ein Ausreißer nicht mehr so ins Gewicht fallen.

Das ist dann zwar schon mal an der richtigen Stelle begonnen, nur dann nicht konsequent weitergedacht :wink:
Du musst Dir das so vorstellen, Beispiel:

Ein Sensor meldet alle 10 Sekunden einen Wert
1 Minute = 60 Sekunden = 6 Werte
1 Stunde = 60 Minuten = 640 Werte
1 Tag = 24 Stunden = 15360 Werte
1 Jahr = 365 Tage = ~5.6 Millionen Werte

1 Wert = 100 Byte * 5,6 Mio = ~ 560 MB das dann mal allem, was Du in die InfluxDB schiebst, dann kommt das halt raus, bei 3 Jahren an Datenhaltung entsprechend mehr.

Wenn man jetzt aber aus der aktuellen InfluxDB, die Daten ausliest und aggregiert und dann in eine zweite Datenbank schreibt, wobei wir nur mal die 6 Werte pro Minute aggregieren
1 Minute = 1 Wert
1 Stunde = 60 Werte
1 Tag = 24 Stunden = 1440 Werte
1 Jahr = 365 Tage = 525600 Werte

Grob gesagt, hast Du dann nur noch ein 10tel an Daten ~ 56 MB

Wenn man jetzt auf noch auf Tag aggregiert, dann halt noch weniger, andersherum, um bei Deinem Beispiel zu bleiben, wie warm war es vor drei Jahren in einem Zimmer würde immer noch einen genauen Wert geliefert, nur halt vom Durchschnitt des Tages, nicht mehr Stunden oder Minuten oder Sekunden, und ehrlich, ob es jetzt 21,3 °C oder 21 °C war, spielt keine Rolle :wink:

Wenn man so seine Daten aggregiert hat, dann kann man die neue Datenbank auf unendlich belassen und die alte setzt man auf 30 - 90 Tage, denn da kommen ja immer noch die Daten aus HA rein, werden dann nur nicht mehr so lange gehalten.

Und noch etwas weiter ausgeholt, genau das macht HA in seiner SQLite Datenbank, von Werten in hoher Auflösung, halt Werte mit geringerer Auflösung :slight_smile:
Deswegen ist die HA Datenbank auch kleiner als Deine InfluxDB.

VG
Bernd

Ich denke, wir nähren uns aneinander an :slight_smile:

1 „Gefällt mir“

Perfekt, gleich den Weihnachtsgedanken eingepackt :smiley:

Ich mag die Idee der aggregierten DB und werde dies mal im Hinterkopf behalten. Auch die MariaDB hört sich interessant an. Mal schauen, was in den kommenden Tagen noch möglich ist.

Danke dir, für den Input und die Ideen :+1:

Moin,

Noch etwas Lesestoff für die Feiertage :slight_smile:

Für InfluxDB V1

Für InfluxDB V2

Für HA und andere Datenbank

VG
Bernd

P.S.: bei der Nutzung einer anderen Datenbank als SQLite, wird es auch wieder unterschiedliche Meinungen geben, ich bin der Meinung, nur wegen einer HA Datenbank einen kompletten Datenbankmanager zu betreiben ist Overkill, muss aber jeder für sich entscheiden.

1 „Gefällt mir“