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
Registers 1021 and 1037 look mislabelled on the legacy SPH profiles. If that's right, "Load Power" on those profiles is actually showing grid import, and the real load power is read and thrown away.
I have not changed anything. I need one confirmation from a real device first, and it costs about a minute.
✅ Confirmed — no further checks needed
@OmkoH confirmed this on an SPH 5000 (chart): Power to Load, Power to User and Grid Import Power all read 747 W simultaneously, tracking exactly across a sunny August morning down to a shared 29 W baseline. Genuine house load would have diverged from grid import the moment solar or the battery carried the house.
Register 1021 is grid import. The mapping is corrected on all three profiles:
Register
Was
Now
1021/1022
power_to_load
power_to_user_total — grid import
1037/1038
self_consumption_power (unused, discarded)
power_to_load — house load
If you're on one of the affected profiles, Load Power will begin reporting your actual house consumption rather than grid import, so it will stop dropping to zero while you run on solar or battery. Self Consumption is derived from Load Power and becomes correct as a result. Existing history is untouched; only new readings change.
Chart these two entities, both on the Load device:
Entity
Source
Growatt Load Power to Load
register 1021 — the one in question
Growatt Load Power to User
register 1015
Identical lines mean the mapping is wrong. Both are read directly from the inverter, so neither is derived from the other.
Grid Import Power is not a valid third comparison — it isn't read from the inverter, it's calculated from Power to User, so it matches that entity regardless of what 1021 contains. The original wording of this issue offered it as an alternative, which was a mistake on my part.
Which profiles
Profile
Affected
SPH 3-6kW
suspected
SPH 7-10kW
suspected
SPH/SPM 8000-10000TL-HU
suspected
SPH ... (V2.01) variants
not affected — already correct
SPH-TL3, SPA
not affected — already correct
Check under Settings → Devices & Services → Growatt Modbus → Configure which one you're on.
Why I think this
The storage range follows a regular pattern of four 8-register blocks: R phase, S phase, T phase, then Total. Our own docs/developer/protocol-v139.md, extracted from the Growatt Modbus Protocol II documentation, gives:
1015 Pactouser R H AC power to user R-phase
1021 PactouserTotal H AC power to user total <- grid import
1029 Pactogrid total H AC power to grid total <- grid export
1037 PLocalLoad total H INV power to local load total <- house load
The three legacy SPH profiles instead map 1021 as power_to_load and 1037 as self_consumption_power — and self_consumption_power isn't in any sensor group, so 1037 is read and discarded. Four independent sources say 1021 is grid import:
Our own SPH-TL3 and SPH V2.01 profiles, which already map it correctly.
The Homey Growatt app, an independent implementation: pactousertotal: [1021, 'import from grid to user total'], totalhouseload: [1037, 'Total house Load'].
Why the symptom is subtle
On a single-phase inverter, R phase and Total are the same measurement. So register 1015 (power_to_user, mapped correctly) and register 1021 (power_to_load, suspected wrong) would return identical values — which is exactly the signature above.
Both numbers look plausible on a dashboard. Grid import is a real quantity; it just isn't your house load. The likely visible symptom is Load Power sitting at zero whenever you're not importing — during a sunny afternoon, or overnight on battery — while the house is obviously still consuming.
If you've ever wondered why Load Power drops to nothing while your battery discharges, this would explain it.
What happens next
If it's confirmed, the fix is straightforward: 1021 becomes power_to_user, 1037 becomes power_to_load, matching what the V2.01 profiles already do. It will change what your Load Power sensor reports, so I want evidence before touching profiles this widely used rather than after.
If it's not confirmed on your firmware, that's equally valuable and I'll say so here.
Tagging a few people who've reported on single-phase SPH systems, in case you're willing to look — no obligation, and the check is genuinely a one-minute glance at History:
@OmkoH — your #326 is what added these registers to the 3-6kW and 7-10kW profiles, so you're the closest thing to a primary source here. @ian-mcarthur-oxford — you looked at SPH grid power flow in #302, so you'll know immediately whether these two track each other. @alanmk — SPH 3-6kW on DTC 3502 from #337. @De4dCert — SPH 3600TL BL-UP from #333.
If you're on an SPH-TL3, SPA, or a V2.01 profile, this doesn't affect you.
Summary
Registers 1021 and 1037 look mislabelled on the legacy SPH profiles. If that's right, "Load Power" on those profiles is actually showing grid import, and the real load power is read and thrown away.
I have not changed anything. I need one confirmation from a real device first, and it costs about a minute.
✅ Confirmed — no further checks needed
@OmkoH confirmed this on an SPH 5000 (chart): Power to Load, Power to User and Grid Import Power all read 747 W simultaneously, tracking exactly across a sunny August morning down to a shared 29 W baseline. Genuine house load would have diverged from grid import the moment solar or the battery carried the house.
Register 1021 is grid import. The mapping is corrected on all three profiles:
power_to_loadpower_to_user_total— grid importself_consumption_power(unused, discarded)power_to_load— house loadIf you're on one of the affected profiles, Load Power will begin reporting your actual house consumption rather than grid import, so it will stop dropping to zero while you run on solar or battery. Self Consumption is derived from Load Power and becomes correct as a result. Existing history is untouched; only new readings change.
Thanks to @ian-mcarthur-oxford, @alanmk and @De4dCert as well — no need to check anything now, this is settled.
The original check, kept for the record
Chart these two entities, both on the Load device:
Identical lines mean the mapping is wrong. Both are read directly from the inverter, so neither is derived from the other.
Grid Import Power is not a valid third comparison — it isn't read from the inverter, it's calculated from Power to User, so it matches that entity regardless of what 1021 contains. The original wording of this issue offered it as an alternative, which was a mistake on my part.
Which profiles
SPH 3-6kWSPH 7-10kWSPH/SPM 8000-10000TL-HUSPH ... (V2.01)variantsSPH-TL3,SPACheck under Settings → Devices & Services → Growatt Modbus → Configure which one you're on.
Why I think this
The storage range follows a regular pattern of four 8-register blocks: R phase, S phase, T phase, then Total. Our own
docs/developer/protocol-v139.md, extracted from the Growatt Modbus Protocol II documentation, gives:The three legacy SPH profiles instead map 1021 as
power_to_loadand 1037 asself_consumption_power— andself_consumption_powerisn't in any sensor group, so 1037 is read and discarded. Four independent sources say 1021 is grid import:battery discharge + grid import = loadheld across every scan).pactousertotal: [1021, 'import from grid to user total'],totalhouseload: [1037, 'Total house Load'].Why the symptom is subtle
On a single-phase inverter, R phase and Total are the same measurement. So register 1015 (
power_to_user, mapped correctly) and register 1021 (power_to_load, suspected wrong) would return identical values — which is exactly the signature above.Both numbers look plausible on a dashboard. Grid import is a real quantity; it just isn't your house load. The likely visible symptom is Load Power sitting at zero whenever you're not importing — during a sunny afternoon, or overnight on battery — while the house is obviously still consuming.
If you've ever wondered why Load Power drops to nothing while your battery discharges, this would explain it.
What happens next
If it's confirmed, the fix is straightforward: 1021 becomes
power_to_user, 1037 becomespower_to_load, matching what the V2.01 profiles already do. It will change what your Load Power sensor reports, so I want evidence before touching profiles this widely used rather than after.If it's not confirmed on your firmware, that's equally valuable and I'll say so here.
Tagging a few people who've reported on single-phase SPH systems, in case you're willing to look — no obligation, and the check is genuinely a one-minute glance at History:
@OmkoH — your #326 is what added these registers to the 3-6kW and 7-10kW profiles, so you're the closest thing to a primary source here.
@ian-mcarthur-oxford — you looked at SPH grid power flow in #302, so you'll know immediately whether these two track each other.
@alanmk — SPH 3-6kW on DTC 3502 from #337.
@De4dCert — SPH 3600TL BL-UP from #333.
If you're on an SPH-TL3, SPA, or a V2.01 profile, this doesn't affect you.