Skip to content

Commit 893a575

Browse files
0xAHAclaude
andcommitted
docs: Priority Mode drives the first time slot, and correct the SPH slot names
Two gaps found via #388. The firmware implements Priority Mode by toggling the enable bit of the first slot for that mode, in the same second - Grid First Period 1 Enable (1082) for Grid First. A reporter saw that entity change on its own, reasonably concluded something was wrong, and opened an issue. It is documented now, with the consequence that matters: the linked slot needs a 00:00-23:59 window or the mode only applies inside whatever window is set. Confirmed on an SPH 4.6E from HA's activity log across two cycles. The Battery First linkage follows the same pattern and is marked expected, not confirmed. Also: v1.6.7 renamed these entities and the docs still used the old names, so the tables did not match the UI. The renaming makes the linkage legible - 'Period 7' and 'Period 1' looked arbitrary; 'Grid First Period 1' and 'Battery First Period 1' are obviously the first slot of each mode. Flagged rather than fixed: the off-peak example pairs Grid First priority with a Battery First window. That is what it has always said and may be correct, but it has not been re-verified on hardware. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
1 parent 22ce68d commit 893a575

1 file changed

Lines changed: 55 additions & 13 deletions

File tree

docs/controls/battery-scheduling.md

Lines changed: 55 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -210,6 +210,37 @@ sets the global default:
210210
Time periods override this global default within defined windows. Periods use separate
211211
enable registers (not bit-packed like MOD).
212212

213+
!!! warning "Priority Mode drives the first time slot — the firmware, not the integration"
214+
215+
Setting **Priority Mode** does not act alone. On SPH firmware the inverter implements it
216+
by toggling the **enable bit of the first slot for that mode**, in the same second:
217+
218+
```
219+
08:00:37 Priority Mode -> Grid First
220+
08:00:37 Grid First Period 1 Enable -> Enabled
221+
08:15:22 Priority Mode -> Load First
222+
08:15:22 Grid First Period 1 Enable -> Disabled
223+
```
224+
225+
| Priority Mode | Slot the firmware toggles | Register |
226+
|---|---|---|
227+
| Grid First | Grid First Period 1 Enable | 1082 |
228+
| Battery First | Battery First Period 1 Enable | 1102 |
229+
230+
Two consequences:
231+
232+
- **That enable entity changing on its own is not a fault**, and not the Growatt cloud
233+
overwriting you. It is the inverter doing what you asked.
234+
- **Configure that first slot as `00:00`–`23:59`** and leave its enable alone. If the
235+
window is narrow, or unset, the mode only takes effect inside that window — which
236+
looks like Priority Mode being ignored at other times of day.
237+
238+
Confirmed on an SPH 4.6E (firmware RBBA060406/ZCBC-0006) from Home Assistant's own
239+
activity log across two full cycles, reported on
240+
[#388](https://github.com/0xAHA/Growatt_ModbusTCP/issues/388). The Grid First linkage is
241+
directly observed; the Battery First one follows the same pattern and is expected rather
242+
than confirmed.
243+
213244
![SPH time period layout](../images/sph-time-periods.svg)
214245

215246
### Available Time Period Entities
@@ -218,12 +249,16 @@ enable registers (not bit-packed like MOD).
218249

219250
| Entity | Register | Purpose |
220251
|--------|----------|---------|
221-
| Time Period 1 Start / End | 1100, 1101 | AC charge window 1 |
222-
| Time Period 1 Enable | 1102 | Enable/disable slot 1 |
223-
| Time Period 2 Start / End | 1103, 1104 | AC charge window 2 |
224-
| Time Period 2 Enable | 1105 | Enable/disable slot 2 |
225-
| Time Period 3 Start / End | 1106, 1107 | AC charge window 3 |
226-
| Time Period 3 Enable | 1108 | Enable/disable slot 3 |
252+
| Battery First Period 1 Start / End | 1100, 1101 | Battery First window 1 |
253+
| Battery First Period 1 Enable | 1102 | Enable/disable slot 1 |
254+
| Battery First Period 2 Start / End | 1103, 1104 | Battery First window 2 |
255+
| Battery First Period 2 Enable | 1105 | Enable/disable slot 2 |
256+
| Battery First Period 3 Start / End | 1106, 1107 | Battery First window 3 |
257+
| Battery First Period 3 Enable | 1108 | Enable/disable slot 3 |
258+
259+
> **Renamed in v1.6.7.** These displayed as "Time Period 1–3" and the Grid First slots below
260+
> as "Grid First Time Period 7–9", which matched neither the Growatt app nor the protocol.
261+
> Entity IDs are unchanged, so automations still work — only the displayed names moved.
227262
228263
#### Battery First Extended Slots 4–6 (new in v0.6.8)
229264

@@ -240,10 +275,10 @@ enable registers (not bit-packed like MOD).
240275

241276
| Entity | Register | Purpose |
242277
|--------|----------|---------|
243-
| Grid First Time Period 4–6 Start/End | 1026–1033 | Grid First windows 4–6 |
244-
| Grid First Time Period 4–6 Enable | 1028, 1031, 1034 | Enable each slot |
245-
| Grid First Time Period 7–9 Start/End | 1080–1087 | Grid First windows 7–9 |
246-
| Grid First Time Period 7–9 Enable | 1082, 1085, 1088 | Enable each slot |
278+
| Grid First Period 4–6 Start/End | 1026–1033 | Grid First windows 4–6 |
279+
| Grid First Period 4–6 Enable | 1028, 1031, 1034 | Enable each slot |
280+
| Grid First Period 1–3 Start/End | 1080–1087 | Grid First windows 1–3 |
281+
| Grid First Period 1–3 Enable | 1082, 1085, 1088 | Enable each slot |
247282

248283
> **SPH HU note:** The SPH 8000–10000 TL-HU uses a different holding register architecture.
249284
> Battery management registers (1044, 1070–1071, 1090–1108) return Modbus exceptions on HU
@@ -274,11 +309,18 @@ For each active slot:
274309
#### Example: Off-Peak Grid Charging (22:00–06:00)
275310

276311
Set **Priority Mode** to `Grid First`, then:
277-
- Time Period 1 Start: `22:00`
278-
- Time Period 1 End: `06:00`
279-
- Time Period 1 Enable: `Enabled`
312+
- Battery First Period 1 Start: `22:00`
313+
- Battery First Period 1 End: `06:00`
314+
- Battery First Period 1 Enable: `Enabled`
280315
- All other periods: Disabled
281316

317+
> **Check this against your own inverter before relying on it.** Registers 1100–1102 are the
318+
> *Battery First* slot 1, so this example pairs a Grid First priority with a Battery First
319+
> window. That combination is what was originally documented here and it may well be how SPH
320+
> firmware expects grid charging to be scheduled — but it has not been re-verified on
321+
> hardware since the slots were correctly named in v1.6.7. If your inverter behaves
322+
> differently, please say so on the issue tracker.
323+
282324
```yaml
283325
automation:
284326
- alias: "SPH — Arm off-peak grid charge"

0 commit comments

Comments
 (0)