Skip to content

v4.0.0b1

Pre-release
Pre-release

Choose a tag to compare

@barneyonline barneyonline released this 13 Jul 11:06
043c8ea

🚧 Breaking changes

  • Changed degraded-service Repair notifications from implicit default-on to
    default-off for entries without a saved preference. Existing degraded-service
    Repair issues are cleared while this option is disabled; re-enable them under
    Options > Notifications. System-event Repair notifications are also default-off.
  • Made manual Grid Mode controls explicitly opt-in under Options > Advanced > Grid
    Mode. Grid Control Status, Request Grid Toggle OTP, control-check polling, and
    the related service actions remain unavailable until enabled; the read-only Grid
    Mode sensor remains available.
  • Removed the IQ Battery CFG, DTG, and RBD schedule sensors when Enable Battery
    Scheduler is disabled. Users who had disabled the scheduler but retained these
    sensors must re-enable it under Options > Devices > Device Features.
  • Removed internal calculation and stable charger metadata attributes from the
    frequently updated IQ EV Charger Power and Last Reported sensors to reduce
    Recorder growth. Power restore baselines now use private Home Assistant
    restore data.
  • Removed high-cardinality device metadata from IQ Battery charge and
    microinverter lifetime-energy state attributes. Use integration diagnostics
    for the complete device payload; the remaining operational attributes are
    excluded from recorder history.

✨ New features

  • Added optional installer-level microinverter parameter telemetry with bulk device reads for power and available AC/DC voltage/current, frequency, temperature, signal, and firmware details. Empty authoritative reads clear old values, partial failures retain only bounded stale data, and the per-inverter entities are disabled by default.
  • Added read-only System Dashboard event monitoring with a diagnostic active-event
    binary sensor and optional Repairs for active standing alarms. Repairs clear when
    Enphase returns a matching explicitly resolved event. The event entity is
    created only after the installer endpoint responds successfully, so owner-only
    accounts do not receive an unavailable installer-only entity.
  • Added read-only IQ Gateway software-update progress monitoring to the existing
    advisory update entity, including Home Assistant in-progress/percentage state,
    timing, installed image version, and sanitized component transfer details.
  • Added multi-gateway phase-map discovery so site controls prefer the primary or
    default IQ Gateway and Gateway Status reports phase/topology diagnostics only when
    authoritative phase-map data is available.
  • Added opt-in Enphase site weather on the Enphase Cloud device. The weather entity
    is created only after the authenticated weather endpoint returns a valid current
    reading.
  • Added installer-only, cloud-based Grid Profile Control with country-scoped region and profile selection, explicit apply confirmation, current profile monitoring, and follow-up cloud status refreshes.

🐛 Bug fixes

  • Fixed the Authentication options menu and form so their localized headings,
    descriptions, and field copy render instead of blank rows or raw schema keys.
  • Reconciled every locale with the complete canonical translation surface,
    localized previously English-only migration and authentication copy, corrected
    AC Battery status translations, and added permanent full-catalog coverage checks.
  • Removed obsolete editable tariff entities as soon as refreshed tariff structure
    no longer contains them, published integration-initiated tariff writes
    immediately with bounded read-after-write retries, and reduced normal tariff
    refresh latency from 15 minutes to 5 minutes.
  • Restored localized Devices and Device Features headings, field labels, and
    descriptions by providing both native section translations and step-level
    compatibility aliases for Home Assistant frontends that resolve nested option
    controls through the parent step.
  • Cleared a System Event Repair immediately when the Events endpoint reports its
    matching event resolved, even if the Standing Alarms endpoint briefly retains a
    stale copy.
  • Reported Charger Authentication as Off when Enphase returns a present
    authentication setting with null values, matching the Enphase app, and accept
    literal on/off values from compatible payload variants.
  • Made the aggregate Microinverter Last Reported sensor choose the newest valid
    timestamp across the topology summary and every current microinverter, so stale
    summary data cannot override fresher per-device reports.
  • Refreshed System Dashboard events during the non-blocking startup warmup and
    retained an existing Active System Events entity while that first reload fetch
    is pending, avoiding an additional coordinator poll delay and entity churn.
  • Fixed Storm Alert opt-out returning HTTP 403 by routing the write through the
    BatteryConfig XSRF bootstrap and regional authentication fallback pipeline,
    including reuse of a matching browser-session cookie when available.
  • Prevented partial microinverter parameter responses from incorrectly degrading
    Service Status while useful fresh telemetry remains available. Empty results now
    degrade immediately without usable cache, or after repeated full-batch failures.
  • Prevented ordinary stateful System Dashboard event records from incorrectly
    setting Active System Events to Problem. Standing alarms and explicitly
    high-impact events now drive Problem and are the only records shown in its
    active-events attribute or included in its active and device-type counts, while
    Repairs and alarm severity come from the authoritative Standing Alarms endpoint.
  • Prevented Home Assistant startup from waiting indefinitely on Enphase warmup
    and gateway firmware progress loops by registering long-running work as true
    background tasks.
  • Kept IQ EV Charger preferred_mode stable in Manual mode by separating the
    numeric runtime mode from the scheduler preference and retaining fresh
    battery-profile preference data between profile refreshes. (#774)
  • Serialized installer Grid Profile writes, expired unconfirmed pending state after
    the follow-up window, and moved steady metadata refreshes off the coordinator's
    critical path.
  • Kept partial IQ Gateway firmware progress active when status text includes a
    percentage followed by “complete”.
  • Paginated System Dashboard events so active high-impact events beyond the first
    200 rows are included in sensors and Repairs, exposed bounded-result truncation,
    and expired missing prior-day Repairs only after a complete six-hour grace period.
  • Prevented multi-megawatt site power spikes during startup by reseeding derived
    power baselines when lifetime-flow sources change, normalizing live-power
    units, and requiring a newer comparable sample before publishing extreme
    readings.
  • Fixed Enlighten authentication after Enphase retired the Entrez token mint by
    using the first-party session token endpoint and retaining rotated session
    cookies, and aligned BatteryConfig reads with the current cookie-session web
    request shape. (#758)
  • Fixed Grid Mode so it reads the live-stream meters.gridRelay value and
    falls back to outage-context fields such as show_grid_connect only when the
    live relay state is unavailable.
  • Fixed config-entry unload and entity removal leaving delayed backoff, schedule,
    battery-profile recovery, discovery persistence, or firmware refresh work running
    against retired integration objects, and await task cancellation before closing
    the API client.
  • Tracked scheduled refresh, startup, weather discovery, switch failure recovery,
    reauthentication setup, and EVSE auto-resume work through unload, and bound
    cancellation waits so a stuck task cannot block config-entry shutdown.
  • Shared firmware version history across config entries so concurrent delayed saves
    cannot overwrite another site's transitions.
  • Fixed optional or concurrent cloud reads deadlocking credential refresh while
    the initiating request still held the shared Enlighten read limiter.
  • Preserved pending discovery snapshots when a storage write is cancelled so a
    later refresh can retry persistence instead of losing the observed revision.

🔧 Improvements

  • Added an explicit uppercase warning to Grid Profile Control that applying an
    incorrect profile may cause the system to malfunction.
  • Moved degraded-service and system-event Repair controls into a dedicated
    Notifications options page.
  • Removed redundant Devices and scheduler helper copy.
  • Moved Pricing Edits and Weather from general Settings into the Devices page's
    Device Features section while preserving existing preferences and defaults.
  • Prioritized Enphase Cloud power refreshes during startup and published their
    results immediately, with current-power and site-energy requests attempted in
    parallel under a 55-second deadline.
  • Documented the Enphase University training and Enphase Support request process
    for users seeking Installer Toolkit (ITK) / Self Installer access, including
    regional caveats and a support-request template.
  • Renamed the general Settings options page to Polling, restored scheduler helper
    descriptions, and moved the clearly labeled EV Charger nominal-voltage fallback
    into Devices > Device Features with an explanation of its power-estimation
    purpose.
  • Added a default-off System Event Repair Notifications switch under Options >
    Notifications. Existing event Repairs are removed while disabled.
  • Added a dedicated Devices page to integration Options for Gateway, Battery, EV
    Charger, Heat Pump, and Microinverter category selection, with a separate Device
    Features section for EV charger and battery schedulers, Pricing Edits, Weather,
    and the EV charger nominal-voltage fallback. Saving Polling options now preserves
    Devices, Notifications, Authentication, and Advanced choices.
  • Moved Start reauthentication and Forget stored password to a dedicated,
    fully described Authentication page in integration Options.
  • Moved Cloud Reachable from the standard Sensors section to Diagnostic without
    changing its entity identity or connectivity behavior.
  • Showed IQ Battery CFG, DTG, and RBD schedule sensors only when Enable Battery
    Scheduler is selected, and removed existing schedule sensor registry entries when
    the option is turned off.
  • Added a default-on Enable Pricing Edits checkbox under Options > Devices > Device
    Features. Disabling it removes editable tariff rate entities while keeping
    read-only pricing sensors and the Update Tariff action available.
  • Moved safety-sensitive manual Grid Mode controls under an explicit Advanced
    integration option that defaults off. The read-only Grid Mode sensor and its
    telemetry remain available, while Grid Control Status, Request Grid Toggle OTP,
    control-check polling, and service actions require the user to opt in.
  • Renamed per-microinverter Telemetry entities to Power and moved them from the
    Diagnostic category into the standard Sensors section without changing their
    registry identities.
  • Added a bounded, identifier-free active-event summary to Active System Events and
    excluded the attribute from Recorder history to avoid database growth.
  • Ran bulk microinverter parameter requests with a concurrency limit of two and
    an independent timeout per request, retained per-parameter cache freshness, and
    exposed sanitized endpoint failure reasons and retry times on Service Status.
  • Isolated the startup Grid Profile probe behind the optional-read limiter and the
    same aggregate queue-and-request deadline used by steady metadata refreshes.
  • Persisted hourly system-event Repair last-seen checkpoints so integration reloads
    cannot restart the missing-event grace period.
  • Bound optional Enlighten request queueing and startup warmup stages, reserved
    cloud-read capacity for core status traffic, and retained the last current-power
    sample with retry backoff when that optional endpoint is unavailable.
  • Shortened config-entry setup by limiting its blocking refresh to authoritative
    charger status, starting power acquisition under a separate 55-second budget,
    running translation/version priming concurrently, filtering warmup calls by
    enabled device features, and publishing each completed warmup stage immediately.
  • Added setup, entity-forwarding, power-ready, and warmup timing milestones to
    diagnostics, and stopped running registry cleanup on ordinary telemetry updates.
  • Added bounded live-debug timeouts, active/idle cache intervals, failure backoff,
    stale-state preservation, and cancellation-safe background refresh for gateway
    software-update monitoring.
  • Documented the IQ EV Charger device automation triggers and the integration's
    use of standard Home Assistant conditions.
  • Reused a Home Assistant-managed stateless HTTP session for cookie-authenticated
    BatteryConfig writes instead of creating a new connection pool per request.
  • Added localized System Health labels for tariff status, degraded services,
    and firmware catalog diagnostics in every supported language.
  • Reduced recorder and event-loop overhead on large sites by reconciling sensor
    registries only when topology or entity capabilities change, caching per-update
    battery and microinverter snapshots, and excluding diagnostic device metadata
    from recorder history. Detailed inverter and battery metadata remains available
    in integration diagnostics.
  • Reduced refresh overhead by persisting compact discovery identity metadata only
    when its revision changes, and made cloud-call diagnostics operation-scoped so
    background work no longer inflates coordinator refresh counts.
  • Added failed and cancelled refreshes plus request queue, network, and parsing
    timing totals to the rolling refresh performance diagnostics when available.
  • Added five-minute cloud metadata refreshes for the current Grid Profile sensor and preserved the entity during transient Activation service outages.

🔄 Other changes

  • Bumped the integration manifest version to 4.0.0b1.