Energie Dashboard verliert plötzlich Historie

Hallo zusammen,
ich habe ein sehr seltsames Phänomen.

Seit heute (irgendwann) sehe ich nur noch Daten des heutigen Tages. Alle vorherigen Tage zeigen:

Seit gestern habe ich eine zweite PV Anlage hinzugefügt. Heute dann habe ich die configuration.yaml so angepasst, dass der Gesamtstromverbrauch wieder richtig berechnet wird.

Wenn es an der Änderung läge, verstehe ich nicht, weshalb auch alle anderen Daten von Einzelsteckdosen und Wasserverbrauch nicht mehr da sind.

Der Teil des Yaml

sensor:
  - platform: template
    sensors:
      # Template sensor for current power comsumption
      power_current:
        friendly_name: "Power Current"
        unit_of_measurement: 'W'
        value_template: >-
            {{ states('sensor.shellypro3em_0cb815fd745c_phase_a_active_power')|float + states('sensor.shellypro3em_0cb815fd745c_phase_b_active_power')|float + states('sensor.shellypro3em_0cb815fd745c_phase_c_active_power')|float }}
        availability_template: "{{
            [ states('sensor.shellypro3em_0cb815fd745c_phase_a_active_power'),
              states('sensor.shellypro3em_0cb815fd745c_phase_b_active_power'),
              states('sensor.shellypro3em_0cb815fd745c_phase_c_active_power')
            ] | map('is_number') | min
          }}"
    
      # Template sensor for values of power import (active_power > 0)
      power_import:
        friendly_name: "Power Import"
        unit_of_measurement: 'W'
        value_template: >-
          {% if (states('sensor.shellypro3em_0cb815fd745c_phase_a_active_power')|float + states('sensor.shellypro3em_0cb815fd745c_phase_b_active_power')|float + states('sensor.shellypro3em_0cb815fd745c_phase_c_active_power')|float) > 0 %}
            {{ states('sensor.shellypro3em_0cb815fd745c_phase_a_active_power')|float + states('sensor.shellypro3em_0cb815fd745c_phase_b_active_power')|float + states('sensor.shellypro3em_0cb815fd745c_phase_c_active_power')|float }}
          {% else %}
            {{ 0 }}
          {% endif %}
        availability_template: "{{
            [ states('sensor.shellypro3em_0cb815fd745c_phase_a_active_power'),
              states('sensor.shellypro3em_0cb815fd745c_phase_b_active_power'),
              states('sensor.shellypro3em_0cb815fd745c_phase_c_active_power')
            ] | map('is_number') | min
          }}"

      # Template sensor for values of power export (active_power < 0)
      power_export:
        friendly_name: "Power Export"
        unit_of_measurement: 'W'
        value_template: >-
          {% if (states('sensor.shellypro3em_0cb815fd745c_phase_a_active_power')|float + states('sensor.shellypro3em_0cb815fd745c_phase_b_active_power')|float + states('sensor.shellypro3em_0cb815fd745c_phase_c_active_power')|float) < 0 %}
            {{ (states('sensor.shellypro3em_0cb815fd745c_phase_a_active_power')|float + states('sensor.shellypro3em_0cb815fd745c_phase_b_active_power')|float + states('sensor.shellypro3em_0cb815fd745c_phase_c_active_power')|float) * -1 }}
          {% else %}
            {{ 0 }}
          {% endif %}
        availability_template: "{{
            [ states('sensor.shellypro3em_0cb815fd745c_phase_a_active_power'),
              states('sensor.shellypro3em_0cb815fd745c_phase_b_active_power'),
              states('sensor.shellypro3em_0cb815fd745c_phase_c_active_power')
            ] | map('is_number') | min
          }}"

      # Template sensor for values of power consumption
      power_consumption:
        friendly_name: "Power Consumption"
        unit_of_measurement: 'W'
        value_template: >-
          {% if (states('sensor.power_export')|float(0)) > 0 and (states('sensor.power_solargen')|float(0) - states('sensor.power_export')|float(0)) < 0 %}
            {{ 0 }}    
          {% elif (states('sensor.power_export')|float(0)) > 0 and (states('sensor.power_solargen')|float(0) - states('sensor.power_export')|float(0)) > 0 %}
            {{ (states('sensor.power_solargen')|float(0)) - states('sensor.power_export')|float(0) }}    
          {% else %}
            {{ states('sensor.power_import')|float(0) + states('sensor.power_solargen')|float(0) }}
          {% endif %}

      # Template sensor for values of energy Solar generation (solar_power > 0)
      power_solargen:
        friendly_name: "Power Solar Generation"
        unit_of_measurement: 'W'
        value_template: >-
          {% set pv_schuppen = states('sensor.pv_schuppen_total_power')|float(0) %}
          {% set pv_donato = states('sensor.pv_donato_total_power')|float(0) %}
          {% set total_power = pv_schuppen + pv_donato %}
          {% if total_power > 0 %}
            {{ total_power }}
          {% else %}
            {{ 0 }}
          {% endif %}

  # Sensor for Riemann sum of energy import (W -> Wh)
  - platform: integration
    source: sensor.power_import
    name: energy_import_sum
    unit_prefix: k
    round: 2
    method: left

  # Sensor for Riemann sum of energy export (W -> Wh)
  - platform: integration
    source: sensor.power_export
    name: energy_export_sum
    unit_prefix: k
    round: 2
    method: left

  # Sensor for Riemann sum of energy consumption (W -> Wh)
  - platform: integration
    source: sensor.power_consumption
    name: energy_consumption_sum
    unit_prefix: k
    round: 2
    method: left

utility_meter:
  energy_import_daily:
    source: sensor.energy_import_sum
    name: Energy Import Daily
    cycle: daily
  energy_import_monthly:
    source: sensor.energy_import_sum
    name: Energy Import Monthly
    cycle: monthly
  energy_export_daily:
    source: sensor.energy_export_sum
    name: Energy Export Daily
    cycle: daily
  energy_export_monthly:
    source: sensor.energy_export_sum
    name: Energy Export Monthly
    cycle: monthly
  energy_consumption_daily:
    source: sensor.energy_consumption_sum
    name: Energy Consumption Daily
    cycle: daily
  energy_consumption_monthly:
    source: sensor.energy_consumption_sum
    name: Energy Consumption Monthly
    cycle: monthly

Energiedashboard-Einstellungen:

Bitte helft mir, die Daten wieder zu bekommen.

Ich habe noch ein bisschen weiter recherchiert, es scheint als hätten alle Entitäten alle was vor heute früh kurz nach 4 nachts passierte “vergessen” es hat scheinbar also nichts mit dem Energie Dashboard zutun. So tappe ich noch mehr im Dunkeln.

Wie kann ich die Daten wieder bekommen?

Moin,
hast du mal in die Logs geguckt ob dort was steht?

Könnte vielleicht ein Datenbank Fehler gewesen sein, ich weiß aber nicht ob HA dann einfach eine neue Datenbank anfängt.

Backup einspielen?

ich habe nichts gefunden in den Logs, allerdings sehe ich diese Dateien hier.

das scheint auf eine korrumpierte Datenbank hinzuweisen.

Dummerweise haben beide Backups “versagt” sowohl das Plugin in Unraid, das regelmäßig die VMs sichern soll hat ohne mein wissen nicht mehr funktioniert, als auch das Backup in HASS selbst. Hier habe ich nur Backups von Core und nicht complete baclups… Mir war nicht bewusst, dass man die manuell machen muss.

Das sieht so aus als ob das zum 2. mal in ~6monaten passiert ist?
image

Wodrauf hast du HA am laufen?
Vielleicht solltest du dir mal ne neue Festplatte zulegen, da so etwas anscheinend bei dir öfters passiert.
Oder ziehst du dein HA einfach so vom Strom? Das ist auch nicht gut für die Datenbank.

1 „Gefällt mir“

HASS läuft als VM auf Unraid als Hypervisor. Die Festplatte ist eine .qcow2 Virtual Disk, diese liegt auf dem Unraui Array. Die VM hat 2 Kerne fest zugewiesen, 8 gb RAM . Ich nehme nicht an, dass es an der Hardware liegt. In der Regel gibt es keine sudden power outs, es gab aber neulich ein Problem am Server, da musste ich ihn vom Strom nehmen. Das korreliert aber nicht mit dem Datum und der Uhrzeit, da schliefen alle.

Gibt es eine Möglichkeit die Datenbank zu fixen, oder zumindest die Energie-Dashboard Daten wieder zu bekommen?

Im Core Backup ist die Datenbank mit drin.
habe eben mal in das Core Backup von update auf 2024.6.4 geguckt:
image
Das würde ich mal versuchen, davor zur Sicherheit vielleicht ein Fullbackup machen und runterladen Falls deine Backups nicht extern von HA liegen (Netzwerkspeicher).

Wie man eine korrupte Datenbank fixt weiß ich nicht, damit kenne ich mich nicht aus.

Oder du probierst es selber:
Recorder stoppen service: recorder.disable Datenbank aus dem Backup rein Kopieren Recorder starten service: recorder.enable, würde aber das Backup empfehlen.

Danke für den Tipp es noch mal zu probieren, ich habe tatsächlich in einem noch älteren Backup (von vor zwei Wochen) die Daten gefunden! Ich war skeptisch, da die Datenbankdatei viel größer war als das Backup aber das wird ja komprimiert…

Weißt du, oder natürlich auch sonst jemand, ob und wie man die Daten zweier Datenbanken zusammenführen kann? Dann wäre das Loch kleiner.

Moin,

Das hängt davon ab, wie Deine Datenbank und SQL Skill sind!
Die Datei home-assistant_v2.db sind von SQlite und können, wenn sie auf deiner Platte, deines PCs liegen, mit SQL Tools, z. B. DBeaver, gelesen werden.
Ohne es getestet zu haben, kann das so aussehen:

  • aktuelle Datenbank herunterladen, z.B. als aktuell_home-assistant_v2.db
  • HA stoppen
  • aus dem Backup die Datei extrahieren, z.B. old_home-assistant_v2.db`
  • SQL Tool, z.B. DBeaver installieren und aufrufen
    • eine neue Verbindung zum ersten File erstellen
    • eine zweite Verbindung zum zweiten File erstellen
  • mittels SQL die Daten aus old_... extrahieren und in die aktuell_... schreiben

So in groben Zügen, es gibt auch Tools zum Replizieren von einer in eine andere Datenbank, mir sind aus dieser Kategorie aber nur kostenpflichtige Tools bekannt.

Oder man macht den Zwischenschritt über mariadb
Schau mal, ob es hier was für dich gibt!

VG
Bernd

Vielen Dank!

Mein Datenbank Skills sind bisher bis auf getoolte Postgres und mariaDB Docker auf dem Server nicht wirklich vorhanden.

Ich habe es geschafft ein Backup zum Laufen zu bekommen (klappte beim ersten mal nicht und setzte HSS komplett zurück) das “nur” drei Tage alt ist. So werde ich aus Zeitmangel auf die zwischenliegenden Daten verzichten.

Dennoch interessiert mich, kann ich HASS eine andere, verlässlichere DB zugrunde legen? also für die “normalen” Daten, wie jene im Energie-Dashboard. InfluxDB und Grafana nutze ich schon länger für einzelne Steckdosen, aber das läuft ja meines Wissens eher parallel. Zudem habe ich bisher nicht die Grafana skills, sowas wie das Energie Dashboard nachzubauen mit kombinierten Graphen und so…

Moin,

Einige sind vor geraumer Zeit von SQlite zu mariaDB gewechselt und nachdem in HA einiges an der SQlite Implementation verbessert wurde, sind auch viele wieder zurück zu SQlite gewechselt.
Ok, eine andere, meine, HA Installation ist nicht der Maßstab, da ich es auch erst seit 6 - 7 Monate am Laufen habe, als VM unter Proxmox, ich hatte, schnell auf Holz klopfen, noch keine Probleme mit der SQlite Datenbank.

Ja, die läuft parallel zur SQlite, ich schiebe aber auch meine Daten da hin, sicher ist sicher :slight_smile:
Wenn man dann einen Sensor für die Energiedaten anlegt, der sich die Daten aus der influxdb holt, dann kann man auch das Energiedashboard weiter nutzen, so die Theorie :slight_smile:

ich möchte irgendwann einmal die schönen Grafana Canvas Dashboards nutzen, bin aber ein Grafiklegastheniker :slight_smile:
A GIF shows a Canvas panel with a house, being used to monitor energy consumption.

VG
Bernd

das sieht ziemlich nice aus. :slight_smile: Ich nutze auch Teslamate und derern Grafana Dashboards können auch ne Menge… Ich habe leider einfach zu wenig Zeit (und zu wenig Kkill bisher :smile: ) zB stimmen die Daten nicht 100% überein pro tag… naja anderes Thema.

ok dann bleibe ich bei SQL lite und versuche noch regelmäßiger Backups zu machen.

Vielen Dank für eure Hilfe!

Heute in der Früh ist es schon wieder passiert, ich verstehe es nicht woher das kommen soll, kein Stromausfall, keine gestoppte VM…

Moin,

Ich kenne mich mit UNRAID nicht aus, aber Du solltest mal schauen, ob Du etwas findest, um die Discs zu überprüfen, sowohl die physischen, als auch die virtuellen.

Hängt Dein Rechner an einer USV?

VG
Bernd

Guter Punkt, die Disks selbst sind laut SMART ok:

Nein, keine USV vorhanden. Die Logs am Server zeigen keine Besonderheiten.

Kann es an der Größe der Datenbank liegen? Ich habe mich noch nicht beschäftigt mit “bereinigen”. Aber zumindest die Energiedashboard-relevanten Daten will ich ja auch behalten

Moin,

Kann ich nicht sagen, denn in den Posts habe ich nichts gefunden, wie groß Dein SQLite DB File ist!
Du kannst ja mal schauen, was da für ulimits eingerichtet sind.

Kannst Du da noch genauer hineinschauen, ob es defekte Sektoren/Blöcke gibt?

VG
Bernd

Danke für deine Tipps,
stimmt, die Größe hatte ich noch nicht genannt, knapp 4 GB.

Es ist aber ein Muster erkennbar, es ist jetzt jeden Abend passiert, immer irgendwann nach 4 Uhr nachts.

Es scheint genau das Problem zu sein, was hier beschrieben wird:

so scheint das Aufräumen der Datenbank, wie auch immer man das einstellt, um diese Zeit zu passieren.

Ich habe nun den letzt-funktionierenden Status der Datenbank durch diese commandline gejagt und immerhin startet HASS mit dieser.

ich bin sehr gespannt, ob es diese Nacht überlebt.

Update:
nun die erste Nacht ohne Datenverlust überstanden. I’ll keep the fingers crossed

:crayon:by HarryP: Zusammenführung Doppelpost (bitte “bearbeiten” Funktion nutzen)