Deine Home Assistant Installation lebt und wächst kontinuierlich. Es werden neue Smart-Home-Geräte integriert, bestehende Automationen angepasst oder das gesamte Dashboard neu gestaltet. In den letzten Monaten lief bei mir eigentlich alles gewohnt stabil und es wurden nur Kleinigkeiten geändert. Allerdings entwickelt sich Home Assistant selber rasant weiter: Mit jedem neuen Core-Update kommen praktische Features hinzu, während veraltete Funktionen entfernt werden. Auch die beliebten Integrationen aus dem HACS (Home Assistant Community Store) müssen von den jeweiligen Entwicklern regelmäßig gepflegt werden, um mit der aktuellen Home Assistant Version kompatibel zu bleiben. Zwangsläufig wird man früher oder später mit unerwarteten Performance-Problemen konfrontiert, die nicht einmal zwingend eine Warnung oder Fehlermeldung im Logfile auslösen. Nach meinem Sommerurlaub stand ich genau vor dieser Herausforderung: Mein Status-Dashboard zeigte plötzlich eine dauerhafte CPU-Auslastung von rund 20 Prozent auf meinem Raspberry Pi an.
Spurensuche: Dem Performance-Fresser auf der Spur
In meinem neuen Status-Dashboard, über das ich bereits im Beitrag Grafana-Ablösung – Monitoring in Home Assistant berichtet habe, fiel mir der unüblich hohe Ausschlag sofort ins Auge. Dank meines Docker-Management-Tools, das ich im Beitrag Raspberry Pi als Heimserver – #9 – Dockhand genauer vorgestellt habe, konnte ich die Ursache extrem schnell auf den Home Assistant Container selbst eingrenzen. Nun begann die eigentliche Fehlersuche. Dabei habe ich auf meine Erfahrungen aus meiner früheren Zeit als Instandhalter im Schichtdienst zurückgegriffen: Welches System wurde zuletzt verändert und wie lässt sich die Fehlerquelle systematisch und schrittweise isolieren?
Um die Ursache ohne großes Verwirrspiel einzugrenzen, empfiehlt sich ein strukturiertes Vorgehen in drei klaren Schritten:
1. Ältere Docker Container Version testen: Zuerst solltest du prüfen, ob das Verhalten durch ein kürzlich eingespieltes Home Assistant Core Update verursacht wurde. Wenn du Home Assistant in Docker betreibst, kannst du testweise auf ein älteres Image zurückgreifen. Ändere dazu in deiner Compose-Datei oder im Start-Befehl das Tag von stable auf eine konkrete vorherige Version (wie zum Beispiel ghcr.io/home-assistant/home-assistant:2026.8.2) und starte den Container neu. Tritt das Problem mit der älteren Version nicht mehr auf, liegt es nahe, dass eine Änderung im Core der Auslöser war. Sollte die CPU-Last jedoch auch mit der älteren Home Assistant Version hoch bleiben, kannst du offizielle Home Assistant Integrationen nahezu ausschließen. In diesem Fall liegt der Verdacht sehr nahe bei einer Dritthersteller-Integration aus dem HACS, da diese unabhängig vom Core installiert ist.
2. Prüfen ob Automationen und Skripte sehr häufig oder in einer Endlosschleife laufen: Blicke als Nächstes auf deine internen Abläufe. Manche Automationen werden durch fehlerhafte Auslöser (z. B. Minutentakt oder sich ständig ändernde Sensorwerte) unbeabsichtigt dauerhaft getriggert oder verfangen sich in einer Schleife. Öffne in Home Assistant die Übersicht der Automationen und überprüfe die Spalte der letzten Auslösung. Siehst du dort Einträge, die sich sekündlich oder ununterbrochen aktualisieren, hast du deinen ersten Kandidaten gefunden. Ein genauer Blick in die visuellen Ausführungsspuren (Traces) der jeweiligen Automation zeigt dir sofort, wie oft und an welcher Stelle der Ablauf feststeckt.
3. Systematisch deaktivieren und nach und nach wieder aktivieren: Führt die visuelle Kontrolle zu keinem Ergebnis, hilft nur radikales Ausschließen. Deaktiviere temporär alle Automationen, Skripte, Szenen und im Zweifel auch Custom Integrationen aus dem HACS. Aktiviere diese Komponenten anschließend schrittweise und mit einer zeitlichen Verzögerung von einigen Minuten nacheinander wieder. Behalte dabei parallel die CPU-Auslastung im Auge. Sobald die CPU-Last nach dem Einschalten eines bestimmten Bausteins schlagartig nach oben schnellt, hast du den genauen Verursacher lokalisiert.
Sollte sich herausstellen, dass eine spezifische Automation, ein Skript oder eine Szene für die Lastspitzen verantwortlich ist, muss die zugrundeliegende Logik gründlich überarbeitet werden. Genau an dieser Stelle können dir KI-Tools wie Gemini oder ChatGPT hervorragend zur Seite stehen, um fehlerhafte Bedingungen aufzuspüren und sauber umzustrukturieren.
Analyse mit dem Profiler und KI-Unterstützung
In meinem konkreten Fall nach dem Sommerurlaub lag die Ursache in einer extrem hohen I/O-Last, die durch verschiedene kleinere Probleme im Hintergrund begünstigt wurde. Bei der Fehlersuche war mir mein selbst erstellter KI-Experte eine große Hilfe. Im Beitrag HA-Experte – Gemini-Support für Home Assistant habe ich ausführlich beschrieben, wie dieser spezialisierte Assistent eingerichtet wird. Mein HA-Experte gab mir sehr schnell die offizielle Home Assistant Integration Profiler an die Hand.
Mit der Profiler-Integration habe ich mehrfach Performance-Daten im laufenden Betrieb mitschreiben lassen. Da die dabei erzeugten Rohdateien für eine direkte Analyse recht unübersichtlich sind, nutze ich ein kleines Python-Skript zur Aufbereitung. Wichtig dabei: Die vom Profiler generierten Dateien müssen im selben Ordner liegen wie das Python-Skript selbst. Das Skript wandelt die Daten um und erzeugt die Ausgabedatei ebenfalls direkt in diesem Ordner. So entsteht eine übersichtliche Zusammenfassung, die anschließend von meinem HA-Experten analysiert werden kann.
Python-Skript zur Aufbereitung der Profiler-Daten
Das folgende Skript liest alle Profildateien im eigenen Verzeichnis aus, wertet die wichtigsten Kennzahlen zur Ausführungszeit aus und speichert das Ergebnis sauber strukturiert ab:
Pythonimport glob import os import pstats script_dir = os.path.dirname(os.path.abspath(__file__)) output_file = os.path.join(script_dir, "profiler_summary.txt") files = sorted(glob.glob(os.path.join(script_dir, "*.cprof")) + glob.glob(os.path.join(script_dir, "*.prof"))) with open(output_file, "w", encoding="utf-8") as stream: for file_path in files: stream.write(f"=== PROFILE START: {os.path.basename(file_path)} ===\n\n") stats = pstats.Stats(file_path, stream=stream) stream.write("--- TOP 50 BY CUMULATIVE TIME (cumtime) ---\n") stats.sort_stats("cumtime") stats.print_stats(50) stream.write("\n--- TOP 50 BY INTERNAL TIME (tottime) ---\n") stats.sort_stats("tottime") stats.print_stats(50) stream.write("\n--- CALLERS OF TOP 20 CUMTIME FUNCTIONS ---\n") stats.sort_stats("cumtime") stats.print_callers(20) stream.write(f"\n=== PROFILE END: {os.path.basename(file_path)} ===\n\n")
Die Auswertung der aufbereiteten Datei durch meinen HA-Experten brachte schließlich ans Licht, dass ich in meinen Home Assistant Automationen komplexe Templates verwendet hatte, die bei jedem Durchlauf eine unnötig hohe I/O-Last verursachten. Als der Fehler lokalisiert war, habe ich die Automationen entsprechend angepasst. Auch bei diesem Optimierungsschritt hat mir mein HA-Experte mit Rat und Tat zur Seite gestanden.
Datenbank entlasten: Recorder-Konfiguration anpassen
Während der intensiven Fehlersuche stellte ich zusätzlich fest, dass viele Entitäten sehr häufig aktualisiert wurden – teilweise mehrfach pro Minute. Bei den meisten dieser Entitäten war standardmäßig die Langzeitspeicherung aktiv. Dadurch wurden kontinuierlich immense Datenmengen in die Datenbank geschrieben und im Gegenzug ständig alte Daten gelöscht. Dies erzeugte eine dauerhafte Hintergrundaktivität auf dem Datenträger.
In meinem Fall lag die Lösung in einer gründlichen Überarbeitung meiner Recorder-Konfiguration innerhalb der Datei configuration.yaml. Unnötige Domains sowie stark frequentierte Sensor-Entitäten habe ich konsequent vom Recording ausgeschlossen:
YAMLrecorder: commit_interval: 30 purge_keep_days: 10 exclude: domains: - ai_task - calendar - conversation - datetime - event - image - media_player - notify - scene - script - siren - stt - text - time - tts - update - weather entity_globs: - button.*_identifizieren - sensor.*_rssi - sensor.sun_*
Parallel dazu habe ich nicht benötigte Entitäten direkt in den Einstellungen von Home Assistant deaktiviert, um unnötige Statusaktualisierungen von vornherein zu unterbinden.
Fazit und Ergebnis
Nachdem ich all diese Optimierungen durchgeführt hatte, sank die CPU-Auslastung meines Raspberry Pi von dauerhaften 20 Prozent auf unter 5 Prozent im Leerlauf. Zudem kam es mir so vor, als ob mein Dashboard wieder spürbar schneller geladen wird – auch wenn das natürlich ein Stück weit subjektives Empfinden sein kann.
Das Ziel dieses Beitrags ist es, dir einen praxisnahen Leitfaden für die systematische Fehlersuche an die Hand zu geben. Moderne KI-Tools wie Gemini oder ChatGPT können dabei eine enorme Unterstützung bieten. Im Nachgang habe ich die Systemanweisung meines HA-Experten (Gemini Gem) übrigens so angepasst, dass zukünftig auch die I/O-Last bei Analysen direkt berücksichtigt wird. Im Beitrag HA-Experte – Gemini-Support für Home Assistant habe ich die Anleitung ebenfalls auf den neuesten Stand gebracht.
Hast du noch Fragen?
Hast du noch Fragen zu diesem Beitrag? Dann ab damit in die Kommentare oder schreib mich über Mastodon an.
Dies könnte dich auch interessieren…
Du möchtest weitere Inhalte von mir lesen? Schau doch mal hier: Akku schonend laden: So hält dein Akku länger



