Skip to content

[Enhancement]: Extreme poll profile — meter/CT + PV live only #457

Description

@Pho3niX90

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

  1. Is extreme_only boolean better, or a single poll_profile select (full / essential / extreme)?
  2. Is 2s the right floor, or prefer 3s / keep 10s and only shrink the group set?
  3. Should ONCE identity groups stay in extreme mode?
  4. String inverter equivalent later?
  5. Dual-meter block (33300) in extreme, or never?
  6. 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

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions