Recorder include/exclude

Hallo liebe Mit-Foristen,

ich möchte meine Datenbank von aktuell 16GB etwas herunterdampfen und habe mir eine entsprechende recorder-Parametrierung einfallen lassen. Leider führte die zu einer “sehr leeren Datenbank” :wink: Aber man hat ja ein Backup…
Wer kann mir sagen was ich falsch gemacht habe?

Hier der Auszug aus der configuration.yaml

recorder:
  purge_keep_days: 31
  include:
     entity_globs:
       - device_tracker.iphone*
       - device_tracker.fmc*
       - device_tracker.rlc*
       - device_tracker.wvw*
     entities:
       - device_tracker.wallbox_2045a11tz3
       - device_tracker.smagateway
       - device_tracker.landroid_wr142e
  exclude:
     entity_globs:
       - device_tracker.*
       - sensor.esphome_web_cde758_phasenwinkel*
     entities:
       - sensor.heartbeat_mopeka_ble_lastchanged
       - sensor.heartbeat_bb

Vorgesehen war, alle device_tracker aus der DB herauszuhalten, bis auf

       - device_tracker.iphone*
       - device_tracker.fmc*
       - device_tracker.rlc*
       - device_tracker.wvw*

und

       - device_tracker.wallbox_2045a11tz3        
       - device_tracker.smagateway        
       - device_tracker.landroid_wr142e

Auch

- sensor.esphome_web_cde758_phasenwinkel*
- sensor.heartbeat_mopeka_ble_lastchanged
- sensor.heartbeat_bb

sollten nicht in die Datenbank.

Alle anderen Entitäten sollten wie gehabt aufgezeichnet werden.

Wie gesagt war die DB nach dem Purge dann nur noch sehr klein… In den Logs habe ich nicht wirklich was gefunden was zur Problemlösung beiträgt und bevor ich es nochmal versuche wäre ich gerne sicher dass ich nicht wieder einen Tag Daten ans Bein binde.

Manchmal sieht man ja den Wald vor lauter Bäumen nicht, also bitte ich um fachkundigen Rat und am liebsten um eine funktionierende Beispielkonfiguration die irgendwo anders läuft und ebenfalls o.g. Anforderungen berücksichtigt (“Nur manche Entitäten aufzeichnen, ausblenden mit Wildcards und vollständigen Bezeichnungen. Alle weiteren nicht erwähnten Entitäten weiter aufzeichnen”).

Danke und Gruß Handfest

include ist so beschrieben

include map (Optional)
Configure which integrations should be included in recordings. If set, all other entities will not be recorded.

Sobald du also include benutzt, werden nur noch diese aufgezeichnet. Besser du nutzt ausschließlich exclude.

Oder du setzt bei include sämtliche domains und bei exclude nur die Ausnahmen

# Example configuration.yaml entry with include and exclude
recorder:
  include:
    domains:
      - sensor
      - switch
      - media_player
      - device_tracker
      - ......
  exclude:
    entities:
      - sensor.last_boot
      - sensor.date
    entity_globs:
      - sensor.weather_*

Ja, leuchtet ein. Aber irgendwie ist die Liste der domains auch nicht viel kürzer als wenn ich die excludes alle einzeln aufführe. :worried:
Wenn nicht noch jemand anders eine andere zündende Idee hat dann werde ich das wohl so umsetzen und anschließend einen neuen purge durchführen.

BTW.: Weißt du vielleicht auch noch wie man kontrollieren kann ob der recorder.purge noch läuft oder schon durch ist? Wenn man in Entwicklerwerkzeuge→Aktionen auf recorder.purge ausführen klickt kommt ziemlich schnell eine Bestätigung in Form eines grünen Buttons mit Haken. Da ist der Drops allerdings mit Nichten gelutscht…
In den handelsüblichen Logs finde ich nichts.
Gruß Handfest

Nein, dass weiß ich nicht. Entweder die CPU-Last im Auge behalten oder per Linux die Tasks beobachten.

Ich muss sagen, ich blicke mit dem recorder auch nicht durch, evtl. kann mich hier jemand erleuchten.

Meine Datenbank hat ca 4GB, ich sehe, hauptsächlich Einträge von Maxxisun und shellypro ganz oben in “SQLite Web”.

750045 8 sensor.maxxiccu1_state
720911 8 sensor.maxxiccu1_house_consumption
658094 7 sensor.maxxiccu1_power_meter
625939 7 sensor.maxxiccu1_battery_power
625424 7 sensor.maxxiccu1_ccu_power
542897 6 sensor.maxxiccu1_grid_import_power
400950 4 sensor.maxxiccu1_battery_power_discharge
272842 3 sensor.maxxiccu1_pv_self_consumption
269043 3 sensor.maxxiccu1_grid_export_power
253679 2 sensor.total_house_power
229734 2 sensor.maxxiccu1_battery_power_charge
149864 1 sensor.shellypro3em_12345678_total_apparent_po
149845 1 sensor.shellypro3em_12345678_total_active_powe

Also dachte ich, schreibe ich eine recoder.yaml (und binde diese auch ein natürlich):

purge_keep_days: 15
exclude:
domains:
- sensor
entities:
- sensor.humidity_bathroom
entity_globs:
- sensor.maxxiccu1*
- sensor.shellypro3em*

Was bedeutet dies nun: Die Werte für alle entities werden nach 15 Tage gelöscht, sensor.maxxiccu1* und sensor.shellypro3em* werde nie gespeichert? Oder alles wird unbegrenzt gespeichert nur die beiden genannten nach 15 Tagen gelöscht? Die Werte vom Regensensor würde ich z.B. gerne immer behalten, nicht nach 15 Tagen löschen, wie geht dies dann?

Und zu allerletzt: Wenn ich mit der recoder.yaml den Dienst recorder.purge ausführe passiert gar nichts, Datenbank noch so groß wie vorher.

Was mache ich denn da falsch, bzw. verstehe ich falsch?

Danke TE

Interessanter Ansatz. :slightly_smiling_face: Du bastelst da an dem Recorder und somit den DB-Einträgen herum und fragst Dich dann was Du da eigentlich machst. :rofl:

Ne mal ersthaft: Warum willst Du überhaupt irgendetwas an den Recorder-Einträgen in der DB ändern und warum lässt Du das nicht einfach so laufen wie es HA vorgesehen hat? Du musst Dich da eigentlich um gar nichts kümmern und das purgen funktioniert auch ganz automatisch von allein.

Solltest Du wirklich irgendeinen Sensore bzw. eine Entität von dem erfassen in der DB ausschließen wollten, weil diese z.B. im Sekundentakt darin einen Eintrag vornimmt, was Du ggf. nicht möchtest, dann schließt Du diese ganz einfach per exclude aus. Bsp. von mir von einem Uhrzeit-Sensor der jede Sekunden einen Eintrag in den DB geschrieben hat, was ich so nicht wollte und ihn daher ausgeschlossen habe. In dem Fall direkt über die configuration.yaml.

recorder:
  exclude:
    entities:
      - sensor.wolf_bm2_0x30_220032_uhrzeit

Und eine DB-Größe von 4GB ist nicht wirklich groß oder viel. Hier sind auch User unterwegs mit DB-Größen von z.B. 30, 40 oder noch mehr GB.

Daher noch einmal: Lass HA das einfach so machen wie es vorgesehen ist und fertig ist die Kiste. :slightly_smiling_face:

VG Jim