Die meisten Hausbesitzer verlassen sich beim PV-Monitoring auf bunte Grafiken in Hersteller-Apps. Doch wer sein Smart Home wirklich ernst nimmt, merkt schnell: Diese Daten sind oft geglättet, verzögert und in geschlossenen Cloud-Systemen gefangen. In diesem zweiten Teil meiner Smart-Home-Serie zeige ich dir, wie ich meinen Qcells Wechselrichter lokal per Django-App auslese, um eine der wichtigsten Fragen der Energiewende zu beantworten: Wie viel Strom verbraucht mein Haus wirklich – und was davon ist die Wärmepumpe?
Echtes Energiemanagement beginnt dort, wo die Cloud endet. Durch die lokale Abfrage der Rohdaten gewinne ich nicht nur Geschwindigkeit, sondern die absolute Datenhoheit. In Kombination mit den Werten meiner Nibe Wärmepumpe entsteht so ein gläsernes Haus, in dem kein Watt unentdeckt bleibt.
Lokal vs. Cloud: Der Kampf um die Echtzeit-Daten
Warum habe ich mir die Mühe gemacht, eine eigene Django-App zu schreiben, anstatt die offizielle Qcells-Integration zu nutzen? Die Antwort ist simpel: Latenz und Abhängigkeit. Cloud-APIs haben oft Rate-Limits und aktualisieren Daten im besten Fall im Minutentakt. Für eine intelligente Laststeuerung, wie ich sie in meinem Solar-Mining-Projekt nutze, brauche ich jedoch Sekundentaktung.
Mein Qcells-Wechselrichter (Q.HOME+ Serie) bietet eine lokale HTTP-Schnittstelle. Diese liefert JSON-Daten direkt im Heimnetzwerk. Das bedeutet:
- Zero Latency: Reaktionen auf Wolken oder Großverbraucher erfolgen in Echtzeit.
- Privacy by Design: Meine Verbrauchsdaten verlassen das Haus nur, wenn ich es will. Kein Hersteller weiß, wann ich koche oder dusche.
- Ausfallsicherheit: Selbst wenn mein Internetanschluss streikt, regelt das Smart Home die Energieflüsse lokal weiter.
Die Architektur: Python, Django und die REST-Schnittstelle
Anstatt Home Assistant direkt auf den Wechselrichter loszulassen, nutze ich mein Proxmox-System, um eine dedizierte Django-Instanz als „Data Broker“ zu betreiben. Warum dieser Umweg? Abstraktion und Datenstabilität!
Die Django-App fungiert als Normalisierungsschicht. Sie holt die kryptischen Rohwerte des Wechselrichters ab, validiert sie und speichert sie in einer PostgreSQL-Datenbank. Home Assistant nutzt standardmäßig SQLite, was bei riesigen Datenmengen über Jahre hinweg träge werden kann. PostgreSQL hingegen erlaubt mir komplexe SQL-Abfragen und historische Analysen in Millisekunden. Über ein Management-Kommando (Cronjob) wird der Wechselrichter alle zwei Minuten gepollt.
# poll_inverter.py (Logic Snippet)
import requests
from django.utils import timezone
from .models import InverterLog
def poll():
response = requests.get("http://192.168.178.X/api/real_time_data")
data = response.json()
# Speicherung in der persistenten Datenbank (PostgreSQL)
InverterLog.objects.create(
production_w=data['pv_power_w'],
consumption_w=data['house_consumption_w'],
grid_flow_w=data['grid_power_w'],
timestamp=timezone.now()
)Das „Unmasking“: Der echte Hausstromverbrauch
Hier kommen wir zum Kern des Projekts. In der Standard-Ansicht zeigt der Wechselrichter nur den „Hausverbrauch“ an. Dieser Wert ist jedoch trügerisch, da er die Wärmepumpe (den größten Einzelverbraucher) enthält. Wenn ich wissen will, ob meine Beleuchtung, mein Homeserver oder meine Haushaltsgeräte effizient laufen, muss ich die Wärmepumpe „herausrechnen“.
Die mathematische Trennung
Durch die Kombination der Modbus-Werte meiner Nibe-Wärmepumpe und der PV-Daten aus Django kann ich den echten Hausverbrauch $P_{Haus}$ wie folgt berechnen:
$$P_{Haus} = P_{Gesamt} - P_{WP}$$
In Home Assistant nutze ich dafür einen Template-Sensor. Das Ergebnis ist ein Aha-Erlebnis für jeden Energie-Optimierer. Plötzlich sieht man die Grundlast des Hauses in den Nachtstunden – oft verursacht durch Standby-Geräte, die wir im nächsten Schritt eliminieren können.
# Home Assistant Template
sensor:
- name: "Echter Hausverbrauch"
unit_of_measurement: "W"
device_class: power
state: >
{% set gesamt = states('sensor.qcells_house_consumption') | float(0) %}
{% set wp = states('sensor.nibe_current_power') | float(0) %}
{{ (gesamt - wp) | round(0) }}Analytics & Insights: Was die Daten verraten
Dank der Langzeitspeicherung in der PostgreSQL-Datenbank (thinkkreativ-DB) konnte ich spannende Muster identifizieren, die mir keine Standard-App gezeigt hätte:
- Nacht-Grundlast: Mein Haus benötigt ohne WP konstant ca. 350W. Davon entfallen etwa 150W auf die IT-Infrastruktur (Server, Switches, APs).
- WP-Peak: Während der Warmwasserbereitung schluckt die Wärmepumpe bis zu 3kW. Durch die Daten sehe ich nun genau, ob der Speicherverlust über Nacht einen zweiten Heizzyklus rechtfertigt.
- Verschleierte Verbräuche: Ich konnte einen defekten Kühlschrank im Keller identifizieren, dessen Kompressor ständig taktete und die Grundlast unnötig anhob.
Synergien: Smartes Geldmanagement durch Energiedaten
Dieses Projekt zahlt direkt auf mein virtuelles Finanz-System ein. Da ich nun weiß, wie viel jede kWh Hausstrom im Durchschnitt kostet (unter Berücksichtigung von PV-Eigenverbrauch und Netzbezug), kann ich die monatlichen Rücklagen für die Nebenkostenabrechnung auf den Euro genau automatisieren. Das ist Finanzoptimierung auf Code-Basis.
Fazit: Wissen ist (Spar-)Macht
Die lokale Integration meines Qcells-Wechselrichters war der Durchbruch für mein Smart Home. Weg von geschätzten Werten, hin zu mathematischer Präzision. Erst wer versteht, wohin die Energie fließt, kann sie gezielt steuern – sei es für den ökologischen Fußabdruck oder um das Budget im Griff zu behalten.
Hast du Fragen zur API-Struktur von Qcells oder möchtest du wissen, wie du die REST-Schnittstelle in Django absicherst? In meinem Portfolio findest du weitere Details zu meinen Web-Applikationen. Kontaktiere mich gerne über das Kontaktformular für eine individuelle Beratung zu deinem Monitoring-Projekt!