Summary
Proposal for a new extreme (minimal) poll profile aimed at tight control loops — e.g. export / backflow limiting against grid voltage rise (#451).
This is not a request to lower the global poll_interval_fast minimum to 1s for everyone. Solis protocol timing and our grouped Modbus reads make that unsafe on a full sensor set.
Why not just lower the global min?
Per RS485_MODBUS ESINV-33000ID Hybrid Inverter V3.1 §3.2:
More than 300ms communications frame interval is required. Recommended max data frame 100 bytes (50 registers).
Each sensor group is one Modbus frame. A typical hybrid FAST pass is ~11–12 groups → roughly 3.3–3.6s of spacing alone, plus transfer/dongle latency, plus normal/slow polls and writes on the same link.
Disabling HA entities does not stop group reads. essential_only already helps; this proposal goes further for control-loop users.
Proposed behaviour
New option (name TBD): extreme_only (or a poll profile enum: full / essential / extreme).
When enabled, only register these groups:
| Group |
Role |
Entities (live) |
33049 |
Solar |
PV Voltage 1–4, PV Current 1–4, Total PV Power |
33126 |
Meter / CT |
Meter Voltage, Meter Current, Meter Active Power |
Also keep ONCE identity groups (33000, 35000) so the HA device/serial setup still works.
Out of this profile: inverter A/B/C phase voltage (33070), battery, energy totals (as dedicated groups), settings entities (number/switch/select/time). Writes remain via existing services (solis_write_holding_register, dispatch, etc.).
Why meter, not phase voltage? For DNO / house voltage rise, CT-clamp meter voltage is the signal that matters more than inverter AC phase voltage.
Note: 33126 also includes Meter Total Active Energy in the same Modbus block — those registers are still read (can't skip mid-block without splitting the group).
Poll interval floor (proposal)
- Default / full / essential: keep
poll_interval_fast min = 10s
- Extreme only: allow down to 2s (2 × ~300ms + transfer + occasional writes; not 1s)
Open questions for maintainers / community
- Is
extreme_only boolean better, or a single poll_profile select (full / essential / extreme)?
- Is 2s the right floor, or prefer 3s / keep 10s and only shrink the group set?
- Should ONCE identity groups stay in extreme mode?
- String inverter equivalent later?
- Dual-meter block (
33300) in extreme, or never?
- Anything else that must be in the minimal set for real-world export/voltage automations (e.g. household load, battery power)?
Workaround today (#451)
Until/unless this ships:
- Use
essential_only + disable unused features to shrink bus load
- Drive the control loop with services:
solis_read_register / solis_write_holding_register (and solis_dispatch where firmware supports it)
Related
Summary
Proposal for a new extreme (minimal) poll profile aimed at tight control loops — e.g. export / backflow limiting against grid voltage rise (#451).
This is not a request to lower the global
poll_interval_fastminimum to 1s for everyone. Solis protocol timing and our grouped Modbus reads make that unsafe on a full sensor set.Why not just lower the global min?
Per RS485_MODBUS ESINV-33000ID Hybrid Inverter V3.1 §3.2:
Each sensor group is one Modbus frame. A typical hybrid FAST pass is ~11–12 groups → roughly 3.3–3.6s of spacing alone, plus transfer/dongle latency, plus normal/slow polls and writes on the same link.
Disabling HA entities does not stop group reads.
essential_onlyalready helps; this proposal goes further for control-loop users.Proposed behaviour
New option (name TBD):
extreme_only(or a poll profile enum:full/essential/extreme).When enabled, only register these groups:
3304933126Also keep ONCE identity groups (
33000,35000) so the HA device/serial setup still works.Out of this profile: inverter A/B/C phase voltage (
33070), battery, energy totals (as dedicated groups), settings entities (number/switch/select/time). Writes remain via existing services (solis_write_holding_register, dispatch, etc.).Why meter, not phase voltage? For DNO / house voltage rise, CT-clamp meter voltage is the signal that matters more than inverter AC phase voltage.
Note:
33126also includes Meter Total Active Energy in the same Modbus block — those registers are still read (can't skip mid-block without splitting the group).Poll interval floor (proposal)
poll_interval_fastmin = 10sOpen questions for maintainers / community
extreme_onlyboolean better, or a singlepoll_profileselect (full/essential/extreme)?33300) in extreme, or never?Workaround today (#451)
Until/unless this ships:
essential_only+ disable unused features to shrink bus loadsolis_read_register/solis_write_holding_register(andsolis_dispatchwhere firmware supports it)Related