Add Pytes JS3 hybrid inverter (Modbus TCP) - #3994
DerWahreKlinki wants to merge 3 commits into
Conversation
Driver for the Pytes JS3 hybrid inverter (Solis-based RS485 register map, Modbus TCP): ESS with the inverter's work state machine and remote dispatch control (battery power set-point with bias/loss feed-forward and integral trim, or AC output control), battery values from the inverter's battery port and the BMS, PV strings as DC charger, the inverter's grid meter and backup port as meters. Features: EMS-side and inverter-side battery current limits (minimum rule), grid feed-in limitation from Core.Meta as inverter-side hardware backstop plus dynamic AC output cap (reg 43052) with a tolerance scaled to the limit, ripple control receiver support, failsafe timeout, a surplus search that keeps the PV from being locked at consumption level in AC output control, backup-port loads in AC output control, warnings that do not stop the EMS control. The readme documents both set-point modes and their measured behaviour. Verified on a live installation (5.1 kWh Pytes battery, 15 kVA inverter) from 2026-06 to 2026-09. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Codecov Report✅ All modified and coverable lines are covered by tests.
Additional details and impacted files@@ Coverage Diff @@
## develop #3994 +/- ##
==============================================
- Coverage 55.47% 25.93% -29.53%
==============================================
Files 3861 540 -3321
Lines 178080 16291 -161789
Branches 14818 2853 -11965
==============================================
- Hits 98771 4224 -94547
+ Misses 75424 11879 -63545
+ Partials 3885 188 -3697 🚀 New features to boost your workflow:
|
|
Question before we dive into the code: typically one would either configure
A mixture of both - like here - is usually not feasible or probably over-engineered. Why did you choose that path? |
|
Hi Stefan, Why a direct ESS and not BatteryInverter + Battery + Generic ESS: the Pytes JS3 Why still a separate We are open to change this if you prefer the plain pattern: folding Regards, |
That is very similar to how the GoodWe - and most likely every other hybrid battery inverter - behaves. I have rough plans to replace/extend the
The reason we have a separate GoodWeEss is, that there are two ways to configure a energy storage system with a GoodWe (or FENECON) battery inverter:
So this should be variant (2) and from my opinion we should remove the Battery implementation. |
Driver for the Pytes JS3 hybrid inverter (Solis-based RS485 register map, Modbus TCP): ESS with the inverter's work state machine and remote dispatch control (battery power set-point with bias/loss feed-forward and integral trim, or AC output control), battery values from the inverter's battery port and the BMS, PV strings as DC charger, the inverter's grid meter and backup port as meters.
Features: EMS-side and inverter-side battery current limits (minimum rule), grid feed-in limitation from Core.Meta as inverter-side hardware backstop plus dynamic AC output cap (reg 43052) with a tolerance scaled to the limit, ripple control receiver support, failsafe timeout, a surplus search that keeps the PV from being locked at consumption level in AC output control, backup-port loads in AC output control, warnings that do not stop the EMS control. The readme documents both set-point modes and their measured behaviour.
Verified on a live installation (5.1 kWh Pytes battery, 15 kVA inverter) from 2026-06 to 2026-09.