v0.5.0 — Erstes Stable Release / First Stable Release
https://github.com/basecubedev/ems-solarflow-api-control/releases/tag/v0.5.0
Deutsch
v0.5.0 — Erstes Stable Release
Dieses Release ist ein wichtiger Meilenstein für das Projekt: v0.5.0 ist das erste Stable Release.
Die Software wird nicht mehr als experimentell eingeordnet. Die Regelung läuft inzwischen stabil im echten Betrieb und wurde durch viele Tests, Sonderfälle und reale Anlagenzustände weiter verbessert.
Trotzdem gilt: Jede Installation ist anders. Die Defaults sind ein sinnvoller Startpunkt, aber keine Garantie, dass das System ohne Prüfung zu jeder Anlage passt. Wer dieses EMS nutzt, bleibt selbst verantwortlich für Konfiguration, Betrieb und Überwachung der eigenen Installation.
Feature-Übersicht
Kurz zusammengefasst bietet das EMS aktuell unter anderem:
- Regelung mehrerer Zendure-Geräte über eine gemeinsame Hauslast
- Lastverteilung nach tatsächlicher Akku- und PV-Größe
- gleichmäßigeres Laden und Entladen unterschiedlich großer Akkus
- PV-Verteilung für unterschiedlich große PV-Flächen
pv_priority_factor für Ost-/Süd-/West-/Nord-Ausrichtungen
- CLI-Steuerung für Live-Anpassungen ohne Änderung der
config.json
- dynamische Geräteaktivierung und Leistungsgrenzen
- bessere PV-Nutzung, wenn einzelne Akkus voll sind
- Winter SOC Mode für dunklere Monate und Reserveverhalten
- Shelly-basierte Hauslastmessung
- optionale Home Assistant Integration
- Sicherheits- und Schutzfunktionen über konfigurierbare Limits
- Runtime-State für temporäre Overrides und externe Automationen
Highlights
Regelung nach echten Akku- und PV-Größen
Das zentrale Feature dieses Releases ist die verbesserte Regelung auf Basis der tatsächlichen Hardwaregrößen.
Das EMS behandelt Geräte nicht einfach pauschal gleich, sondern bildet besser ab, wie die Anlage wirklich aufgebaut ist:
- unterschiedliche Akkugrößen
- unterschiedliche PV-Größen
- unterschiedliche Wechselrichterlimits
- verschiedene Modulausrichtungen
- dynamische Hauslast
Wenn ein Akku größer ist als ein anderer, kann er entsprechend stärker an Lade- und Entladeleistung beteiligt werden. Kleinere Akkus werden dadurch nicht unnötig stark belastet, während größere Speicher besser genutzt werden können.
Gleichmäßigeres Laden und Entladen
Die Regelung versucht, die Akkus sinnvoll zusammenzuführen, ohne hart oder hektisch einzugreifen.
Ziel ist nicht, jeden Akku dauerhaft exakt auf demselben SOC zu halten. Stattdessen soll die Verteilung ruhig und nachvollziehbar bleiben. Wenn Akkus auseinanderlaufen, kann die Regelung sanft gegensteuern.
Gerade bei mehreren Geräten mit unterschiedlichen Akkugrößen ist das eines der wichtigsten Features.
PV-Verteilung passend zur Anlage
Auch die PV-Seite wird intelligenter berücksichtigt.
Wenn ein Gerät mehr PV-Leistung angeschlossen hat als ein anderes, kann die Regelung diese Unterschiede einbeziehen. Dadurch lassen sich Setups mit mehreren Zendure-Geräten deutlich besser betreiben als mit einer einfachen Gleichverteilung.
Das ist besonders hilfreich, wenn nicht jeder Wechselrichter gleich viel PV angeschlossen hat.
PV Priority Factor für unterschiedliche Modulausrichtungen
Den pv_priority_factor gibt es schon länger. Er ist dafür gedacht, unterschiedliche PV-Modulausrichtungen besser abzubilden.
Je nach Ausrichtung erzeugen Module zu unterschiedlichen Tageszeiten unterschiedlich viel Leistung:
- Ost-Module liefern eher morgens
- Süd-Module liefern stark um die Mittagszeit
- West-Module liefern eher nachmittags und abends
- Nord-Module liefern meist weniger, teilweise aber gleichmäßiger
Mit dem pv_priority_factor kann beeinflusst werden, welches Gerät bevorzugt PV-Leistung ins Haus abgeben soll. Dadurch kann das EMS besser zur realen Anlage passen, statt alle PV-Eingänge gleich zu behandeln.
Neu bzw. deutlich praktischer ist, dass der Faktor jetzt auch über die CLI gesetzt werden kann. Damit muss er nicht nur statisch in der Konfiguration stehen, sondern kann auch dynamisch angepasst werden.
Beispiele:
python3 emsctl.py device WR1 pv-priority-factor 1.2
python3 emsctl.py device WR2 pv-priority-factor 0.8
Damit sind auch externe Trigger möglich, zum Beispiel:
- zeitabhängige Anpassung morgens, mittags oder abends
- andere Faktoren je nach Sonnenstand
- Anpassung durch eigene Skripte
- Änderung bei bestimmten Anlagenzuständen
- saisonale oder wetterabhängige Logik
Das macht den Faktor deutlich flexibler, ohne die Grundregelung komplizierter zu machen.
Bessere PV-Nutzung bei vollem Akku
Wenn ein Akku sein maximales SOC erreicht hat, kann die Regelung die verfügbare Solarleistung dieses Geräts besser nutzen.
Dadurch können andere Geräte ihre Akkus weiter laden, während das volle Gerät bevorzugt seine aktuelle PV-Leistung ins Haus abgibt. Das ist besonders nützlich bei Setups mit mehreren Geräten und unterschiedlichen Akku-SOC-Ständen.
Winter SOC Mode
Der Winter SOC Mode bleibt ein wichtiges Feature.
Er hilft dabei, in dunkleren Monaten bewusster mit Akkustand und Reserveverhalten umzugehen. Gerade bei wenig PV-Ertrag ist es sinnvoll, wenn das EMS nicht einfach blind normales Sommerverhalten beibehält.
CLI für Live-Anpassungen
Die CLI ist inzwischen deutlich nützlicher geworden, um das System im Betrieb feinzujustieren.
Werte wie Geräteaktivierung, Leistungsgrenzen und pv_priority_factor können zur Laufzeit angepasst werden, ohne direkt die config.json ändern zu müssen.
Das ist praktisch für Tests, Automationen und externe Steuerlogik.
Warum dieses Release wichtig ist
Viele Steuerungen verteilen Leistung eher einfach oder behandeln Geräte weitgehend gleich.
Dieses Projekt geht inzwischen einen Schritt weiter: Es versucht, mehrere Zendure-Geräte passend zu ihrer echten Hardware zu regeln.
Das ist besonders interessant für Setups mit:
- unterschiedlich großen Akkus
- unterschiedlich großen PV-Flächen
- Ost-/Süd-/West-/Nord-Modulausrichtung
- mehreren Wechselrichtern
- dynamischer Hauslast
- Wunsch nach ruhigem und stabilem Regelverhalten
Genau darin liegt die Stärke dieses Releases.
Stable, aber weiterhin deine Verantwortung
Auch wenn dies das erste Stable Release ist, bleibt es ein Open-Source-Projekt, das echte Energiegeräte steuert.
Bitte prüfe deine Konfiguration sorgfältig, beobachte das Systemverhalten nach Änderungen und nutze nur Werte, die zu deiner eigenen Anlage passen.
Die Defaults sollen den Einstieg erleichtern. Sie ersetzen aber nicht das Verständnis der eigenen Installation.
English
v0.5.0 — First Stable Release
This release is an important milestone for the project: v0.5.0 is the first stable release.
The software is no longer considered experimental. The control logic has become stable in real-world operation and has improved through many tests, edge cases, and actual system behavior.
That said, every installation is different. The defaults are a useful starting point, but they are not a guarantee that the system will fit every setup without review. Anyone using this EMS remains responsible for configuring, operating, and monitoring their own installation.
Feature Overview
In short, the EMS currently provides:
- control of multiple Zendure devices based on a shared home load
- power distribution based on actual battery and PV size
- more balanced charging and discharging of differently sized batteries
- PV distribution for differently sized PV arrays
pv_priority_factor for east/south/west
orth module orientations
- CLI control for live adjustments without changing
config.json
- dynamic device activation and power limits
- better PV usage when individual batteries are full
- Winter SOC Mode for darker months and reserve behavior
- Shelly-based home load measurement
- optional Home Assistant integration
- safety and protection features through configurable limits
- runtime state for temporary overrides and external automation
Highlights
Control Based on Real Battery and PV Sizes
The main feature of this release is the improved control logic based on the actual hardware size of the system.
The EMS does not simply treat all devices equally anymore. Instead, it better reflects how the installation is actually built:
- different battery sizes
- different PV sizes
- different inverter limits
- different module orientations
- dynamic home load
If one battery is larger than another, it can take a larger share of charge and discharge power. Smaller batteries are not pushed unnecessarily hard, while larger batteries can be used more appropriately.
More Balanced Charging and Discharging
The control logic tries to bring batteries together in a sensible way without reacting too aggressively.
The goal is not to keep every battery at exactly the same SOC all the time. Instead, the EMS aims for a calm and understandable distribution. If batteries drift apart, the control logic can gently compensate.
This is one of the key features for setups with multiple devices and different battery sizes.
PV Distribution That Matches the Installation
The PV side is also handled more intelligently.
If one device has more PV connected than another, the control logic can take this into account. This makes multi-device Zendure setups much easier to operate than with a simple equal distribution.
This is especially useful when not every inverter has the same amount of PV connected.
PV Priority Factor for Different Module Orientations
The pv_priority_factor has existed for a while. It is intended to better represent different PV module orientations.
Depending on the orientation, modules produce power at different times of the day:
- east-facing modules produce more in the morning
- south-facing modules produce strongly around midday
- west-facing modules produce more in the afternoon and evening
- north-facing modules usually produce less, but sometimes more evenly
With the pv_priority_factor, you can influence which device should preferably provide PV power to the home. This allows the EMS to better match the real installation instead of treating all PV inputs the same.
What is new, or at least much more convenient now, is that the factor can also be set through the CLI. This means it no longer has to be only a static configuration value, but can also be adjusted dynamically.
Examples:
python3 emsctl.py device WR1 pv-priority-factor 1.2
python3 emsctl.py device WR2 pv-priority-factor 0.8
This also enables external triggers, for example:
- time-based adjustments in the morning, at midday, or in the evening
- different factors depending on sun position
- adjustments from custom scripts
- changes based on specific system states
- seasonal or weather-based logic
This makes the factor much more flexible without making the basic control logic more complicated.
Better Use of PV When a Battery Is Full
When a battery reaches its maximum SOC, the control logic can make better use of the available solar power from that device.
This allows other devices to continue charging their batteries, while the full device preferably supplies its current PV power to the home. This is especially useful in setups with multiple devices and different battery SOC levels.
Winter SOC Mode
The Winter SOC Mode remains an important feature.
It helps handle battery level and reserve behavior more consciously during darker months. Especially when PV yield is low, it makes sense for the EMS not to blindly keep using normal summer behavior.
CLI for Live Adjustments
The CLI has become much more useful for fine-tuning the system during operation.
Values such as device activation, power limits, and pv_priority_factor can be adjusted at runtime without directly changing the config.json.
This is useful for testing, automation, and external control logic.
Why This Release Matters
Many controllers distribute power in a rather simple way or treat devices mostly the same.
This project now goes one step further: It tries to control multiple Zendure devices according to their actual hardware.
This is especially useful for setups with:
- different battery sizes
- different PV sizes
- east/south/west
orth module orientations
- multiple inverters
- dynamic home load
- a preference for calm and stable control behavior
That is exactly where this release is strongest.
Stable, But Still Your Responsibility
Even though this is the first stable release, it remains an open-source project that controls real energy devices.
Please review your configuration carefully, observe the system behavior after changes, and only use values that match your own installation.
The defaults are meant to make getting started easier. They do not replace understanding your own system.