Home Assistant löscht deine Messwerte nach zehn Tagen. Das stimmt, aber eben nur zur Hälfte. Was wirklich passiert, welche Daten dauerhaft bleiben und wo die echten Lücken sind, das schaue ich mir hier zuerst an. Danach richte ich Zeitarchiv ein, eine kostenlose Open-Source-App, die Langzeitdaten direkt in der Seitenleiste speichert und auswertet, ganz ohne InfluxDB, ohne Grafana und ohne SQL-Abfragen.
Den Anstoß hat mir Roberto gegeben, der auf GitHub unter dem Namen bertel2020 entwickelt. Er hat nach dreizehn Jahren mit einer anderen Smarthome-Plattform in Home Assistant nichts gefunden, das Langzeitvergleiche, kompakte Speicherung und die Korrektur kaputter Messwerte zusammen kann. Also hat er Zeitarchiv gebaut. Das Projekt ist kostenlos, steht unter MIT-Lizenz, und meine Beschäftigung damit ist keine Kooperation.
Was Home Assistant von sich aus behält
Der Recorder von Home Assistant behandelt seine Tabellen sehr unterschiedlich. Das ist der entscheidende Punkt, den viele nicht kennen:
| Tabelle | Auflösung | Aufbewahrung |
|---|---|---|
states | jede Zustandsänderung | 10 Tage (purge_keep_days), dann gelöscht |
statistics_short_term | 5 Minuten | 10 Tage, dann gelöscht |
statistics | 1 Stunde | bleibt dauerhaft, wird nie gepurged |
statistics_meta, statistics_runs | Metadaten | bleibt |
Die stündlichen Langzeitstatistiken bleiben also für immer. Sie entstehen aber nur für Entitäten mit einer state_class. measurement speichert Minimum, Maximum und Mittelwert, etwa für Temperatursensoren. total und total_increasing speichern die Summe, etwa für Energiezähler.
Alles ohne state_class ist nach zehn Tagen restlos weg. Und was du per exclude aus dem Recorder nimmst, landet gar nicht erst in der Datenbank.
Damit bleiben genau drei Gründe, warum du ein zusätzliches Archiv brauchst. Erstens die Auflösung: Feiner als eine Stunde gibt es über Jahre nichts. Zweitens die Abdeckung: Zustände, Betriebsmodi, Schalter und Textsensoren fallen komplett raus. Drittens die Korrektur: Ausreißer, Lücken und Zählerrücksprünge bleiben in der Statistik einfach stehen.
Wenn dich keiner der drei Punkte betrifft, hör hier auf. Du hast schon, was du brauchst.
Was du brauchst
Zeitarchiv besteht aus zwei Teilen: der App, die über den App-Store installiert wird, und der HACS-Integration, die Home Assistant und die App miteinander verbindet.
Wichtig vorab: Die App setzt den Supervisor voraus. Das bedeutet, du brauchst Home Assistant OS oder Home Assistant Supervised. Wer Home Assistant im Container oder als Core-Installation betreibt, hat keinen App-Store und kann diesen Weg aktuell nicht gehen. Ein offizieller Standalone-Betrieb ist im Projekt noch offen, prüf das auf GitHub unter Issue #11, bevor du Zeit investierst.
Für die Einrichtung brauchst du außerdem HACS und etwa 15 Minuten. Die Versionen, mit denen ich das getestet habe: App 1.0.0 vom 22. September 2026, Integration 0.18.2 vom 15. September 2026, auf Home Assistant 2026.9.
Schritt 1: App-Repository hinzufügen und Zeitarchiv installieren
Zuerst die App. Geh in Home Assistant auf Einstellungen → Apps → App installieren. Du landest im App-Store. Über das Drei-Punkte-Menü oben rechts öffnest du Repositories und trägst diese Adresse ein:
https://github.com/bertel2020/HA-AppsDanach findest du Zeitarchiv im Store, installierst es und startest es. Geladen werden fertige Images für amd64 und aarch64, dein System baut also nichts selbst. Nach dem Start erscheint Zeitarchiv als eigener Punkt in der Seitenleiste.
Einen Hinweis zu automatischen Updates: Ich lasse sie aus und schaue vor jedem Update in den Changelog. Bei einem Archiv, das Jahre halten soll, will ich wissen, was sich ändert.
Schritt 2: API-Token kopieren
Öffne Zeitarchiv über die Seitenleiste und geh auf System → Einstellungen → Verbindung. Dort steht der API-Token, der beim ersten Start erzeugt wird. Den brauchst du gleich, lass die Seite am besten offen.
Schritt 3: Integration über HACS installieren
In HACS fügst du ein benutzerdefiniertes Repository hinzu. Typ Integration wählen, diese Adresse eintragen:
https://github.com/bertel2020/HA-ZeitarchivHerunterladen, dann Home Assistant neu starten.
Schritt 4: Verbindung einrichten
Einstellungen → Geräte & Dienste → Integration hinzufügen → Zeitarchiv. Hier trägst du Folgendes ein:
| Feld | Wert |
|---|---|
| Verbindungsname | frei wählbar, etwa Zeitarchiv |
| Host | c1c17729-zeitarchiv |
| Port | 8127 |
| API-Token | der Token aus Schritt 2 |
Nicht localhost eintragen. Home Assistant und die App laufen in getrennten Containern. localhost zeigt aus Home Assistant heraus auf Home Assistant selbst, nicht auf die App. Die Einrichtung bricht dann mit „Verbindung zur App fehlgeschlagen" ab. c1c17729-zeitarchiv ist der interne Hostname der App, du findest ihn auch auf der Info-Seite der App unter Hostname. Läuft die App auf einem anderen Rechner, trägst du stattdessen dessen IP ein.
Du kannst übrigens mehrere Verbindungen parallel anlegen, jede mit eigenen Filtern. Praktisch, wenn du eine Testinstanz mitlaufen lassen willst.
Schritt 5: Label anlegen und vergeben
Zeitarchiv wählt Entitäten bevorzugt über Labels aus. Ich empfehle diesen Weg, weil du später einfach einer Entität das Label gibst, ohne die Integration selbst anfassen zu müssen.
Geh auf Einstellungen → Bereiche, Labels & Zonen → Labels → Label erstellen. Ein Name reicht, ich nenne meins zeitarchiv. Danach unter Einstellungen → Geräte & Dienste → Entitäten mehrere Entitäten per Checkbox markieren und über die Leiste am unteren Rand Label hinzufügen wählen. Ein Label wirkt auch über Geräte und Bereiche. Gibst du es einem Gerät, landen alle seine Entitäten im Archiv.
Was sich lohnt aufzuzeichnen: Zählerstände über die gesamte Laufzeit wie Energie gesamt, Einspeisung und Netzbezug. Tages-, Monats- und Jahreszähler brauchst du nicht, Zeitarchiv rechnet die Zeiträume selbst. Dazu Leistung, Ladezustände, Temperaturen, Luftfeuchte, Strompreis. Und Schalter und binary_sensor wie „Waschmaschine läuft" oder „Wallbox lädt", daraus wird später ein Zeitstrahl.
Was du weglassen solltest: alles, was sich sekündlich ändert und nie rückblickend ausgewertet wird. Ein Archiv lebt davon, wenige Werte sehr lange zu behalten.
Schritt 6: Archivfilter setzen
Auf der Integrationskachel Konfigurieren → Archivfilter bearbeiten. Im Feld Labels (empfohlen) wählst du dein Label. Mehrere Labels wirken als ODER.
Darunter gibt es zwei aufklappbare Bereiche. Unter Weitere Auswahlmöglichkeiten kannst du einzelne Entitäten, Bereiche, Geräte oder Entitätsmuster wie sensor.wetter_* hinzufügen. Unter Ausschlüsse trägst du ein, was trotz Label nicht ins Archiv soll, etwa sensor.*_raw. Ausschlüsse haben immer Vorrang.
Ohne Filter kommt nichts an, und die App zeigt dabei keinen Fehler. Ob Daten fließen, siehst du in Zeitarchiv unter System → Einstellungen → Verbindung bei „Letzter empfangener Wert".
Ein wichtiger Unterschied zum Recorder: Die Integration hört auf Zustandsänderungen in Home Assistant, nicht auf den Recorder. Entitäten, die dein Recorder per exclude ignoriert, archiviert Zeitarchiv trotzdem.
Schritt 7: Alte Daten aus Home Assistant importieren
Zeitarchiv kann die Historie übernehmen, die schon in Home Assistant liegt. Warte dafür, bis jede Entität mindestens einen Live-Wert geschickt hat, vorher steht sie nicht zur Auswahl.
Geh in Zeitarchiv auf System → Import, Abschnitt Home Assistant. Als Importmodus wählst du Vollimport. Er nimmt die ältere Langzeitstatistik und schließt die jüngere Rohhistorie lückenlos an, ohne Überschneidung. Als Zeitraum für beide Quellen das Maximum wählen.
Dann Entitäten markieren und Verfügbarkeit prüfen. Die Spalte zeigt je Entität, was Home Assistant hat: Vollimport, Nur Rohhistorie, Nur Statistik oder Keine Daten. Optional kannst du einen Dry Run starten, bevor du den eigentlichen Import lostrittst.
Der Import hat einen Duplikatschutz. Du kannst ihn wiederholen, ohne dass Werte doppelt entstehen.
„Keine Daten" bei einer Entität, die seit Jahren läuft, ist ein Befund, kein Fehler. Das bedeutet, dein Recorder hat sie nie gespeichert. Ab jetzt ist Zeitarchiv ihre einzige Historie.
Lücken mit einer CSV-Datei füllen
Hat ein Zähler in Home Assistant eine neue Entität bekommen, etwa nach einem Umbau oder einem Gerätewechsel, liegt die alte Historie unter der alten Entität. Die holst du als CSV-Datei in die neue Entität:
Geh auf System → Import, Reiter CSV-Datei, Datei hochladen. Trennzeichen und Kopfzeile festlegen, dann Zeitstempel-Spalte und Wert-Spalte zuordnen. Zeitstempel-Format wählen, etwa „Unix-Zeitstempel (Sekunden)" oder ISO 8601. Ziel-Entität wählen, Dry Run, danach Import starten.
Bei einem Energiezähler gehört der Zählerstand in die Datei, nicht der Verbrauch pro Stunde. Zeitarchiv rechnet die Differenzen selbst. Bestehende Monate bleiben unverändert, die Vorschau listet sie als übersprungen.
Schritt 8: Auflösung und Aufbewahrung prüfen
Jede Entität hat in Zeitarchiv eigene Einstellungen: Auflösung, Aufbewahrung, Nachkommastellen, Wertänderungsfilter, Lücken- und Ausreißer-Erkennung. Die globalen Standards stehen unter System → Einstellungen → Archivierung.
Aufbewahrung für alles, was ins Energiedashboard geht, auf „Unbegrenzt" setzen. Die Kennzahlen rechnen über ganze Monate und Jahre. Fehlen Werte, weil eine beteiligte Entität nur 90 Tage behalten wird, fehlt dir genau der Vergleich, wegen dem du angefangen hast.
Lücken-Erkennung nicht zu eng stellen. Ein Sensor, der nur bei Änderung sendet, meldet sich nachts manchmal stundenlang nicht. Mit einer Schwelle von 15 Minuten bekommst du dann Fehlalarme. 6 Stunden sind für die meisten Sensoren ein guter Wert, bei Schaltern schaltest du die Erkennung aus. Zeitarchiv weist unter Housekeeping selbst auf widersprüchliche Einstellungen hin.
Ausreißer-Erkennung zum Signal passend einstellen. Die Stufen reichen von 10× bis 100×, Standard ist 50×. Für Helligkeit und Leistung ist das oft zu eng, weil dort ein Sprung von 0 auf mehrere Tausend normal ist. Unter Housekeeping → Ausreißer listet Zeitarchiv jede Entität, bei der mehr als 1 % aller Werte als verdächtig markiert sind. Bei Helligkeit und Wallbox-Leistung stellst du die Erkennung auf Aus, bei Akku-Ladestand und PV-Leistung reicht 100×.
Schritt 9: Energiedashboard einrichten
Unter Dashboards schaltest du das Energiedashboard über die feste Kachel oben ein. Die Rollenzuordnung zeigt jede Rolle als eigene Kachel:
| Rolle | Beispiel |
|---|---|
| Netzbezug, Einspeisung | Zählerstände gesamt vom Smart Meter oder Wechselrichter |
| Erzeuger | je PV-Anlage ein Energiezähler, beliebig viele |
| Speicher | geladen, entladen, Ladezustand und Kapazität in kWh |
| Verbraucher | Energiezähler einzelner Geräte, optional in Gruppen |
| Kosten | Strompreis-Entität (etwa Tibber) oder Festpreis, Einspeisevergütung |
| CO₂ | CO₂-Entität oder fester Faktor in g/kWh |
Eingaben in einem Popup gelten erst mit Übernehmen, gespeichert wird alles mit Speichern am Seitenende.
Du bekommst den Energiefluss als Sankey, Autarkie, Eigenverbrauch, Speicher-Wirkungsgrad, Kosten- und CO₂-Bilanz, Verbraucheranteile und ein Tageslastprofil. Bei Monat und Jahr öffnet das Symbol neben der Zeitraum-Navigation den Energiebericht, ein Blatt zum Drucken oder als PDF mit Vormonatsvergleich, stärkstem und schwächstem Tag und Auffälligkeiten.
Schritt 10: Eigene Dashboards, Charts und Tabellen
Neben dem Energiedashboard baust du beliebig viele eigene Dashboards. Auf jedes kommen drei Arten von Kacheln: Werte-Kacheln mit dem aktuellen Wert einer Entität oder Summe, Minimum, Maximum und Durchschnitt über Tag, Woche, Monat oder Jahr. Charts mit mehreren Entitäten in einem Verlauf, gestapelt, als Anteile in Prozent, als Donut oder bei Schaltern als Zeitstrahl. Und Vergleichstabellen mit Zeilen aus Entitäten, Gruppen und Formeln sowie frei gewählten Zeiträumen als Spalten.
Im Dashboard-Editor verdoppelt der Präzise Modus das Raster von 3 auf 6 Spalten. Damit passen sechs Werte-Kacheln nebeneinander.
Beispiel: PV-Ertrag pro Tag
Ein Chart mit den Energiezählern deiner PV-Anlagen, Zeitraum Monat, Gestapelt an. Jeder Tag ist ein Balken, jede Anlage ein Segment. Mit Anteile (%) darunter siehst du, welche Anlage an welchem Tag wie viel beiträgt. Bei Jahresansichten solltest du nicht stapeln, wenn deine Anlagen in unterschiedlichen Monaten angefangen haben. Die Balken verrutschen dann gegeneinander.
Beispiel: Monatsbilanz als Tabelle
Spalten: viermal Monat mit Versatz -3, -2, -1 und 0, Beschriftung {monat}. Zeilen bekommen automatisch einen Buchstaben:
| Zeile | Typ | Inhalt |
|---|---|---|
| A | Entität | PV-Anlage 1 |
| B | Entität | PV-Anlage 2 |
| C | Formel | A+B, „PV gesamt" |
| D | Entität | Netzbezug |
| E | Entität | Einspeisung |
| F | Formel | C+D-E, „Hausverbrauch" |
| G | Formel | (F-D)/F*100, Einheit %, „Autarkie" |
| H | Formel | (C-E)/C*100, Einheit %, „Eigenverbrauchsquote" |
Trennzeilen bekommen keinen Buchstaben. Formeln dürfen nur Zeilen darüber verwenden und akzeptieren Komma als Dezimaltrennzeichen, etwa B/9,8 für Vollzyklen eines Akkus mit 9,8 kWh. Hast du einen Heimspeicher, gehört die Entladung zum Hausverbrauch dazu und die Ladung wieder ab: C+D-E+Entladen-Laden.
Beispiel: Verbraucher mit Farbskala
Eine Tabelle mit allen Messsteckdosen als Zeilen und den letzten Monaten als Spalten. In jeder Spalte Farbskala einschalten. Die Skala gilt je Abschnitt zwischen zwei Trennzeilen. Setz die großen Verbraucher wie Wärmepumpe und Wallbox in einen eigenen Abschnitt, sonst sind neben ihnen alle anderen Zellen weiß. Eine Summenzeile am Ende jedes Abschnitts rechnet von selbst mit, wenn du Zeilen ergänzt.
Beispiel: derselbe Monat, zwei Jahre auseinander
Für einen Vorher-Nachher-Vergleich brauchst du keine festen Daten. Spalten: Monat mit Versatz -26 und -2, daneben -25 und -1, Beschriftung {monat} {jahr}. Im September stehen dann Juli und August 2024 neben Juli und August 2026, im Oktober rückt alles einen Monat weiter.
Für die Erzeugung nimmst du hier eine Gruppe statt einer Formel. Eine Formel bricht ab, sobald eine Zeile keinen Wert hat, etwa eine PV-Anlage, die es 2024 noch nicht gab. Die Gruppe addiert, was da ist. Beschrifte Zeilen, die erst später gemessen werden, gleich mit, etwa „Wallbox (Messung ab 2025)", sonst liest jeder die 0 als „nicht benutzt".
Beispiel: Vorjahr direkt im Chart
Öffne ein Chart mit Zeitraum Jahr und einem einzelnen Zähler, klick auf Vergleichen und wähle Vorjahr. Rechts daneben schaltest du die Laufsumme zu und bei Bedarf eine Soll-Entität als Ziellinie. Der Vergleich ist eine Ansicht und wird nicht mit dem Chart gespeichert. Bei gestapelten Charts und Donuts ist er gesperrt.
Tipps und häufige Probleme
„Verbindung zur App fehlgeschlagen" bei der Einrichtung. Host steht auf localhost. Trag c1c17729-zeitarchiv ein, siehe Schritt 4.
„API-Token wurde von der App abgelehnt". Token noch einmal unter System → Einstellungen → Verbindung kopieren, ohne Leerzeichen am Ende. Wurde er dort neu generiert, meldet Home Assistant das selbst und fragt nach dem neuen Token.
Es kommen keine Werte an. Zuerst den Archivfilter prüfen. Ein Label, das keiner Entität zugewiesen ist, ist die häufigste Ursache. Unter Konfigurieren → Aktuell erfasste Entitäten siehst du, was der Filter tatsächlich erfasst.
Lauter Lücken-Meldungen direkt nach dem Import. Die Lücken-Erkennung steht strenger, als der Sensor sendet. Schwelle hochsetzen oder bei Schaltern ausschalten, siehe Schritt 8.
Das Energiedashboard warnt bei der Datenqualität. Es prüft die Bilanz auf Plausibilität. Zeigt ein Speicher jeden Monat mehr Entladung als Ladung, oder springt ein Zähler zurück, liegt das an den Quelldaten, nicht an Zeitarchiv.
Ein Tag zeigt einen unmöglichen Wert. Steht ein Zähler einen Tag still und springt danach um ein Vielfaches, liegt der Sprung meist schon in der Home-Assistant-Statistik. Prüf das in den Entwicklerwerkzeugen unter Statistiken. Einen einzelnen Ausreißer löschst du auf der Seite der Entität unter Bereinigen. Bei einem Zähler, der danach auf dem höheren Stand weiterläuft, hilft das nicht: Der Sprung wandert nur in den nächsten Wert.
Werte-Kachel mit gelbem oder rotem Rahmen. Gelb heißt: seit 15 Minuten kein neuer Wert. Rot heißt: seit einer Stunde kein neuer Wert. Bei Zählern, die nur bei Verbrauch melden, etwa Heizstab, Wallbox oder Pflanzensensoren, ist das normal. Für die Übersicht eignen sich Sensoren, die laufend melden.
Container-Installation. Dann gibt es keinen App-Store und der Import aus Home Assistant setzt den Supervisor voraus. Ein offizieller Standalone-Weg ist noch offen (Issue #11), prüf das auf GitHub.
Backup einrichten und einmal testen
Unter System → Backup / Restore legst du einen Zeitplan an, etwa täglich um 03:30 Uhr mit zehn Sicherungen. Spiel eine Sicherung einmal testweise zurück, eine Wiederherstellung verschiebt den alten Stand und lässt sich rückgängig machen. Die Backups enthalten den API-Token, bewahr sie auf wie Passwörter.
Noch ein Hinweis zum Reifegrad: Das Projekt ist seit dem 24. August 2026 öffentlich, hat am 22. September Version 1.0.0 erreicht und wird von einer Person entwickelt, mit mehreren Releases pro Woche. Gut für schnelle Fehlerbehebung, aber unruhig für ein Langzeitarchiv. Der CSV-Export einer Entität ist deine Versicherung, probier ihn einmal aus.
Außerdem: Port 8127 nicht ins Internet freigeben. Er nimmt Messwerte per HTTP mit Token entgegen. Im Heimnetz ist das in Ordnung, als Portfreigabe nicht.
Wenn du das Projekt gut findest, freut Roberto sich über einen Stern auf GitHub. Und wenn du beim Setup auf Fehler stößt oder Feedback zur Bedienung oder zur langfristigen Datenhaltung hast, ist ein gut beschriebenes Issue auf GitHub für ein Projekt dieser Größe mehr wert als jede Empfehlung.
Nutzt du Zeitarchiv schon, oder hast du bisher auf eine andere Lösung für Langzeitdaten gesetzt?
