hadb ist eine Python-basierte Anwendung zur Analyse des Energieverbrauchs. Sie extrahiert Verbrauchsdaten aus einem Home Assistant Full Backup und überträgt diese in eine InfluxDB zur späteren Visualisierung. Die Daten werden in einer interaktiven Weboberfläche mit Hilfe von APEX-Charts dargestellt.
- Backup-Extraktion: Das Skript
extract_latest_ha_db.pykopiert die Dateihome-assistant_v2.dbaus dem aktuellsten Home Assistant Full Backup ins Projektverzeichnis\SQLite. - Datenübertragung: Das Skript
ha_to_influx.pyliest definierte Sensoren aussensorliste.txtund schreibt deren Energieverbrauchsdaten in die InfluxDBhadb. Die Influx Datenbank mit den Sensordaten wird inbackup_dir\influxdbgespeichert. - Visualisierung: Die Flask-Anwendung
energy_dashboard.pystellt die Verbrauchsdaten grafisch in Tages-, Monats- und Jahresansichten dar. In jeder Ansicht ist es möglich sich den Gesamtverbrauch der Einzelgeräte anzeigen zu lassen.
Alle Pfade und Parameter werden zentral über die Datei config.json verwaltet.
- Python 3.10 oder neuer
- InfluxDB 1.8 (läuft in einem Docker-Container auf dem Server
CL10NAS) - Zugriff auf Home Assistant Backups auf
backup_dir = \\CL10NAS\web\ha
Folgende Schritte sind notwendig, um von einem Ubuntu-System aus auf die Netzwerkfreigabe \\CL10NAS\web\ha zuzugreifen. Ziel ist es, die Freigabe dauerhaft oder temporär unter /mnt/cl10nas/ha zu mounten.
- Ubuntu System mit Internetverbindung
- Zugang zur Synology NAS (
CL10NAS) mit gültigem Benutzerkonto - Die Freigabe
webauf der NAS muss SMB aktiviert haben
sudo apt update
sudo apt install cifs-utils smbclientsudo mkdir -p /mnt/cl10nas/haListe verfügbare Freigaben auf der NAS:
smbclient -L //CL10NAS -U dein_benutzernameGib das Passwort bei Aufforderung ein.
sudo mount -t cifs //CL10NAS/web/ha /mnt/cl10nas/ha \
-o username=dein_benutzername,password='dein_passwort',iocharset=utf8,file_mode=0777,dir_mode=0777Hinweis: Falls dein Passwort Sonderzeichen wie
!enthält, unbedingt in einfache Hochkommas setzen.
Alternativ (sicherer): Erstelle eine Datei mit Zugangsdaten:
sudo nano /etc/samba/credentials_cl10nasInhalt:
username=dein_benutzername
password=dein_passwort
In der Datei /etc/samba/credentials_cl10nas darf das Passwort nicht in Hochkommas ('...' oder "...") gesetzt werden.
Datei absichern:
sudo chmod 600 /etc/samba/credentials_cl10nasDann mounten mit:
sudo mount -t cifs //CL10NAS/web/ha /mnt/cl10nas/ha \
-o credentials=/etc/samba/credentials_cl10nas,iocharset=utf8,file_mode=0777,dir_mode=0777Ergänze in der Datei /etc/fstab:
//CL10NAS/web/ha /mnt/cl10nas/ha cifs credentials=/etc/samba/credentials_cl10nas,iocharset=utf8,file_mode=0777,dir_mode=0777,nofail 0 0Anschließend testen:
sudo mount -als /mnt/cl10nas/haWenn du die Inhalte der Freigabe siehst, war der Vorgang erfolgreich.
- Falls
CL10NASnicht auflösbar ist, verwende stattdessen die IP-Adresse der NAS, z. B.://192.168.2.121/web/ha - Prüfe im NAS-Dienstmenü, ob SMB aktiviert ist
- Stelle sicher, dass der Benutzer Zugriffsrechte auf die Freigabe
webbesitzt
git clone https://github.com/SiggiS-HD/HA-Energy.git hadb
cd hadbOder ZIP-Datei entpacken und in das Verzeichnis wechseln.
python -m venv venv
source venv/bin/activate # unter Windows: venv\Scripts\activate
pip install -r requirements.txtBearbeite die Datei config.json, um folgende Parameter zu setzen:
{
"backup_dir_windows": "\\\\CL10NAS\\web\\ha",
"backup_dir_linux": "/mnt/cl10nas/ha",
"sqlite_dir": "SQLite",
"sensor_file": "sensorliste.txt",
"influxdb": {
"host": "CL10NAS",
"port": 8086,
"database": "hadb"
}
}docker run -d \
--name influxdb \
-p 8086:8086 \
-v backup_dir/influxdb/data:/var/lib/influxdb \
influxdb:1.8python create_influxdb_hadb.pypython ha_to_influx.pypython energy_dashboard.pyDie Anwendung ist dann unter http://127.0.0.1:5000 erreichbar.
Die Funktion letztes HA-Backup extrahieren und Verbrauchsdaten in InfluxDB schreiben kann im Energy Dashboard auch über den Button Lade Sensordaten ausgelöst werden. Im Projektverzeichnis wird dann die Datei log_lade_sensordaten.txt gespeichert, in der die ausgeführten Aktionen und mögliche Fehler protokolliert sind.
Die Anwendung verwendet folgende HTML-Vorlagen:
drilldown_day.html– Tagesansichtdrilldown_month.html– Monatsansichtdrilldown_year.html– Jahresansichttotal_per_sensor.html– Gesamtverbrauch der Einzelgeräte
hadb/
├── SQLite/ # Enthält extrahierte home-assistant_v2.db
├── templates/ # HTML-Vorlagen für Charts
├── sensorliste.txt # Liste der Sensoren
├── config.json # Zentrale Konfigurationsdatei
├── create_influxdb_hadb.py # Erstellt die InfluxDB
├── extract_latest_ha_db.py # Extrahiert Home Assistant DB aus Backup
├── ha_to_influx.py # Überträgt Daten in InfluxDB
├── energy_dashboard.py # Flask Web-App zur Visualisierung
├── requirements.txt # Abhängigkeiten
Dieses Projekt steht unter keiner spezifischen Lizenz. Nutzung auf eigenes Risiko.
Siegfried Schmidt