Etwas ballert meine Datenbank zu und scheinbar nicht nur Shelly 3em pro (war: Shelly 3em pro ballern meine Datenbank zu :( )

Hallo,

ich bin nun fast 1,5 Jahre mit Home Assistant unterwegs und habe mich was Hardware angeht damals extra für einen Mini PC anstatt eines Raspberry entschieden, gerade weil ich eine kleine Datenkrake bin. Ich dachte mit einer 500 GB SSD und HAOS stand alone komme ich gut über die Runden. Um so geschockter war ich als ich gestern die Meldung bekam, dass meine Festplatte voll ist.

Schnell stellte sich heraus, dass meine Backups viel zu groß sind und die wiederum eine viel zu große Datenbank enthalten. Knapp 40GB und das liegt zu einem Großteil auch an den Shellys, die über mehrere Entitäten mehrmals die Sekunde Daten schicken. Die ein oder andere Entität kann ich sicher deaktivieren, aber eigentlich möchte ich lieber das ständige feuern in die Datenbank drosseln. um später wenigstens nochmal Tendenzen zu sehen.

In den Shellys habe ich leider keine Einstellung finden können. Für die Reaktion ist das ja sicher vorteilhaft, aber für die Datenbank halt weniger.

Für jede der betroffenen Entitäten nochmal einen Helfer anlegen, der das filtert, finde ich unübersichtlich. Habt ihr das Problem nicht und wenn doch wie habt ihr es gelöst?

Recorder include/exclude

Zu den Shellys kann ich nichts sagen. Meine machen sowas nicht. Ich habe 25 Shellys mit gut 280 Entitäten und solche Probleme nicht.

Aber so als Tipp: Vielleicht solltest du die Backups besser wo anders speichern. Denn ein Backup auf der Platte des zu sichernden Systems ist kein Backup, sondern ein Risiko.
Wenn die Platte ausfällt, hilft es nichts, auf der selben Platte ein Backup zu haben.

Und bei (grob gerechnet) 12 Backups, kannst du doch die letzten 10 auch löschen und nur die letzten zwei behalten.

Ich hab auch einen Shelly Pro 3em. Bei mir wird nix zugeballert. Läuft völlig unauffällig. Die Datenbank ist ca. 1GB groß.

Vielen Dank für eure schnellen Antworten…

Ich bin mir fast sicher, dass beim exclude gar keine Daten mehr in der Datenbank gespeichert werden, das möchte ich ja gerade nicht :wink:

Ich habe auch ein paar mehr Shellys, aber die 3EM fallen da halt bei mir zumindest aus der Reihe, vielleicht weil sie per LAN angeschlossen sind, keine Ahnung.

Vielen Dank für Deine Tipps, selbstverständlich speichere ich die Backups auch noch an einer 2. Stelle und das jede Nacht. Ich denke aber der Zeitraum von 10 Tagen ist manchmal sogar noch zu gering. Leider habe ich keine Möglichkeit gefunden Backups unterschiedlich lange zu speichern, also 2 oder 3 intern und 10 extern. Lasse mich da gerne belehren. Aber das ist ja auch nicht die Frage, sondern wie ich das Ballern der Shellys verhindern kann :smiley:

Das freut mich sehr zu lesen, aber hilft mir das nur bedingt bei meinem Problem. Ich weiß jetzt das es wohl anders funktioniert, nur wie weiß ich immer noch nicht :wink:

Das war als Hinweis gedacht :
https://www.home-assistant.io/integrations/recorder/

Du kannst genau angeben was gespeichert werden soll und was nicht.

In der Include Variante gibts du an was gespeichert werden soll, alles andere wird dann automatisch nicht gespeichert.

Dieser Weg wäre mein Vorschlag.

Für jede ist es wirklich unsinnig aber für die, die die meisten Daten schreiben schon. Ich hatte mich da iterativ herangearbeitet, in der DB die intensivsten herausgesucht und entsprechend angegangen und die DB Größe dann über Wochen beobachtet.

Das Aufsummieren von Watt Entities war der negativste Renner.

Recorder Exclude betreibe ich ebenfalls intensiv. Braucht man wirklich von jeder Entity die History?

Das habe ich ja auch als solchen gesehen, nur bringt mich das nicht weiter, weil ich die Daten ja nicht ausschließen will, sondern reduzieren.

Laut DB Stats hat der Shelly mit jeder Entität 1 Million mal in die Datenbank geschrieben und das innerhalb von gut 2 Wochen, finde ich ein bissel viel. Genau ab da ist auch meine Datenbank so extrem angestiegen.

Ich habe hier über 15000+ Entitäten bei über 1000 Geräten (Bei HA ist ja alles irgendwie ein Gerät :smiley:) und schon alleine deshalb wir meine Datenbank wohl schon viel größer sein als bei den meisten, ich habe auch schon einige Sachen excludiert, sowas wie last seen und uptime Entitäten. Aber ich excludiere lieber eins zu wenig als eins zu viel und gerade Verbräuche, Temperaturen usw. sind mir wichtig. Sind ja auch kein problemm, solange die datenbank nicht so vergewaltigt wird wie von den Shellys ^^

Gerne lasse ich mich von euren Excludes inspirieren, vielleicht ist ja für mich auch noch was dabei womit ich die Shellys dann kompensieren kann. Aktuell habe ich es so:

exclude:
  domains:
    - update
  entities:
    - sensor.workstation_zuletztaktiv
    - sensor.date
    - sensor.date_time
    - sensor.presence_sensor_stationary_distance
    - sensor.presence_sensor_distance
    - sensor.presence_sensor_motion_distance
    - sensor.disabled_device_entities
    - sensor.bubble_card_modules
    - sensor.sein_smartphone_active_notification_count
    - sensor.ihr_smartphone_active_notification_count
    - sensor.es_active_notification_count
    - sensor.poolbeleuchtung_power
    - group.unavailable_entities
  entity_globs:
  - sensor.clock*
  - sensor.date*
  - sensor.time*
  - sensor.*_last_seen
  - sensor.*_zuletzt_gesehen
  event_types:
    - call_service
1 „Gefällt mir“

Eine Million mal pro Entität in zwei Wochen? Das ist nicht mal einmal pro Sekunde. Soviel scheint mir das nicht zu sein. Ich weiß zwar nicht, in welchem Datenformat HA die Entitäten speichert, aber wenn es 32bit-Zahlen sind, sind das etwa 2MB pro Entität. Auf zwei Wochen gerechnet dann etwa 72MB bei 26 Entitäten (Zumindest bei mir sind es 26 aktive, aber ich habe nicht den pro, sondern den alten 3EM).

was brauchst du denn von den shellys ? und was haben die alles ?

Ich bevorzuge immer include da ich da nur die angebe die ich auch brauche.
dann muss ich keine exclude liste führen und übersehe dabei vieleicht was

Ich habe es nicht nachgerechnet, sorry. Es kam im Logbuch halt jede Sekunde was vom Shelly rein und für mich ist 1 Million mal 6x3 Entitäten schon sehr viel. Andere in der Liste unter dem Shelly sind bei weniger als 500000 und schon länger im System. Aber hey, wenn ich es besser wüsste würde ich hier ja nicht um Hilfe bitten.

Dann läuft bei mir wohl mehr schief :frowning:

Da bin ich mir noch nicht sicher, Scheinleistung zeigt es Müll an und habe ich schon deaktiviert, aber was ich aktiv habe würde ich schon gerne über einen längeren Zeitraum sehen.

Wenn die 2 Shellys erst knapp 150MB geschrieben haben können, dann hat das aufblähen ja scheinbar einen anderen Grund und ich muss anders an die Sache rangehen. Über die Top 10 in DB Stats komme ich ja wohl nicht weiter.

Wie oben schon erwähnt, schreibt mir gerne mal eure Excludes, vielleicht ist ja auch für mich was dabei :wink:

Wow das sind ja Dimensionen.
Wenn Du wirklich alles haben willst, könnte man auch die Option 2. HA Instanz einwerfen.

Nicht wirklich, wenn ich mir noch ein solches Gerät anschaffe, bekomme ich die Kündigung :smiley:

1 „Gefällt mir“

Hat sich denn zu dem Zeitpunkt noch mehr geändert?

Diese Rechnung war nur ein grober Überschlag und dazu kommt ja auch noch, daß zumindest die Backups komprimiert sind.

Meine Vollbackups sind jeweils kleiner als 2GB, daher vermute ich mal, daß diese Rechnung zumindest halbwegs stimmt.

Elektrisch gesehen ist die Scheinleistung schon relevant, denn sie gibt die tatsächliche Strombelastung der Leitungen an. Hast du sie mal mit dem Wirkleistungsfaktor multipliziert? Dann sollte etwas “brauchbares” dabei herauskommen.

Ich meinte nicht das die Scheinleistung Müll ist, sondern was der Shelly bei mir da anzeigt (ja er ist richtig angeschlossen). Bei abgeschalteter Sicherung habe ich konstant 7W Scheinleistung und überhaupt ist diese bei mir bei ohmscher Last 3-4 mal so hoch wie die Wirkleistung.

Ich denke wir schweifen ab und das macht das Thema sehr unübersichtlich. Nicht, dass ich das mit dir nicht alles ausdiskutieren würde, aber es gehört halt nicht zum Thema und beantwortet auch nicht meine Fragen :clinking_beer_mugs:

Aber an Entitäten, die jeder ohne große Verluste exkludieren kann, wie z.B. Zeitangaben wäre ich sehr interessiert. :smiley:

Edit: Und nein, ich habe aktiv nichts geändert ausser Updates.

Hast du mal im recorder.purge “repack” aktiviert? Das komprimiert die Datenbank nämlich erst richtig.
Außerdem habe ich die “keep_days” auf 7 gesetzt. Das heißt ja nicht das die Daten nach 7 Tagen vollständig gelöscht werden, sondern das sie in die Statistics geschrieben werden: Home Assistant speichert automatisch Langzeitstatistiken (min/max/avg) für Sensoren mit der richtigen state_class. Diese verbrauchen kaum Platz und bleiben dauerhaft erhalten, auch wenn du den Recorder auf 2 Tage stellst.
Für alles, was du im Dashboard über Monate tracken willst (z.B. Energie), reichen die Statistiken völlig aus. Den Recorder kannst du daher aggressiv kurz halten (z.B. 3-5 Tage).
Oder musst du wissen wann vor 1 Woche die Waschmaschine eingeschaltet wurde?

Außerdem empfehle ich mal dieses Video:

Nein muss ich nicht, aber für mich ist Smarthome auch Nachvollziehbarkeit. Bei Energiedaten und auch den Daten meiner Wetterstation hätte ich es schon gerne etwas genauer. Grundsätzlich gilt für mich, je mehr Daten ich habe, desto besser kann ich sie auswerten. Wenn ich aggressiv kürze, habe ich zwar mein Speicherproblem gelöst, aber dafür sind meine Daten dann auch relativ nutzlos.

Mir wäre es lieber, wenn ich für jede Entität eine individuelle Haltezeit einstellen könnte. Das ist aber im Moment wohl nicht möglich. Ich kenne das Video schon und habe Haghs schon länger in Benutzung, auch deshalb bin ich ja auf die große Datenbank aufmerksam geworden und bekomme sie aber nicht auf die angegebene maximale Größe.

Hey,

da bei mir als HomeAssistant relativer Neuling, hoas noch “nur” nebenbei läuft, habe ich mich vor kurzem damit befasst.

Kurze Zusammenfassung : Was du möchtest geht nicht. Es ist unmöglich. Es kamen mehrere Vorschläge, die allesamt ne Menge bringen, aber bei jedem Vorschlag kommt sinngemäß “geht nicht, ich verliere Daten”…… das ist überhaupt nicht böse gemeint, aber entweder ich möchte Daten verringern, oder keine Daten verlieren…..

Etwas genauer erklärt : Nur DU allein kannst entscheiden, auf welche Daten Du verzichten kannst. Ich für meinen Teil habe zB sehr viele (äähh alle) meins rx tx Entitäten gelöscht, die das Unifi System spamt und aktiviere sie bei Bedarf. Oder meine. Helligkeitssensoren, die keine GROßE Schaltaktionen hatten, haben gespamt ohne ende. Und natürlich, die Shellys etc. Aber ich schweife ab, von dem was ich hauptsächlich schreiben wollte.

Es ist eine MENGE Arbeit. Aber wenn man es behalten möchte, geht’s nicht anders:

Backup anlegen, auf anderem System neu aufsetzen (damit kann man direkt mal testen, ob die Backup restore Funktion / Vorgehensweise beherrscht. ALLE Geräte deaktivieren, die sich beißen würden (bluetooth, shelly, alle automationen usw). Dann auf dem Testsystem die keep days auf 3 Tage stellen, damit die DB etwas geeigneter zum rumspielen wird. Und dann Attacke…wenn Du weisst, was am meisten spamt und Du am meistem verzichten kannst, ab ins exclude (wie gesagt, behälst du daten, aber keine Super detaillierte).

Ich kann Dir nur empfehlen die exclude include sachen anzuschauen und solange zu lesen bis du es verstehst. Es ist etwad komplizierter, wenn man damit anfängt

VG

Andreas

1 „Gefällt mir“

Hallo,

mein Shelly3EM (kein Pro) hat ebenfalls meine Datenbank stark ansteigen lassen. Die Powerwerte pro Phase kamen bei mir nahezu im Halbsekunden-Takt rein und haben irgendwann mal knapp 25% der kompletten Datenbankgröße ausgemacht.

Da mich nur der aufaddierte Powerwert aller 3 Phasen zusammen interessiert, habe ich die Sensorwerte der 3 Phasen im Rekorder exkludiert und dann über meine template.yaml und dem time_pattern Trigger einen neue Entität erstellt, die nur alle 5 Sekunden aktualisiert wird. Siehe code unten.

Leider ist das nur ein Workaround mit einem Helfer (wie schon bereits erwähnt in diesem Thread). Meines Wissens gibt es keine Möglichkeit, den Abfrageintervall des 3EM in HA anzupassen. Vielleicht ist das aber ein Denkanstoss.

Gruß

Andy

#Die aktuellen Verbräuche/Erträge je Phase werden in einen Wert zusammengefasst
- triggers:
    - trigger: time_pattern
      seconds: "/5"
  sensor:
    - name: "Total Power"
      device_class: power
      state_class: measurement
      unit_of_measurement: "W"
      state: >
        {{
        states('sensor.shellyem3_485519d6bd12_channel_a_power')| float(0) +
        states('sensor.shellyem3_485519d6bd12_channel_b_power')| float(0) +
        states('sensor.shellyem3_485519d6bd12_channel_c_power')| float(0)
        }}
1 „Gefällt mir“