Purge Maria DB über Automation

Hallo Zusammen,
habe mir eine kleine Automation geschrieben, die mir geziehlte Entitäten Globs älter als 5 Tagen löscht.
Wenn ich die Automation manuell aufrufe passiert leider nichts und die Entitäten haben immer noch alle Daten. Habe das auch mit SQL überprüft.
Yaml File:

alias: Purge MariaDB
description: ""
trigger:
  - platform: time
    at: "04:15:00"
action:
  - service: recorder.purge_entities
    data:
      keep_days: 5
      entity_globs:
        - sensor.*_power_outage_count*
        - sensor.*_signal_level*
mode: single

Der Trace sagt mir, dass alles in 0 Sekunden beendet wurde, leider kein Fehler nichts.
HA habe ich neu gestartet!
Was mache ich hier falsch?
Es sieht so aus, dass man bei Target irgendeine Entität eintragen kann. Dann passiert auch etwas. Keine Ahnung wofür das gut sein soll!
Absolut schlecht ist, dass der Prozess im Hintergrund läuft, man sieht absolut nichts, was hier passiert, ebenso keine Info über das Ende. Keine Ahnung, was die Entwickler sich hierbei gedacht haben.
Mann kann also nie über eine Automation direkt nach dem Start des Purge einen Unpack der db durchführen.
Eventuell bringt jemand noch Licht ins Dunkel.
Danke.
Gruß Klaus

Habe das “packen” mal manuell ausgelöst. “purge_keep_days:” hatte ich auf 14 stehen und jetzt auf 31 erhöht. Meine Datenbank hatte vorher 1880.50 MB.

Etwas seltsam beim “umpacked”: Obwohl vorne der Haken gesetzt ist, muss es “hinten” auch noch aktiviert werden. War ruck zuck erledigt. Es hat keine zehn Minuten gebraucht, ehe die Anzeige nicht mehr hin und her geschwankt ist.

So sieht es jetzt “besser” aus…

IDAW – Home Assistant 2024-03-11 17-56-47

So habe jetzt alles eingerichtet. Die Automationen stehen und löschen mir zyklich die Daten aus der MariaDB.
Neben den states Tabellen, gibt es auch noch die statistics Tabellen.

Diese werden leider nicht über den recorder reorganisiert! Wie kommt man an diese dran?
Danke.

… und wie sieht Deine Automation jetzt aus? Geheim? :rofl: :crazy_face:

nix besonnderes, aber wenn es interessiert:

alias: MariaDB 30 Tage behalten, start am 1. eines Monats
description: ""
trigger:
  - platform: time
    at: "00:05:00"
condition:
  - condition: template
    value_template: "{{ now().day == 1 }}"
action:
  - service: recorder.purge_entities
    data:
      keep_days: 30
      entity_globs:
        - sensor.*_current_power*
        - sensor.*today_runtime*
        - sensor.*month_runtime*
    target:
      entity_id:
        - sensor.luxtronik_330130_0276_low_pressure
        - sensor.luxtronik_330130_0276_current_heat_output
        - sensor.luxtronik_330130_0276_suction_compressor_temperature
        - sensor.luxtronik_330130_0276_high_pressure
        - sensor.luxtronik_330130_0276_compressor_heating_temperature
        - sensor.luxtronik_330130_0276_pump_frequency
        - sensor.luxtronik_330130_0276_heat_source_flow_rate
mode: single
alias: MariaDB 5 Tage behalten, läuft täglich
description: ""
trigger:
  - platform: time
    at: "00:50:00"
action:
  - service: recorder.purge_entities
    data:
      keep_days: 5
      entity_globs:
        - sensor.*_power_outage_count*
        - sensor.*_signal_level*
        - sensor.node_pve*
        - sensor.storage*
        - sensor.fritz*
        - sensor.iphone*
        - sensor.proxmox*
        - sensor.qemu*
        - sensor.*battery*
    target:
      entity_id:
        - water_heater.luxtronik_330130_0276_domestic_water
mode: single
alias: MariaDB purge, start am 1. des Monats
description: ""
trigger:
  - platform: time
    at: "05:00:00"
condition:
  - condition: template
    value_template: "{{ now().day == 1 }}"
action:
  - service: recorder.purge
    data:
      repack: true
mode: single
2 „Gefällt mir“

Hallo Klaus,

lässt du neben deinen Automationen noch die recorder Parameter in der configuration.yaml auch laufen ? bzw wie sieht hierzu deine Einstellung aus ?

VG

Ja, die müssen laufen, da ich über die Automation nur die Werte entferne, die ich nicht so lange benötige.
Hier, was ich eingetragen habe:

#databases
recorder:
  db_url: !secret mariadb_url
  purge_keep_days: 1095
  commit_interval: 20
  exclude: #Exclude entities
    entity_globs:
      - sensor.fritz*
      - sensor.luxtronik_330130_0276_status_time
      - sensor.energy_current
      - sensor.*_battery

ok cool danke dir.

VG

Hat niemand an eine Idee wie man an die Reorganisation der Statistik Files kommt?

Warum eigentlich 1095 Tage??!!

Reichen die Langzeitstatistiken nicht aus? Diese werden ja unabhängig von purge_keep_days ohne Limit weitergeführt. Und zwar für Sensoren mit der State Class measurement , total oder total_increasing

Gruß
Osorkon

Möchte das meiste der Wärmepumpe für 3 Jahre mal aufheben. Kann auch sein, dass wenn ich alles im Griff habe kürzer gehe.
Schade, dass “purge_keep_days” ein genereller Wert und nicht variabel einsetzbar ist.

Und die Langzeitstatistik ist an der Stelle nicht ausreichend?

purge_keep_days auf eine normale Dauer von ein oder 2 Wochen einstellen und man muss sich über die Datenbank Größe keinen Gedanken machen. Auch nicht um irgendwelche Automatisierungen.

Wobei mir das auch Schnuppe wäre ob diese 500MB oder 5GB hätte.

Gruß
Osorkon

Guten Morgen,

wie müsste dann die Einstellung aussehen beim einem Sensor ? bzw. muss man es separat hinterlegen ?

Als Beispiel, wird der Sensor hier bereits in die Langzeitstatistik hinterlegt ?

VG

Hallo Klaus,
ich habe genau das gleiche Problem, wie von Dir am Anfang beschrieben. Egal ob ich die Automation manuell starte oder über den trigger laufen lasse, sie ist in null Zeit fertig aber die Daten sind immert noch da. Leider verstehe ich nicht wie Du das Problem am Ende gelöst hast.

alias: Dusch Daten löschen
description: Dusch Daten löschen
trigger:
  - platform: time
    at: "20:32:00"
condition: []
action:
  - action: recorder.purge_entities
    data:
      keep_days: 7
      entity_globs:
        - sensor.shelly_em3_1_*
        - sensor.meater_*
mode: single