Hallo Gemeinde
InfluxDB scheint in der Community ein Buch mit sieben Siegeln zu sein. Was auch nicht schlimm ist. Ich habe in den letzten Tagen gelernt, dass InfluxDB (zumindest für mich) unendlich kompliziert ist. Aber womöglich ist das bei allen Datenbanken so.
Ich habe jetzt einen anderen Weg gewählt. Ich habe “einfach” alle nicht benötigten Entitäten aus der aktiven Datenbank gelöscht. Natürlich hab ich vorher ein Komplettbackup gemacht.
Zusammen mit der KI Claude ist es gelungen. Ich habe ca. 750 Entitäten aus der DB entfernt. Mein Komplettbackup ist jetzt von etwa 1900 MB auf ca. 550 MB geschrumpft. Darum ging´s mir in erster Linie.
Claude hat mir aus dem ganzen Chat einen saubere Anleitung extrahiert und in einen Word-Datei gepackt. Leiderkann ich .docx hier nicht hochladen. Deshalb der ganze Text direkt hier darunter.
Ich bin zufrieden und betrachte die Sache als gelöst.
InfluxDB: Alte Sensordaten in Home Assistant löschen
Anleitung für Home Assistant OS mit InfluxDB 1.10 – Datenbank verkleinern durch Löschen einzelner Sensoren
Stand: 22. Juli 2026
1. Zwei Strategien im Überblick
Um eine InfluxDB-Datenbank in Home Assistant wieder zu verkleinern, gibt es grundsätzlich zwei Ansätze, die sich auch kombinieren lassen:
-
Retention Policy: Legt automatisch fest, wie lange Daten insgesamt behalten werden (z. B. 90 Tage). Alte Shards werden dann automatisch im Hintergrund gelöscht – ideal für eine dauerhafte, zeitbasierte Bereinigung aller Sensoren.
-
Gezieltes Löschen einzelner Sensoren (DROP SERIES): Löscht alle historischen Daten eines oder mehrerer bestimmter Sensoren komplett, unabhängig vom Alter – der Weg, der in dieser Anleitung im Detail beschrieben wird.
Retention Policy setzen (für alle Sensoren, zeitbasiert)
influx -database home_assistant
SHOW RETENTION POLICIES ON home_assistant
ALTER RETENTION POLICY "autogen" ON "home_assistant" DURATION 90d SHARD DURATION 1d DEFAULT
SHARD DURATION 1d sorgt dafür, dass alte Daten in kleinen, täglichen Blöcken automatisch fallengelassen werden, statt in einem einzigen großen Shard.
2. Zugriff auf die InfluxDB-Konsole unter Home Assistant OS
Bei Home Assistant OS läuft InfluxDB als Add-on in einem eigenen Docker-Container. Der direkte Weg über “docker exec” funktioniert im Terminal-&-SSH-Add-on standardmäßig nicht (Protection Mode, kein Docker-Zugriff). Der zuverlässige Alternativweg führt über die HTTP-API von InfluxDB mit curl, direkt aus dem normalen Terminal:
curl -s -G 'http://10.1.1.24:8086/query' \
--data-urlencode "db=home_assistant" \
--data-urlencode "u=username" \
--data-urlencode "p=DEIN_PASSWORT" \
--data-urlencode "q=SHOW MEASUREMENTS"
Die Zugangsdaten (Benutzername/Passwort) findet man entweder in der Konfiguration des InfluxDB-Add-ons (Reiter “Konfiguration”) oder im influxdb:-Abschnitt der Home-Assistant configuration.yaml.
3. Wichtige Erkenntnis: Measurements sind Einheiten, nicht Domains
Bei der Standard-Konfiguration der Home-Assistant-InfluxDB-Integration ist das “Measurement” nicht die Domain (z. B. sensor), sondern die Einheit des jeweiligen Sensors – also z. B. °C, kWh, %, MB, Wh, hPa. Das erklärt, warum eine Abfrage wie SHOW TAG VALUES FROM “sensor” WITH KEY = “entity_id” leer bleibt.
Praktischer Trick: Lässt man FROM “…” einfach weg, wird über alle Measurements gleichzeitig gesucht:
curl -s -G 'http://10.1.1.24:8086/query' \
--data-urlencode "db=home_assistant" \
--data-urlencode "u=username" \
--data-urlencode "p=DEIN_PASSWORT" \
--data-urlencode 'q=SHOW TAG VALUES WITH KEY = "entity_id"'
Das gilt genauso beim späteren Löschen mit DROP SERIES: Ohne FROM-Klausel wird die Serie in allen Measurements (Einheiten) gelöscht, in denen der entity_id-Tag vorkommt.
4. Liste der zu löschenden Sensoren zusammenstellen
Die Ausgabe von SHOW TAG VALUES WITH KEY = “entity_id” liefert alle Entity-IDs in der Datenbank. Aus dieser Liste wählt man die Sensoren aus, die komplett gelöscht werden sollen – am einfachsten, indem man die reinen Entity-Namen (ohne Anführungszeichen, ohne “entity_id”) in eine Textdatei im /config-Verzeichnis schreibt, z. B. mit dem File-Editor-Add-on:
/config/entities_to_delete.txt
device_tracker_iphone_von_hanshiasl_app_battery
disk_pve_ssd_m_2_pcie3_256gb_innovationit_verschleiss
evcc_wallbox_01_vehicle_soc
qemu_win11_101_cpu_auslastung
…
(ein Entity-Name pro Zeile)
5. Sensoren gezielt löschen (DROP SERIES)
Statt jede Entität einzeln von Hand einzutippen, liest ein kleines Bash-Skript die Liste aus der Textdatei und löscht jede Entität einzeln per DROP SERIES. Wichtig: Da Copy & Paste von mehrzeiligem Code im Browser-Terminal fehleranfällig ist (erste Zeichen gehen oft verloren), wird das Skript nicht direkt ins Terminal eingefügt, sondern als Datei über den File-Editor angelegt.
Schritt 1: Skript-Datei anlegen
Im File-Editor-Add-on eine neue Datei /config/delete_entities.sh anlegen mit folgendem Inhalt:
while read -r entity; do
[ -z "$entity" ] && continue
echo "Lösche: $entity"
curl -s -XPOST 'http://10.1.1.24:8086/query' \
--data-urlencode "db=home_assistant" \
--data-urlencode "u=username" \
--data-urlencode "p=DEIN_PASSWORT" \
--data-urlencode "q=DROP SERIES WHERE \"entity_id\" = '$entity'"
echo ""
done < /config/entities_to_delete.txt
Hinweis: -XPOST wird verwendet, weil DROP SERIES als reine GET-Abfrage (-G) von InfluxDB als veraltet markiert wird (“deprecated use of DROP SERIES … in a read only context, please use a POST request instead”).
Schritt 2: Skript ausführbar machen und starten
Im Terminal (kurze, unkritische Befehle, kein riskantes Copy & Paste von Mehrzeilern nötig):
chmod +x /config/delete_entities.sh
Das Skript gibt für jede Entität eine Fortschrittszeile (“Lösche: …”) aus und führt die Löschung einzeln aus.
Schritt 3: Kontrolle
curl -s -G 'http://10.1.1.24:8086/query' \
--data-urlencode "db=home_assistant" \
--data-urlencode "u=username" \
--data-urlencode "p=DEIN_PASSWORT" \
--data-urlencode 'q=SHOW TAG VALUES WITH KEY = "entity_id"' \
| grep -o '"entity_id","[^"]*teil_des_namens[^"]*"'
Kommt hier kein Treffer mehr, ist die jeweilige Entität erfolgreich entfernt.
6. Praktische Tipps & Stolperfallen
-
Terminal & SSH-Add-on: Ohne Docker-Zugriff (Protection Mode) funktionieren docker ps / docker exec nicht – die HTTP-API mit curl ist der zuverlässige Alternativweg.
-
Fehlende erste Zeichen beim Einfügen: Browserbasierte Terminals (ttyd/xterm.js) verlieren beim Copy & Paste manchmal die ersten ein bis zwei Zeichen. Abhilfe: kurz warten nach dem Klicken ins Terminal, oder vor dem Einfügen ein Dummy-Zeichen tippen und danach wieder löschen.
-
Hängender > -Prompt: Erscheint nur noch “>”, fehlt ein schließendes Anführungszeichen. Mit Strg+C abbrechen und neu versuchen.
-
Mehrzeilige Befehle (z. B. while-Schleifen) besser als Skript-Datei über den File-Editor anlegen statt direkt ins Terminal einzufügen – dort funktioniert Copy & Paste zuverlässig.
-
“Permission denied” beim Ausführen eines Skripts: Datei ist noch nicht ausführbar – einmalig chmod +x Dateiname.sh ausführen.
-
DROP SERIES löscht Daten und Metadaten vollständig (im Gegensatz zu DELETE, das nur Datenpunkte entfernt, Tag-Werte aber sichtbar lässt).
-
Speicherplatz wird nach dem Löschen nicht sofort sichtbar frei (Tombstone-Mechanismus) – ggf. hilft ein Neustart des InfluxDB-Add-ons, damit die Kompaktierung durchläuft.
7. Nachbereitung
-
Hilfsdateien /config/entities_to_delete.txt und /config/delete_entities.sh können nach erfolgreicher Löschung wieder entfernt werden.
-
Zur Kontrolle stichprobenartig mit SHOW TAG VALUES prüfen, ob die gelöschten Sensoren wirklich verschwunden sind.
-
Bei Bedarf InfluxDB-Add-on neu starten, damit belegter Speicherplatz tatsächlich freigegeben wird.