Dieses Projekt bietet eine hochoptimierte, 100 % lokale Anbindung für das Marstek Jupiter C+ Speichersystem. Während Standard-Apps oft träge sind oder Cloud-Zwang bedeuten, ermöglicht dieses Projekt eine blitzschnelle Auswertung und smarte Zusatzfunktionen direkt in Home Assistant.
- Intelligente Nacht- & Standby-Logik: Erkennt automatisch, wenn keine Sonne scheint oder keine Last anliegt. Durch einen 15W-Schwellenwert werden Messungenauigkeiten im Leerlauf ignoriert. Das Dashboard zeigt nachts sauber "Standby" an.
- Dynamische Restlaufzeit: Basierend auf der gewählten Akkugröße und dem Hausverbrauch berechnet der ESP32 sekundengenau, wie lange der Speicher noch durchhält (Anzeige in
hundmin). - Integrierte WebUI: Der ESP32 bietet eine eigene Webseite. So können alle Live-Daten auch ohne Home Assistant direkt im Browser eingesehen werden.
- Präzises 4-String Monitoring: Jeder der 4 PV-Eingänge wird separat überwacht.
- Stabilisierte Solar-Messung: Die Solarproduktion wird für maximale Stabilität über die Summe der Einzelstrings (PV1-PV4) berechnet und integriert.
Dieses Projekt ist darauf optimiert, deinen Speicher perfekt im offiziellen Energie-Dashboard von Home Assistant abzubilden. Für maximale Stabilität nutzen wir hierfür die summierten Sensoren:
- Solarproduktion:
sensor.marstek_jupiter_c_solar_gesamtleistung - Batteriespeicher (Eingehend):
sensor.marstek_jupiter_c_batterie_energie_geladen - Batteriespeicher (Ausgehend):
sensor.marstek_jupiter_c_batterie_energie_entladen
Für den Aufbau werden folgende Komponenten benötigt:
- ESP32 DevKitC (Oder vergleichbarer ESP32 Microcontroller).
- RS485-zu-TTL Adapter: Amazon Link (Wichtig für die Kommunikation).
- RS485-Verbindungsstecker: Amazon Link (Passt exakt in den Modbus-Port des Marstek Jupiter C+).
- 🖨️ 3D-Druck Gehäuse: Für einen sauberen Aufbau findet ihr hier die passende STL-Datei (Download) für den ESP32 und den RS485-Adapter.
Der ESP32 verfügt über ein eingebautes Web-Interface. Dies ist besonders nützlich für die Ersteinrichtung oder wenn Home Assistant einmal nicht erreichbar sein sollte.
- Zugriff: Gib einfach die IP-Adresse deines ESP32 (siehe Installation) in deinen Webbrowser ein (z.B.
http://192.168.201.93). - Funktionen: Du siehst dort alle aktuellen Sensorwerte in Echtzeit und kannst das System bei Bedarf neu starten.
Diese Konfiguration nutzt eine secrets.yaml, um deine WLAN-Daten zu schützen. Erstelle im ESPHome-Verzeichnis eine Datei namens secrets.yaml:
wifi_ssid: "DEINE_SSID"
wifi_password: "DEIN_PASSWORT"
esp_ip: "IP-ADRESSE DES ESP32"
esp_gateway: "192.168.201.1"
esp_subnet: "255.255.255.0"In der Datei marstek-jupiter-c-modbus.yaml ist in Zeile 44 eine feste IP-Adresse über die secrets.yaml vordefiniert.
- Anpassen: Ändere diese Adresse auf eine freie IP in deinem Netzwerk.
- DHCP: Falls du keine feste IP möchtest, lösche die Zeilen 43 bis 46 (
manual_ipBlock in dermarstek-jupiter-c-modbus.yaml).
- Lade die YAML-Dateien in deinen ESPHome-Ordner.
- Flashe den ESP32.
- Wähle in Home Assistant nach dem ersten Start unter Einstellungen/Geräte&Dienste/ESPHome:
- Akkugröße Auswahl (
select.marstek_jupiter_c_akkugrosse_auswahl) - Entladestopp Reserve (
number.marstek_jupiter_c_batterie_entladestopp_reserve) - WICHTIG: Die Batterie Entladestopp Reserve muss zwingend manuell eingetragen werden! Dieser Wert dient als Basis für die korrekte Berechnung der Restlaufzeit.
- Akkugröße Auswahl (
So sieht die fertige Integration im Home Assistant aus (als Beipiel):
👉 Hier klicken für den Dashboard-Code (YAML)
type: sections
sections:
- type: grid
cards:
- type: vertical-stack
cards:
- type: heading
heading: ⚡ Marstek Jupiter C+
heading_style: title
- type: grid
columns: 4
square: false
cards:
- type: custom:mushroom-template-card
layout: vertical
entity: sensor.marstek_jupiter_c_solar_gesamtleistung
primary: '{{ states(entity) | float(0) | round(0) }} W'
secondary: >
{% set lade = states('sensor.marstek_jupiter_c_batterie_ladeleistung') | float(0) %}
{% if lade > 0 %}↑ {{ lade | round(0) }}W{% else %}PV Ertrag{% endif %}
icon: mdi:solar-power
icon_color: orange
- type: custom:mushroom-template-card
entity: sensor.marstek_jupiter_c_batterie_soc
primary: '{{ states(entity) | float(0) | round(0) }} %'
secondary: '{{ states("sensor.marstek_jupiter_c_batterie_status_restzeit") }}'
icon: |
{% set soc = states(entity) | int(0) %}
{% if soc > 90 %} mdi:battery
{% elif soc > 70 %} mdi:battery-70
{% elif soc > 40 %} mdi:battery-40
{% else %} mdi:battery-20
{% endif %}
icon_color: >
{% set lade = states('sensor.marstek_jupiter_c_batterie_ladeleistung') | float(0) %}
{% if lade > 0 %} cyan {% elif states(entity) | int(0) > 20 %} green {% else %} red {% endif %}
vertical: true
- type: custom:mushroom-template-card
layout: vertical
entity: sensor.marstek_jupiter_c_netz_ausgangsleistung
primary: '{{ states(entity) | float(0) | round(0) }} W'
secondary: 'Haus Netz'
icon: mdi:transmission-tower
icon_color: blue
- type: custom:mushroom-template-card
layout: vertical
entity: sensor.marstek_jupiter_c_solar_erzeugung_gesamt
primary: '{{ states(entity) | float(0) | round(2) }} kWh'
secondary: Tag
icon: mdi:lightning-bolt
icon_color: purpleHinweis: Dieses Projekt ist von der Community für die Community. Nutze es, um deine Energiewende ein Stück smarter zu machen! 🚀🔋

