HA Verlauf: mehr als 10 Tage? Long Time Statistic (LTS)
Der Verlauf in Home-Assistant zeigt standardmäßig die Statusänderungen der letzten 10 Tage und ergänzt ältere Daten für bestimmte Entitäten von der Langzeitstatistik: Long Time Statistic (LTS).
Für das Speichern von historischen Werten besitzt Home Assistant eigene Datenbank-Tabellen, wodurch als Beispiel das Energiedashboard auch Daten älter als 10 Tage anzeigen kann. Aber nicht nur das Energie-Dashboard kann die Langzeitstatistikdaten verwenden.
Entitäten mit Langzeitstatistik (LTS)
Voraussetzung für das Aufzeichnen der Langzeit-Statistikdaten (Long-term statistics = LTS) ist das Attribute "state_class" mit einer der Eigenschaften: "measurement", "total" oder "total_increasing".
Ein Blick in die Entwicklertools / Zustände verrät uns, ob eine Entität zusätzlich zu den Statusänderungen auch LTS-Daten aufzeichnet.
Sollten die Attribute fehlen, können diese über die Datei customize.yaml hinzugefügt werden. Als Beispiel habe ich die Eigenschaften für einen Riemann Summenintegralsensor zur Langzeitstatistik hinzugefügt, indem ich den Sensor nach dem Anlegen zusätzlich in der customize.yaml-Datei angelegt habe:
In der customize.yaml kann der Sensor mit dessen ID angesprochen werden, hier "sensor.heating_energy" und mit den Eigenschaften "state_class" und "device_class" ergänzt werden:
sensor.heating_energy:
state_class : total_increasing
device_class: energy
last_reset: "2000-01-01T00:00:00+00:00"
unit_of_measurement: kWh
Sind die Attribute vorhanden, werden die Statistiktabellen befüllt.
Historische Daten im Verlauf
Um die Langzeitstatistikdaten können am einfachsten im Verlauf angezeigt werden:
Die aktuellen Daten der letzen 10 Tage werden im Verlauf etwas schwächer angezeigt, die Daten aus den History-Tabellen etwas stärker.
In Home Assistant inkludiert: Statistikdiagramm
Ohne zusätzlicher Integration können historische Daten über die Lovelance-Karte "Statistikdiagramm" visualisiert werden:
Hier ein Beispiel für die PV-Produktion meines Balkonkraftwerks: täglich und monatlich:
Anders als beim Energiedashboard können der Zeitraum oder die anzuzeigenden Tagen derzeit noch nicht im Frontend angepasst werden: Die Werte sind in der Karte fixiert. Bis es dazu weitere Verbesserungen in Home Assistant gibt, kann auf bestimmte Custom-Repositories, wie die Plotly Graph Card zurückgegriffen werden. Plotly Graph ermöglicht ein interaktives Scrollen, Vergrößern und Verkleinern von Charts. Anfangs habe ich Plotly Graph nur für aktuelle Sensordaten eingesetzt, Plotly kann aber auch mit historischen Daten umgehen:
Plotly Graph
Die Option "period" in Plotly Graph passt die Datenpunkte an den Zoom-Faktor an und verwendet mehr oder weniger Details aus den Statistik-Tabellen. Die Plotly Graph Card kann über den Home Assistant Community Store (HACS) installiert werden.
Für die Einstellung muss Ploty Graph im YAML-Editor angepasst werden. Hier ein Beispiel für die Visualisierung eines Temperatursensors:
type: custom:plotly-graph
title: Temp
entities:
- entity: sensor.aussen_temperature
yaxis: y2
showlegend: true
show_value: true
fill: tozeroy
name: ww🌡
period: auto
fillcolor: rgba(255, 255, 0, 0.1)
line:
color: orange
smoothing: 0.5
shape: spline
width: 1
hours_to_show: 800
refresh_interval: auto
layout:
xaxis:
rangeselector:
buttons:
- count: 3
step: hour
- count: 12
step: hour
- count: 30
step: day
- count: 365
step: day
yaxis:
zeroline: true
fixedrange: true
legend:
'y': 1.05
margin:
l: 35
r: 43
Ohne der Option "period" verwendet Plotly die aktuellen Statusdaten. Ursprünglich habe ich hier zusätzlich die History-Explorer-Card vorgestellt. Nachdem Home-Assistant mittlerweile über dessen Verlauf auf die Statistikdaten zugreifen kann und mit Plotly Graph wesentlich flexiblere Cards zusammenstellt werden können, habe ich die Card nicht mehr in Verwendung und auch hier entfernt.
Was steckt hinter der LTS-Funktion?
Intern verwendet Home-Assistant verschiedene Datenbank-Tabellen für das Speichern der Daten. Die Tabelle "states" speichert sämtliche Statusänderungen, was über einen längeren Zeitraum nicht nur eine hohe Datenmenge produziert, sondern dadurch die Performance von Home-Assistant beeinflussen würde. Aus diesem Grund löscht Home Assistant Daten die älter als 10 Tage sind. Verantwortlich für das Aufräumen der Statusdaten ist die Einstellung: purge_keep_days, diese räumt Daten älter 10 Tage auf und löscht diese, siehe: www.home-assistant.io/integrations/recorder/. Das Ändern dieser Einstellung ist aber nicht unbedingt eine gute Idee, da ein längerer Zeitraum mehr Daten produziert und Home-Assistant bei einem zu hohen Wert ausgebremst wird.
Um dennoch auf Daten die älter als 10 Tage sind zugreifen zu können, ermittelt Home-Assistant für die Sensoren Durchschnitts-, Minimal- und Maximalwert und schreibt diese in eigene Tabellen:
In die Tabelle "statistics_short_term" werden alle 5 Minuten Durchschnitts-, Minimal- und Maximalwert abgelegt. Auch die Tabelle statistics_short_term verwirft Daten die älter als 10 Tage sind, genau wie dessen Ursprungstabelle "states". Anders bei der Tabelle "statistics", diese speichert die Statistik-Daten Durchschnitts-, Minimal- und Maximalwert für jede Stunde und löscht diese nicht. Ein Blick in die SQLite-Datenbank zeigt uns die Daten:
Als Format für Datum und Uhrzeit verwendet Home Assistant Unix-Timestamps:
Um den Unix-Timestamp auf ein lesbares Datum umzuwandeln, habe ich ein kleines JavaScript-Tool auf dieser Seite veröffentlicht: Datum umwandeln: Unix Timestamp
Die interne Datenbankstruktur von Home-Assistant kann auch anhand des folgenden Beispiels vermutet werden: Versuche ich in der Statistik-Karte als Zeitraum 5 Minuten einzustellen, kann diese nur bis zu 10 Tage anzeigen. Würde ich einen 11ten Tag auswählen, zeigt die Karte nichts mehr an:
Wechsle ich hingegen auf "Stunde", verwendet die Karte offensichtlich die Tabelle "statistics" und zeigt auch Daten die älter als 10 Tage sind an:
Fazit
Das Verhalten von Home-Assistant beim Speichern der Sensor-Daten ist mehr oder weniger ein Kompromiss aus den gespeicherten Details und dem Alter der Daten: Für die letzten 10 Tage sind sämtliche Statusänderungen verfügbar, darüber hinaus kann nur mehr im Stundenintervall auf die Statistik-Tabelle zugegriffen werden. Funktionell hat sich in Home-Assistant hier in der Vergangenheit einiges getan, dennoch kann Home Assistant beim Speichern von historischen Daten nicht mit einer Timeseries - Datenbank wie InfluxDB und beim Visualisieren mit einer Lösung wie Grafana mithalten. Wer damit leben kann, dass Daten älter als 10 Tage nur mehr stündlich verfügbar sind, findet mit Plotly Graph dennoch eine würdige Alternative.
{{percentage}} % positiv