SolarMax · Home battery
MAX.STORAGE / MAX.STORAGE Ultimate Modbus register map
Default configuration
- Protocol
- Modbus TCP
- Port
- 502
- Unit ID
- 1
- Addressing
- 0-based
- Byte order
- Big endian
- Word order
- Low word first
Register map
| Address | Count | Name | Type | Unit | Scale | Access |
|---|---|---|---|---|---|---|
| 110 | 2 | PV power | Int32 | W | 1 | R |
| 114 | 2 | Battery power Signed; the sign gives the direction of power flow. evcc negates the raw value for its convention, so the raw value is left untouched here. | Int32 | W | 1 | R |
| 118 | 2 | Grid power Signed; the sign gives the direction of power flow (import or export). evcc negates the raw value to get its import-positive convention, so raw positive means export. | Int32 | W | 1 | R |
| 122 | 1 | Battery state of charge | Int16 | % | 1 | R |
Notes
SolarMax does not publish a Modbus register map for the MAX.STORAGE, and evcc's maintainers note in the review of their template that no official protocol description exists. The map is therefore taken from evcc's maintained template https://raw.githubusercontent.com/evcc-io/evcc/master/templates/definition/meter/solarmax-maxstorage.yaml, which users run against MAX.STORAGE and MAX.STORAGE Ultimate hardware (see https://github.com/evcc-io/evcc/discussions/34961). Modbus TCP on port 502, unit ID 1, big-endian bytes. The three 32-bit rows (110, 114, 118) are decoded as int32s by that template, i.e. low word first, which is why this seed declares word_order LowFirst; no scaling is applied beyond the sign description in each row. Only four values are covered, because those are the ones the template reads and confirms: PV power, battery power, grid power and state of charge - the three battery values the system publishes at all (state of charge, battery power, grid power) are all present. Battery control is deliberately left out: the template writes registers 140-142 to hold or force discharge, but the sources disagree on that block's layout - evcc writes 140, 141 and 142 as three independent 16-bit registers with 142 as a 60 s watchdog, while the earlier issue report https://github.com/evcc-io/evcc/issues/11199 describes 140 and 141 as 32-bit signed setpoints for charge and discharge power plus 142 as the watchdog, which cannot both be true. Per the no-invention rule those write registers are omitted rather than guessed. Battery control also needs the "Connectivity+" function released by SolarMax support (software 3.4.4 or later) and is a no-op without it. The whole map is unconfirmed by the vendor, so treat the addresses as evcc's working set rather than as documentation.