Recorder auf MariaDB - und nun?

Da ich gern von einigen Entities längere Recorderhistoriedaten hätte (z.B. meine Energiezähler) habe ich die Datenbank von SQLite auf MariaDB geändert. Das klappt auch erstmal. Ich habe bei der Installation aber nichts dazu gefunden oder gar eingestellt mit dem ich bestimme was dort nun abgelegt wird und wie lange?

Das habe ich bei SQLite auch nicht gemacht, aber ich denke wenn ich es so jetzt lasse wird mir auch MariaDB nicht unbedingt längere Historywerte bescheren, oder speichert die nun einfach alles bis zum Disk-Full? :wink:

Ich denke zu solltest Dir mal die Recorder Dokumentation durch lesen.

siehe auch:

BTW: Ob SQLite oder MariaDB, welche Daten und wie lange diese gespeichert werden, hängt von der recorder Konfiguration ab. Und nicht von der verwendetet Datenbank.
Das Thema Langzeitstatistik ist mit SQLite und MariaDB verfügbar.

Gruß Osorkon

Ja, schon gelesen aber beantwortet meine Fragen nicht vollständig.

Es ist ka so das auch die Speicherung in der MariaDB micht automatisch längere Historyspeicherung erwirkt, der Default bleibt bei 10 Tagen.

Wie gehe ich vor um einzelne Sensoren länger aufzuheben? In die Exclude-Liste, prinzipiell, klar, aber wie genau? Jeden Sensor einzeln aufnehmen? Oder bestimmte Klassen? Oder kann ich sowas wie ein Tag fü Aufbewahrungsrichtlinien einrichten (365 Tage, 10 Jahre, …)? Und was muss ich dann tun damit das auch geschieht? Ich brauche dann doch einen eigenen Purger?

Bitte gern Eure “Best Practise” hierzu :slight_smile:

Gelesen, aber nicht verstanden?

Die Datenbank-Engine ist völlig egal.

Alle Sensoren die in die Langzeithistorie sollen brauchen eine state_class measurement, total oder total_increasing.

Alle Sensoren die keine oder keine solche state_class haben werden nach der recorder-Parametrierung mit purge_keep_days (die wenn nichts anderes angegeben ist per default auf 10 Tage steht) gelöscht.

Es kann nur eine gültige purge_keep_days Parametrierung zur Zeit geben.

Alle Sensoren die überhaupt nicht in die Historie gehen sollen kann man mit exclude in der recorder Parametrierung ausschließen. Wenn sie aber keine state_class wie oben haben werden sie eh nach purge_keep_days gelöscht.

Eigentlich muss man also nur auf die korrekte state_class achten und alles andere übernimmt HA automatisch für dich.

Wenn dir die Möglichkeiten der HA Historie nicht ausreichen musst du über weitere DB und Auswertung mit Grafana o.ä. nachdenken. Im Normalfall ist das aber IMHO nicht notwendig.

Gruß Handfest

Ok, also gibt es praktisch nur die kurzzeit und endlosaufzeichnung, abhängig von der state_class. In der DB gibt es ja eine Tabelle für die states (aktueller/letzter Wert), eine für die short-term history (default 10 Tage) in dem bei jedem state change geschrieben wird und ene long-term history. Letztere müsste ich also selbst purgen wenn die z.b, nur 365 oder 400 Tage lang sein soll. Bzw. wenn ich verschiedene Aufbewahrungsrichtlinien möchte dann eben über SQL select.
Und es gibt bei den longterm daten nicht sowas wie bei RRD das ein integral gebildet wird? Es werden also wirklich alle statusänderungen gespeichert?

@cHAOS Es ist alles hervorragend dokumentiert:

Ich empfehle dir für tiefergehende Informationen die entsprechenden Doku zur Datenbasis

https://data.home-assistant.io/

https://data.home-assistant.io/docs/statistics

Gruß Handfest