Teil 2: Echter Hausstromverbrauch messen
Meine PV-Anlage & Wechselrichter-App: Wie ich den echten Hausstromverbrauch berechne
Blogserie: Mein Smart Home mit Home Assistant – Teil 2
Einleitung: Warum ich eine eigene Wechselrichter-App gebaut habe
Nachdem ich meine Wärmepumpe vollständig über Modbus und MyUplink integriert hatte, wollte ich eine der wichtigsten und meistgestellten Fragen endlich korrekt beantworten:
„Wie viel verbraucht mein Haus wirklich – und wie groß ist der Anteil der Wärmepumpe daran?“
Die Antwort darauf erhält man nicht durch eine einzelne API oder ein einzelnes Gerät. Darum habe ich meine eigene Django-Wechselrichter-App gebaut, die meinen Qcells-Wechselrichter lokal abfragt, die Daten in meiner Datenbank speichert und über eine saubere Live-API an Home Assistant liefert.
Diese Architektur erlaubt es mir:
- PV-Erzeugung in Echtzeit auszulesen,
- Hausverbrauch & Netzfluss korrekt zu erfassen,
- die Wärmepumpenleistung abzuziehen,
- und dadurch den echten Hausstromverbrauch ohne WP zu berechnen.
1. Der Qcells Wechselrichter – und warum ich ihn lokal abfrage
Ich nutze einen Qcells Wechselrichter (Q.HOME+ oder vergleichbares Modell), der – wie die meisten modernen Geräte – eine lokale API bzw. lokale Datenquelle bereitstellt. Der Vorteil gegenüber Cloud-Diensten liegt auf der Hand:
- keine Verzögerung (Daten alle paar Sekunden verfügbar),
- keine Rate Limits oder sperrige Cloud-APIs,
- 100% Unabhängigkeit, auch bei Internetausfall,
- aktive Kontrolle über Format, Sicherheit und Datenfluss.
Qcells bietet hier (je nach Modell) zwei Varianten:
- Lokale JSON-Daten über das Webinterface des Wechselrichters
- Modbus TCP (Wikipedia)
Dokumentation (je nach Serie): Qcells Produktübersicht – Wechselrichter
Für meine Anwendung nutze ich die lokale JSON-Abfrage.
2. Wie die lokale Qcells API grundsätzlich funktioniert
Qcells stellt – ähnlich wie viele andere Wechselrichterhersteller – eine lokale, meist recht einfache HTTP-Schnittstelle bereit, über die man JSON-Daten abrufen kann.
Typische Struktur:
http://IP_DES_WECHSELRICHTERS/api/real_time_data
Der Endpoint liefert Werte wie:
pv_power_w– aktuelle PV-Leistunghouse_consumption_w– Hausverbrauchgrid_power_w– Einspeisung / Bezugbattery_soc_pct– Ladestand der Batteriebattery_power_w– laden oder entladen
Ein Beispiel einer von mir abgefragten Qcells-Antwort:
{
"pv_power_w": 473,
"house_consumption_w": 445,
"grid_power_w": -123,
"battery_power_w": 0,
"battery_soc_pct": 9
}
Diese Daten nutze ich dann weiter in meiner Django-App und Home Assistant.
3. Die Architektur: Von Qcells → Django → Home Assistant
Meine Energie-Datenpipeline sieht so aus:
- Qcells Wechselrichter liefert lokale Echtzeitdaten (JSON)
- Meine Django-Wechselrichter-App (Django Framework) holt die Werte regelmäßig ab, speichert sie in meiner Datenbank und stellt sie über eine API bereit
- Home Assistant ruft meine API über die REST-Integration ab
Das sorgt für:
- klare Datenstrukturen
- Performanz
- Cloud-Unabhängigkeit
- Langzeitspeicherung
4. Das Polling-Skript: Wie ich Qcells in die Datenbank schreibe
In meiner Django-App existiert ein Management-Kommando: poll_wechselrichter.
Es holt die Qcells Daten alle zwei Minuten ab und schreibt sie in die ThinkKreativ-Datenbank.
*/2 * * * * www-data /usr/bin/flock -n /tmp/wechselrichter.poll.lock \
/bin/sh -lc 'cd /home/thom7e/meinportfolio && \
/home/thom7e/meinportfolio/.venv/bin/python manage.py poll_wechselrichter \
>> /var/log/thinkkreativ/poll.log 2>&1'
5. Der Live-API-Endpunkt für Home Assistant
Home Assistant fragt nicht den Wechselrichter ab, sondern meine Django-API. Das hat enorme Vorteile:
- ich kontrolliere das Format
- ich filtere und normalisiere die Werte
- ich kann später weitere Daten hinzufügen, ohne HA umzubauen
Meine API liefert z. B.:
{
"pv_power_w": 473,
"house_consumption_w": 445,
"grid_power_w": -123,
"battery_power_w": 0,
"battery_soc_pct": 9
}
Home Assistant holt das so ab:
rest:
- resource: https://thinkkreativ.de/api/wechselrichter/live/
scan_interval: 5
sensor:
- name: "PV Leistung"
value_template: "{{ value_json.pv_power_w }}"
6. Der wichtigste Punkt: Der echte Hausstromverbrauch ohne Wärmepumpe
Für mich – und für die meisten Menschen, die ein Energiemonitoring beginnen – ist das der zentrale Aha-Moment:
Ich kann endlich sauber berechnen, wie viel mein Haus ohne Wärmepumpe verbraucht.
Das geht nur, wenn man die Daten aus:
- der Wärmepumpe (Modbus-Leistung),
- dem Qcells-Wechselrichter (Hausverbrauch),
kombiniert.
6.1 Die Formel
Hausstrom ohne WP = Hausverbrauch gesamt – WP-Leistung
Diese eine Zeile ist das Fundament meiner gesamten Energieanalyse.
6.2 Umsetzung in Home Assistant
sensor:
- platform: template
sensors:
hausstrom_ohne_wp:
friendly_name: "Hausverbrauch ohne Wärmepumpe"
unit_of_measurement: "W"
value_template: >
{% set haus = states('sensor.house_consumption_w') | float %}
{% set wp = states('sensor.wp_power_w') | float %}
{{ (haus - wp) | round(0) }}
6.3 Typische realistische Werte
- Nacht-Grundlast: 300–500 W
- Typischer Tagesverbrauch ohne WP: 7–10 kWh
- WP-Anteil: ca. 20–35 % im Winter
Beispiel eines Tages:
- Gesamtverbrauch: 10,13 kWh
- Wärmepumpe: 2,1 kWh
- Haus ohne WP: 8,03 kWh
Ohne diese Trennung ist ein sinnvolles Energiemanagement kaum möglich.
7. Warum meine Django-Datenbank langfristig ein Vorteil ist
Da ich alle Qcells-Daten nicht nur in HA nutze, sondern zusätzlich in meiner Django-Datenbank speichere, habe ich:
- eine unabhängige Langzeitdatenbasis,
- volle Exportmöglichkeiten,
- eigene Diagramme auf thinkkreativ.de,
- historische Analysen ohne Drittanbieter.
Selbst wenn Home Assistant ausfällt, bleiben die Daten erhalten.
8. Das Zusammenspiel: PV, Wärmepumpe & New Analytics
Durch die Kombination aus:
- lokaler Qcells-API,
- Modbus-Daten der Wärmepumpe,
- eigener ThinkKreativ-Datenbank,
- Home Assistant Visualisierung,
- und dem Sensor „Hausverbrauch ohne WP“
habe ich ein System, das Energieflüsse realistisch und minutiös korrekt abbildet.
Für mich ist das das Herz meiner gesamten Energieoptimierung.
Ausblick auf Teil 3
Im nächsten Teil der Serie zeige ich:
- wie ich Mining vollständig PV-geführt betreibe,
- wie ich Schwellwerte für Überschuss definiere,
- welche Faktoren ich nutze („Mining vs. Einspeisen“),
- und wie Home Assistant automatisch entscheidet, wann der Miner laufen darf.
Wenn du möchtest, erstelle ich jetzt sofort Teil 3 – ebenfalls in HTML.