Hier die Anleitung wie es funktioniert. Wen der Technische Hintergrund nicht interessiert einfach weiter nach untern scrollen.
Problem: Ein leeres Energie Dashboard nach Datenverlust, Neuinstallation, Sensor-Problemen.
Aufgabe: Wiederherstellen der historischen Daten ohne Zerstörung der Datenbank. des Verantwortlichen Riemann-Sensors.
Herausforderung / Einschränkungen:
Kurze Einführung in die Tiefen der Datenbank und Funktionsweise (wen es nicht interessiert bitte einfach weiterscrollen)
- Riemann Sensoren erlauben keinen Offset oder Startwert > Im Moment des Erstellen fangen sie bei Null an
- In älteren HA-Versionen, war es möglich einen Riemann via Yamll zu basteln incl. einem Startwert. Das geht nicht mehr.
- Eine Historie kann man Riemann Sensoren nicht nachträglich “verpassen”
- Das Einspielen eines Backups überschreibt die Datensätze nach dem Datum des Backups
- Datenbankmanipulationen führen zum Absturz des Riemann Sensors oder negativen Sprüngen.
- Das benennen eines Neuen Sensors mit dem Namen des ursprünglichen Sensors hilft nicht, da die META_ID des Sensors in der Tabelle der Knackpunkt ist und nicht der Name.
- Der Ansatz ach vorherigen extrahieren der Historie der Bezugssensoren und Mapping dieser auf die aktuelle META_ID im Neuen System wird vom Riemann ignoriert. > Man hat dann zwar eine Historie der Quell-Sensoren - die Riemann ist das aber egal.
- Manipulation in der Datenbank mittels SQL und Skripten kann zwar Historien kurzfristig ändern, aber nach einem Neustart verwirft HA die Werte wieder
Kurzum, egal was man versucht man bekommt keine Historie zurück (eines Riemann Sensors) die vor dem Zeitpunkt des erstellen des Sensors liegt.
- Herausforderung: Meistens haben nach einem Crash, einer Neuinstallation die Sensoren andere Namen ganz sicher jedoch andere META_ID in der Tabelle und der Kurzzeittabelle. Ja, man kann die Mappen via SQL - aber ich denke die wenigsten hier haben das Wissen das zu tun. - Ändert aber nichts an der Ausgangslage - Unmöglich den Berechnungszeitpunkt eines Riemann Sensors zurückzuverlegen.
- Man muss irgendwie verschiedene RS mergen auf den aktuellen (neuen) RS im Energie Dashboard.
Lösung:
Zunächst einmal muss man verstehen, dass das Energie Dashboard ein altes Relikt aus vergangenen Jahren des HA ist. Das bedeutet, es ist nicht direkt via SQL ansprechbar da es sich aus allen Ecken der Datenbank Werte zieht und die unabhängig berechnet. Das allerwichtigste ist (EIN GRUNDLEGENDER UNTERSCHIED ZU DER AKTUELLEN ARCHITEKTUR) das das Energie Dashboard mit anderen Klassifizierungen arbeitet. Nicht mit META_ID`s / ENTITIES / sondern mit sogenannten Types. Genau das ist der Angriffspunkt zur Manipulation. Da die Types überhaupt nichts mit den Sensoren zu tun haben. Die Entities im Energie-Dashboard sind quasi nur Namen ohne weiteren Bezug sondern nur zum Abgleich.
Genau hier ist der Schwachpunkt - den ich nutze um folgendes zu erreichen:
Man muss also die “Types” in die versteckte Struktur des Energie-Dashbord laden. Da ich ein ziemlich Fauler Hund bin.. habe ich dafür folgende Lösung für euch.. “ quick and dirty”
ANLEITUNG Step by Step
Schritt 1:
Geht auf dem neuen (leeren System) auf das Energie Dashboard WICHTIG nachdem ihr eure neuen Sensoren dort hinterlegt habt und die zumindest ein paar Werte geschrieben haben.
Schritt 2:
Wechselt zur Monatsansicht und ladet den aktuellen Monat als CSV auf euren Rechnen. WICHTIG es funktioniert ausschließlich (stabil) mit Monat-Exporten. Kopiert diese Datei den Skript-Ordner und nennt sie: master_energie_import.csv
Schritt 3:
Wechselt zu dem alten System (sofern vorhanden) oder macht eine neue (frische) Installation und wählt aus das ihr ein Backup wiederherstellen möchtet (eines das die Daten enthält die euch fehlen) WICHTIG: Es MUSS eine komplette neue Installation sein, da ein “ Drüberbügeln” eines alten Backups auf eine bestehende Installation nicht alles wieder herstellt. Die Backup- Funktion von HA ist gelinde gesagt “Mistig”.
Schritt 4:
Geht in das Energie Dashboard und wechslet in die Monats-Ansicht und ladet dieser herunter für jeden einzelnen Monate den ihr im Neuen System wieder importieren möchtet. kopiert die Dateien in den Ordner “ Import” in den Script-Ordner (es ist völlig egal wieviele CSV das sind..
Schiritt 5:
Nun beginnt die Magie, führt das Skript merge_script.py aus und innerhalb weniger Sekunden habt ihr eine passende und funktionierende Importdatei.
Schritt 6
Meldet euch via SMB auf euren HA an und und kopiert die gerade erstelle Datei “ master_energie_import.csv “ in den config Ordner. Zusätzlich kopiert ihr das 2 Skript “ ha_energy_import.py “ in den Ordner config. HINWEIS: Wenn ihr euren HA nicht in der Netzwerkumgebung seht, könnt ihr die beiden Dateien auch mit dem File-Explorer And-On in HA einfach “uploaden”.
Schritt 7
Nun kommt der kniffelige Part
verbindet euch via SSH mit eurem Ha zb: SSH NAME@192.67.46….. (deine IP)
Zur Sicherheit HA stoppen mit dem Befehl:
HA core stop
Wechselt dann das config Verzeichnis mit “ cd config” und führt das Skript aus “python ha_energy_import.py”
Los geht die wilde Fahrt…
Je nach Anzahl der Daten dauert es ca. 10 - xx Minuten. Am Ende steht da:
==================================================
Import abgeschlossen!
Importiert: 10276 Datenpunkte
Übersprungen: 1624 (bereits vorhanden)
Entities ohne ID: 0
Fehler: 8
==================================================
✓ Import erfolgreich abgeschlossen!
Du kannst Home Assistant jetzt wieder starten (falls gestoppt).
➜ config ha core restart
Processing… Done.
HINWEIS:
Ihr werdet immer auch Fehlermeldungen bekommen, dass ist völlig normal - Einfach ignorieren…
Zum Abschluss “ ha core restart” eingeben
Nun kurz zum Skript:
a) Ich übernehme keine Verantwortung für irgendwelche Schäden die Nutzung ist auf eigene Gefahr!
b) Leider kann ich es hier nicht anhängen… wer es haben möchte einfach PN und ich schicke es.
c) Wichtig, es gibt einen Unterschied zwischen MariaDB und der HADB, also bitte mitgeben welche DB ihr benutzt. Ich rate dringend zu der MariaDB da man mit der noch einiges Anderes anstellen kann - ziemlich cooler Sch**** der da möglich ist.
FAQ / Bekannte Probleme (User-Feedback)
Es kann zu unrealistischen Werten kommen / Außreißern. Die Entsprechenden " Daten / Werte" im Entwickler Menü unter Statistik korrigieren.
Kann ich das Skript unter Windows nutzen?
Ja, mittels der Eingabeaufforderung > die Befehle bleiben die Selben (bitte sicherstellen das Python installiert ist)
Mein Solarsensor hieß im alten System anders - ist das ein Problem?
Nein, da das Skript es korrigiert und nach type zuordnet.
im Neuen System heißen die Verbraucher anders, zum Beispiel Shelly-Wohnzimmer (zuvor Wohnzimmer) werden die erkannt?
Ja, das Merge-Skript fragt Dich ob du einen bisher unbekannten Sensor neu anlegen oder einem bestehenden zuordnen willst. HINWEIS: Neu Anlegen geht nicht immer je nach DB da eine META_ID erzeugt werden muss. Skript läuft aber weiter.
Kann ich auch Tageswerte exportieren und mit dem Skript importieren anstatt Monatswerte?
Ja und Nein, je nach Datenbank kann es den Riemann-Zerstören. Ich empfehle ganz klar die Monate zu bevorzugen - ist stabiler
Ich habe mit SQL die Datenbank angesehen und habe festgestellt das der Riemann nun auch negative Werte hat - wie kommt das ist das ein Problem?
Das ist normal, da das Energie-Dashboard eben nicht in die klassische DB schreibt, aber die Werte an den Riemann “übergibt”. Um Probleme zu vermeiden (das der Riemann abstürzt) übergibt das Skript die Werte absichtlich mit einem “Komma” und nicht einem “Punkt” also als String und nicht value. Sollten trotzdem Ausreißer entstehen, da der Riemann nicht korrekt kumuliert, einfach in mit den Entwickler Tools " Statistik) den entsprechenden Tag heraussuchen und von negativ in positiv ändern mit der korrekten Formatierung (Punkt statt Komma) das Dashboard rechnet dann neu und korrigiert es OHNE den Riemann zu beschädigen.
@harryp bitte den ersten Post löschen und diesen an den Anfang verschieben DANKE!