You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Jupiter: Add more fields and unit-tests for parsing (#223)
I upgraded to firmware 140 today and noticed a few changes.
One of the biggest changes is the possibility to set the depth of
discharge. Thanks to [this
tip](#216 (comment))
I was able to extract the command used to control it and expose it to
Home Assistant.
The BMS temperature now goes below 25 ºC and shows negative values.
Unlike other temperatures, it doesn't need to be converted from `uint8`
to `int8`, but still needs to be divided by 10. I also added parsing of
the inverter temperature (behaves the same as BMS temperature) and some
other fields that I could decode the meaning of.
In addition to that, I changed the way firmware is reported to HA: it's
now a quadruple of EMS, BMS, MPPT and inverter versions. This is how the
version is reported when you do a firmware upgrade:

And I also added unit-tests for Jupiter message parsing. Although, most
credit goes to LLM here, for saving me from having to type so many
`expect`s 😄
Here's a full list of changes:
- Firmware 140 introduced an option to set the depth of discharge. Add a
component that allows to control it.
- Parse BMS, MPPT, and inverter version fields. Change friendly name of
_Device Version_ to _EMS Version_.
- During firmware upgrade, the version is composed of four component
versions concatenated by the `.`: EMS.BMS.MPPT.INV. Expose firmware
version to Home Assistant in the same way.
- Add parsing of inverter fields: temperature, warning and error codes,
as well as grid voltage, current, power, power factor, and frequency. I
merely guessed that `g_` means "grid" from the reported values of
`g_vol` (voltage) and `g_fre` (frequency).
- Fix Surplus Feed-In toggle not applying.
- Fix Surplus Feed-In state when device is actively feeding in surplus.
- Add unit-tests for parsing Jupiter messages.
- Caught by unit-tests: fix BMS Charge Voltage field parsing (use
`bms:c_vol` instead of simply `c_vol`).
Copy file name to clipboardExpand all lines: CHANGELOG.md
+8Lines changed: 8 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -2,6 +2,14 @@
2
2
## [Next]
3
3
4
4
- Fix Home Assistant warning when surplus feed-in is unavailable on older HM firmware versions
5
+
- Jupiter: Add Depth of Discharge control (needs firmware 140+). It is a reverse of the battery charge, so setting it to 75% means that the battery will only feed-in power when charged above 25%.
6
+
- Jupiter: Add BMS, MPPT, and inverter version sensors. Change friendly name of _Device Version_ sensor to _EMS Version_, as reported by the Marstek app during firmware upgrade.
7
+
- Jupiter: The firmware reported to Home Assistant is now composed of four values: `<EMS version>.<BMS version>.<MPPT version>.<INV version>`.
8
+
- Jupiter: Add inverter metrics: temperature, error and warning codes, as well as grid voltage, current, power, power factor, and frequency.
9
+
- Jupiter: Fix parsing of negative temperatures.
10
+
- Jupiter: Fix Surplus Feed-In toggle not applying.
11
+
- Jupiter: Fix Surplus Feed-In state when device is actively feeding in surplus.
12
+
- Jupiter: Fix parsing of BMS Charge Voltage field.
0 commit comments