Lokale Home Assistant Integration für Envertech EVT2000SE Mikro-Wechselrichter – komplett ohne Cloud, direkt über das lokale TCP-Protokoll.
- Rein lokal – Keine Cloud-Abhängigkeit, keine Internetverbindung nötig
- Live-Daten aller 4 Mikroinverter-Kanäle (MI 0–3):
- DC-Spannung (V)
- AC-Leistung (W)
- Gesamtenergie (kWh)
- Temperatur (°C)
- AC-Spannung (V)
- Frequenz (Hz)
- Gesamtwerte über alle Kanäle (Gesamtleistung, Gesamtenergie)
- Leistungsbegrenzung setzen (600W – 2000W in festen Stufen)
- Firmware-Version auslesen
- Persistente TCP-Verbindung für maximale Zuverlässigkeit
- Config Flow – Einrichtung über die HA-Oberfläche
- Übersetzungen – Deutsch und Englisch
- Home Assistant 2024.1.0 oder neuer
- HACS installiert
- Envertech EVT2000SE Wechselrichter im lokalen Netzwerk
- Bekannte IP-Adresse und Seriennummer des Wechselrichters
Die Seriennummer steht auf dem Typenschild des Wechselrichters und wird genau so eingegeben, wie sie dort aufgedruckt ist (z.B. 3011156).
Die Seriennummer kann auch über die EnverView-App oder das Envertech-Portal abgelesen werden.
- HACS öffnen → Integrationen → Menü (⋮) → Benutzerdefinierte Repositories
- Repository-URL eingeben:
https://github.com/DEIN-USER/envertech-local - Kategorie: Integration
- Hinzufügen → Envertech EVT Local suchen → Herunterladen
- Home Assistant neu starten
- Den Ordner
custom_components/envertech_local/in dein Home Assistantconfig/custom_components/Verzeichnis kopieren - Home Assistant neu starten
- Einstellungen → Geräte & Dienste → Integration hinzufügen
- Nach "Envertech EVT Local" suchen
- IP-Adresse des Wechselrichters eingeben
- Seriennummer eingeben, genau wie auf dem Typenschild aufgedruckt
- Die Integration testet die Verbindung automatisch
| Parameter | Beschreibung | Beispiel |
|---|---|---|
| IP-Adresse | Lokale IP des Wechselrichters | 192.168.1.100 |
| Seriennummer | Seriennummer vom Typenschild | 3011156 |
Tipp: Vergib dem Wechselrichter eine feste IP-Adresse in deinem Router (DHCP-Reservierung), damit sich die IP nicht ändert.
Es werden 4 Geräte angelegt (MI 0 bis MI 3), jeweils mit:
| Sensor | Einheit | Device Class | Beschreibung |
|---|---|---|---|
| DC-Spannung | V | voltage |
Eingangsspannung vom Solarpanel |
| AC-Leistung | W | power |
Aktuelle Einspeiseleistung |
| Gesamtenergie | kWh | energy |
Kumulierte Energieproduktion |
| Temperatur | °C | temperature |
Interne Temperatur des MI |
| AC-Spannung | V | voltage |
Netzspannung |
| Frequenz | Hz | frequency |
Netzfrequenz |
| Spitzenleistung Heute | W | power |
Höchste AC-Leistung des aktuellen Tages, Reset um Mitternacht |
| Sensor | Einheit | Beschreibung |
|---|---|---|
| AC-Gesamtleistung | W | Summe aller 4 MI-Kanäle |
| Gesamtenergie | kWh | Summe aller 4 MI-Kanäle |
| Gesamtspitzenleistung Heute | W | Höchste Gesamt-AC-Leistung des aktuellen Tages, Reset um Mitternacht |
| Firmware-Version | – | z.B. "164.125" (standardmäßig deaktiviert) |
| Entität | Typ | Beschreibung |
|---|---|---|
| Leistungsbegrenzung | select |
Watt-Stufe wählen (600W–2000W) |
| Stufe |
|---|
| 600W |
| 800W |
| 1200W |
| 1400W |
| 1440W |
| 1600W |
| 1640W |
| 1800W |
| 2000W |
Die Integration enthält ein fertiges Lovelace-Dashboard unter lovelace/dashboard.yaml.
| Karte | Beschreibung |
|---|---|
| Energiefluss | Animierter Fluss von jedem Eingang über den Wechselrichter ins Netz (Power Flow Card Plus) |
| Live-Eingänge | 4er-Grid mit aktueller Leistung je Eingang (Mushroom Cards) |
| Gauge | Anzeige der Gesamtleistung mit Farbschwellen (0–2000W) |
| Heute / Gesamt | Heutige kWh, heutiger Ertrag (€), Gesamtertrag (€) |
| 24h Leistungsgraph | Watt-Verlauf aller 4 Eingänge + Gesamt, letzten 24h (ApexCharts) |
| Tagesertrag akkumuliert | kWh-Aufbau von 00:00 bis jetzt – täglich automatischer Reset (ApexCharts) |
| 7-Tage-Balken | Tagesproduktion der letzten 7 Tage mit Datenbeschriftung (ApexCharts) |
| Detailkarten | Alle Messwerte je Eingang (Spannung, Frequenz, Temperatur, Energie) |
| Steuerung | Leistungsbegrenzung setzen |
Vor der Nutzung einmalig in HACS installieren:
| Card | HACS-Suche |
|---|---|
| ApexCharts Card | ApexCharts Card |
| Mushroom | Mushroom |
| Power Flow Card Plus | Power Flow Card Plus |
- In Home Assistant: Einstellungen → Dashboards → Dashboard hinzufügen
- Namen vergeben (z.B.
Solar), Iconmdi:solar-power-variant - Dashboard öffnen → Menü (⋮) → Raw-Konfigurationseditor
- Inhalt von
lovelace/dashboard.yamleinfügen - Speichern
Schritt 1 – YOUR_SERIAL ersetzen:
Alle Vorkommen von YOUR_SERIAL durch deine Seriennummer (Kleinbuchstaben) ersetzen. Die genaue Entity-ID siehst du unter Einstellungen → Geräte & Dienste → Envertech → Entity anklicken.
Alle anderen Sensoren (Energie Heute, Ertrag Heute) werden automatisch von der Integration angelegt – kein manueller Helfer nötig.
Die Sensoren mit device_class: energy und state_class: total_increasing sind automatisch für das Home Assistant Energy Dashboard kompatibel. Füge dort die Gesamtenergie oder die einzelnen MI-Energiesensoren hinzu.
automation:
- alias: "Wechselrichter auf 800W begrenzen bei hohem Netzbezug"
trigger:
- platform: numeric_state
entity_id: sensor.stromzaehler_leistung
above: 3000
for:
minutes: 5
action:
- service: select.select_option
target:
entity_id: select.envertech_a1b2c3d4_leistungsbegrenzung
data:
option: "800W"automation:
- alias: "Wechselrichter Übertemperatur-Warnung"
trigger:
- platform: numeric_state
entity_id: sensor.envertech_input_port_1_temperatur
above: 70
action:
- service: notify.mobile_app
data:
title: "⚠️ Wechselrichter Warnung"
message: "MI 0 Temperatur: {{ states('sensor.envertech_input_port_1_temperatur') }}°C"type: entities
title: Envertech EVT2000SE
entities:
- entity: sensor.envertech_a1b2c3d4_ac_gesamtleistung
name: Gesamtleistung
- entity: sensor.envertech_a1b2c3d4_gesamtenergie
name: Gesamtenergie
- entity: select.envertech_a1b2c3d4_leistungsbegrenzung
name: Leistungsbegrenzung
- type: divider
- entity: sensor.envertech_input_port_1_ac_leistung
name: MI 0 Leistung
- entity: sensor.envertech_input_port_2_ac_leistung
name: MI 1 Leistung
- entity: sensor.envertech_input_port_3_ac_leistung
name: MI 2 Leistung
- entity: sensor.envertech_input_port_4_ac_leistung
name: MI 3 LeistungDie Integration kommuniziert direkt über TCP Port 14889 mit dem Wechselrichter. Das Protokoll ist proprietär und wurde durch Reverse Engineering der EnverView-App dokumentiert (siehe research/wechselrichter-api.md).
| Eigenschaft | Wert |
|---|---|
| Transport | TCP |
| Port | 14889 |
| TX-Encoding | ASCII-HEX |
| RX-Encoding | Binär |
| Poll-Intervall | 120 Sekunden |
| Verbindung | Persistent (eine TCP-Session) |
Die Integration hält eine persistente TCP-Verbindung zum Wechselrichter. Dies ist notwendig, da der WR bei häufigem Neuverbinden instabil wird. Auf einer bestehenden Verbindung antwortet er zuverlässig – auch nach längerer Idle-Zeit.
| Operation | Max Retries | Delay | Timeout |
|---|---|---|---|
| Live Data (0x1077) | 3 | 3s | 3s |
| Power Limit Read (0x1041) | 5 | 5s | 10s |
| TCP Connect | 1 | – | 5s |
Der EVT2000SE enthält 4 logische Mikroinverter (MI 0–3) mit fortlaufenden UIDs. Jeder MI hat ein eigenes Solarpanel-Input und liefert unabhängige Messwerte. Die Integration erstellt für jeden MI ein eigenes HA-Gerät mit zugehörigen Sensoren.
- Prüfe, ob der Wechselrichter eingeschaltet ist (produziert er gerade Strom?)
- Prüfe die IP-Adresse:
ping 192.168.1.100 - Prüfe, ob Port 14889 erreichbar ist:
nc -zv 192.168.1.100 14889 - Manche Wechselrichter sind nur tagsüber erreichbar (kein Standby-Modus)
- Stelle sicher, dass keine andere Anwendung (z.B. EnverView-App) gleichzeitig verbunden ist
- Der Wechselrichter braucht manchmal mehrere Sekunden zum Antworten
- Die Integration hat automatische Retries eingebaut
- Bei anhaltenden Problemen: HA neu starten, um die TCP-Verbindung zurückzusetzen
- Nachts liefern die Wechselrichter oft keine Daten (kein Strom = kein Netzwerk)
- Nach Sonnenaufgang sollten die Sensoren automatisch wieder verfügbar werden
- Prüfe die HA-Logs: Einstellungen → System → Protokolle → nach "envertech" filtern
- Die Seriennummer genau so eingeben, wie sie auf dem Typenschild steht
- Beispiel: Typenschild zeigt
3011156→ genau3011156eingeben
- Das Lesen der aktuellen Begrenzung ist unzuverlässig (~20% Erfolgsrate)
- Das Setzen funktioniert zuverlässig
- Nach dem Setzen wird der neue Wert direkt in der Integration aktualisiert
- Nur die definierten Stufen sind verfügbar (600, 800, 1200, 1400, 1440, 1600, 1640, 1800, 2000W)
custom_components/envertech_local/
├── __init__.py # Integration Setup & Entry Points
├── config_flow.py # Konfigurationsdialog
├── const.py # Konstanten
├── coordinator.py # Daten-Coordinator (Polling)
├── manifest.json # Integration Manifest
├── protocol.py # TCP-Protokoll Implementierung
├── select.py # Power Limit Select Entity
├── sensor.py # Sensor Entities
├── strings.json # UI-Strings (Basis)
└── translations/
├── de.json # Deutsche Übersetzung
└── en.json # Englische Übersetzung
┌─────────────────────────────────────────────┐
│ Home Assistant │
│ │
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ │
│ │ sensor.py │ │ select.py│ │config_flow│ │
│ └────┬─────┘ └────┬─────┘ └────┬─────┘ │
│ │ │ │ │
│ ┌────▼──────────────▼─────────────▼─────┐ │
│ │ coordinator.py │ │
│ │ (DataUpdateCoordinator, 120s) │ │
│ └────────────────┬──────────────────────┘ │
│ │ │
│ ┌────────────────▼──────────────────────┐ │
│ │ protocol.py │ │
│ │ (EnvertechConnection, TCP, async) │ │
│ └────────────────┬──────────────────────┘ │
└───────────────────┼─────────────────────────┘
│ TCP :14889
┌─────────▼──────────┐
│ EVT2000SE (LAN) │
│ MI 0 │ MI 1 │
│ MI 2 │ MI 3 │
└────────────────────┘
Die vollständige Protokolldokumentation befindet sich in research/wechselrichter-api.md.
| Gerät | Status |
|---|---|
| EVT2000SE | ✅ Voll unterstützt |
| EVT800 | |
| EVT1000 | |
| EVT400 | |
| Envertech Monitor/Gateway | ❌ Nicht unterstützt (anderer Kommunikationsablauf) |
Den vollständigen Changelog findest du in der Datei CHANGELOG.md.
MIT License
- Protokoll-Analyse basierend auf der decompilierten EnverView-App (v4.1.20)
- Live-Verifizierung gegen EVT2000SE (Firmware 164.125)
- PCAP-Mitschnitte mit PCAPdroid