Releases: senalse/ha-alphaess-modbus
Release list
v1.15.0-beta.3
Bug fixes
fix: Force Export Hold now prevents auto-off at the SoC cutoff again. The previous fix removed the battery power watcher (which caused false auto-offs when battery was legitimately idle) but inadvertently also removed the Hold gate. Hold now gates the SoC cutoff check in the servo watcher directly.
fix: Force Export no longer turns off automatically after a few seconds when battery power stays near 0 W. This happened when PV production already covered the export target (battery legitimately idle), or when PV register data was unavailable at the moment the switch was turned on. The Force Export servo already monitors SoC and stops the switch at cutoff, so the battery activity watchdog was redundant and only caused false auto-offs.
What's new (v1.15.0-beta.1)
feat: Connection settings (IP address, port, Slave ID) can now be changed without removing and re-adding the integration. A Reconfigure option appears in the three-dot menu on the AlphaESS card in Settings > Devices & Services (requires Home Assistant 2024.11 or later). The new settings are connection-tested before saving and the integration reloads automatically on success.
Upgrading from v1.14.0
No entities are renamed, removed, or added. No existing settings are affected.
v1.14.0
v1.14.0
What's new
- Changing the power or cutoff SoC of a running force operation (Force Charging, Force Discharging, Force Export, Force Import) or the generic Dispatch now takes effect immediately without restarting the duration countdown. The original stop time is preserved; only changing the duration restarts the countdown. Previously any change to a running operation restarted the countdown, so it could run longer than intended unless you turned it off manually.
Bug fixes
- Force Export and Force Import now hold the grid at the target power steadily instead of oscillating. The power was being recalculated from a house-load figure that already included the battery's own output, which fed back on itself and could make the battery swing between roughly 1 kW and 4 kW every couple of seconds at a low export target. The control now adjusts the battery directly against the measured grid power, so export and import sit at the set target and recover smoothly after a sudden load change, with no grid import at low settings.
Upgrading from v1.13.1
- No entities are renamed, removed, or added, so dashboards and automations are unaffected. There are no new settings. Two behaviour changes: adjusting power or cutoff SoC while a force operation is running no longer extends the countdown (only changing the duration does), and Force Export and Force Import regulate more smoothly and accurately. If you have an automation that relied on the countdown restarting when the power changed, update the duration instead.
v1.13.1
v1.13.1
Bug fixes
- Home Assistant now recovers its Modbus connection to the inverter after a router restart. Previously a router reset could leave the connection stuck in a state that never recovered on its own, so sensors went unavailable and controls stopped working until Home Assistant or the integration was restarted. The integration now detects a dead or half-open connection, closes it, and reconnects cleanly on the next poll. This also makes recovery reliable when a force operation or automation is running at the time of the interruption.
- Force Export and Force Import now adjust the battery dispatch as soon as house load or solar changes, instead of waiting for a fixed 25-second cycle. At low export power settings a sudden load such as a kettle could previously pull power from the grid for up to 25 seconds before the next adjustment; it is now corrected within about a poll cycle (a couple of seconds), which matters for zero-import export tariffs.
Upgrading from v1.13.0
- No entities are renamed, removed, or added, so dashboards and automations are unaffected. There are no new settings. This release only improves connection recovery after a network interruption and how quickly Force Export and Force Import react to load and solar changes.
v1.13.0
What's new
- Dispatch PV Enabled switch added. Controls the inverter's PV coupling during an active dispatch via register 0x088A, so PV can be enabled or disabled mid-dispatch (useful for shedding solar during negative-price periods). Defaults to on (PV enabled). Toggling it while a dispatch is running applies immediately; otherwise it takes effect on the next dispatch.
- All dispatch writes now include the flow-direction and PV-switch registers, extending the dispatch block from 9 to 11 registers (0x0880 to 0x088A). Confirmed on hardware: the PV switch only takes effect during an active dispatch, and the inverter restores PV to normal when the dispatch ends.
Bug fixes
- The Dispatch PV Enabled switch and the dispatch countdown now resolve correctly in the example dashboards; their entity IDs were wrong, which showed "Entity not found" on the Dispatch card.
- The write_register service no longer returns an error caused by internal data that is not a coordinator.
- The IP Method diagnostic sensor no longer errors when enabled. It reports a text value (DHCP or Static) but was classed as a numeric measurement, which Home Assistant rejects. It is disabled by default, so this only affected users who had enabled it.
- The Force Discharging Hold switch now has its own translation entry, matching the other Hold switches.
- Several integer diagnostic sensors (system time fields, Modbus baud rate, grid regulation) now display as whole numbers instead of decimals. All are disabled by default.
Upgrading from v1.12.0
- No entities are renamed or removed, so existing dashboards and automations are unaffected. The only new entity is the Dispatch PV Enabled switch, which defaults to on (PV stays enabled). Because the generic Dispatch now also sets the PV register, please report any unexpected PV behaviour during a dispatch.
v1.12.0
What's new
- Six daily energy sensors added: Today's PV Generation, Today's Energy Feed to Grid, Today's Energy from Grid, Today's Battery Charged, Today's Battery Discharged, and Today's Battery Charged from Grid. Each resets at midnight using the inverter's lifetime cumulative totals as a baseline. State is preserved across HA restarts.
Bug fixes
- Today's PV Generation now includes energy from AC-coupled inverters. The hardware register only counts DC string PV; AC-coupled generation is now accumulated via a Riemann sum on the live AC PV meter reading and added to the daily total. The ac_accumulated_kwh attribute on the sensor shows the AC portion separately for verification.
- Daily energy sensor entity IDs corrected. The apostrophe in "Today's" caused HA to slugify names to today_s_* instead of today_. Sensors now use translation keys so IDs are today_energy_feed_to_grid, today_pv_generation, etc. Users upgrading from beta.1 should delete the old today_s_ entities from the entity registry after reloading the integration.
- Force Charging, Discharging, Export, and Import countdown sensors now count down in real time. Previously they read a static hardware register that holds the initial duration and never decrements.
- Force Export and Force Import periodic power recalculation (every 25 s) no longer resets the countdown timer. The countdown now runs from the start of the session instead of restarting every 25 s.
- All countdown sensors now display in minutes by default instead of raw seconds. Existing entities may need the display unit changed in entity settings.
v1.11.0
What's new
- Force Export Hold switch added. Enabling it before starting Force Export keeps the dynamic export running indefinitely after the duration expires.
- Force Discharging Hold switch added. Enabling it before starting Force Discharging keeps the session running for the full configured duration instead of stopping early when the SoC target is reached.
- Smart Export removed. It provided the same continuous dynamic export that Force Export Hold now covers. Users who relied on Smart Export should switch to Force Export with Force Export Hold enabled.
- Poll speed presets (Slow, Normal, Fast) added to integration options. Slow reduces the Modbus transaction rate for RS485-to-TCP adapter users prone to timeouts. Fast halves poll intervals and tightens the coordinator loop for faster SoC tracking and tighter dispatch control.
- Raw register write service (alphaess_modbus.write_register) added for advanced users. Writes any single register by address and integer value via Developer Tools or automations, with no scale or offset applied.
- B3 and B3PLUS model variant option added to integration options. Selecting B3/B3PLUS applies the correct scale factors for registers that differ from standard AlphaESS inverters.
- Per-mode dispatch countdown sensors added: Force Charging Countdown, Force Discharging Countdown, Force Export Countdown, and Force Import Countdown. Each shows remaining dispatch time only while its switch is active.
Bug fixes
- Force Export now dynamically calculates battery discharge power from live house load and PV production so the grid sees the configured feed-in rate. Previously it sent the target directly as battery discharge power, ignoring house load and PV entirely.
- Fast mode poll floor removed. The coordinator loop interval now tracks the Fast Mode Poll Interval directly, allowing sub-1 s polling for direct Modbus TCP connections. Previously the loop was hardcoded to 1 s in Fast mode.
- Excess Export power calculation corrected to charge the battery when PV production exceeds the Inverter AC Limit, instead of always writing zero power.
- Excess Export auto-pause now fires immediately on a work-mode fault instead of waiting up to 15 seconds.
- Excess Export now recalculates battery charge power on every coordinator update (every 2 s) and rewrites dispatch registers when power changes by 50 W or more, keeping pace with changing PV conditions.
- Excess Export dispatch registers could be re-written after the switch was turned off if a resume was in progress; an on-guard check now prevents this.
- All four Force modes (Charging, Discharging, Export, Import) now stop automatically when battery power stays within +/-50 W for 10 consecutive seconds, using the inverter's natural signal that it has reached its SoC target. Force Charging and Force Import previously had no early-stop watcher at all.
- Hold switches (Force Charging Hold, Force Export Hold, Force Import Hold, Force Discharging Hold) no longer keep the inverter in an indefinite hold loop after the duration expires. They now only gate the battery power watcher; the duration timer always stops the mode.
- Force Discharging and Force Export no longer schedule an orphan duration timer when SoC is already at or below the cutoff at startup. The orphan timer would call async_reset_dispatch hours later and could cancel an unrelated active dispatch.
v1.10.0
What's new
- feat: Dispatch PV Switch sensor is now enabled by default.
- feat: Local IP, Subnet Mask, and Gateway sensors now display as dotted-decimal strings (e.g. 10.0.0.209) instead of raw integers. IP Method shows DHCP or Static.
- feat: New Dispatch Time Remaining sensor counts down from the configured dispatch duration in real time.
- feat: Battery Status sensor now shows a human-readable label alongside the raw value, e.g. "Charging + Discharging (257)" instead of just "257".
- feat: Dispatch Time sensor now shows a human-readable duration string (e.g. "3h 00m", "30m") instead of raw seconds with a thousands separator.
Bug fixes
- fix: Local IP, Subnet Mask, and Gateway sensors were missing state_class=None, causing a ValueError on HA startup that prevented those entities from loading.
- fix: Battery Capacity scale corrected from 0.001 to 0.1 (reported values were 100x too small). Also fixes Battery Remaining Time which depends on the capacity value.
- fix: Battery Remaining Time always returned 0 on ALD-series inverters. Now calculated from live SoC, capacity, and battery power.
- fix: Excess Export Pause binary sensor was displaying "Pause" instead of "Excess Export Pause".
- fix: Force Import Pause binary sensor was displaying the full device-prefixed name instead of "Force Import Pause".
v1.9.5
Bug fixes
- Battery Status sensor now displays as an integer instead of a float (e.g.
1not1.0). - Force Import Hold switch now displays the correct icon (
mdi:battery-lock). - BMS Version, LMU Version, and ISO Version sensors now have
state_class: None, preventing aValueErrorthat crashed the coordinator update loop after every initial load in recent HA versions. - Register-backed number sliders (Charging/Discharging Cutoff SoC, Max Feed to Grid) now update immediately when written instead of reverting until the next poll cycle.
- Force Discharging, Force Export, and Force Import duration sliders now correctly write the configured duration to the inverter (previously hardcoded to 60, 60, and 30 seconds respectively).
- Dispatch Power slider now initialises to 0 kW on first install instead of the slider minimum (-20 kW).
- Force Import Pause converted from a writable switch to a read-only binary sensor, consistent with Excess Export Pause.
- Added
icons.jsonso all entities correctly display their icons in Home Assistant 2024.6+. - Dispatch SoC and related dispatch-block sensors no longer show float artefacts (e.g. 99.96% instead of 100%).
- SoC threshold sliders across all dispatch modes renamed from "Cutoff SoC" to "Stop at SoC" for consistency. Entity IDs are unchanged.
- BMS Version, LMU Version, and ISO Version sensors now display in V1.65 format instead of the raw integer (165).
- Four raw EMS version registers are now combined into a single EMS Version sensor (e.g. V1.0.23R1). The raw sub-registers are still polled but disabled by default.
- Inverter model detection now uses a known-prefix lookup table (e.g. ALD -> Alphastore, SMILE-B3, SMILE-T10) before falling back to year-based regex parsing, giving more descriptive model names in the HA device card.
v1.9.4
Excess Export now automatically pauses when grid power exceeds 50 W
(house drawing from grid) and resumes once PV production recovers above
house load. This matches the upstream AlphaESS_Excess_Export_Pause /
_Resume automation logic exactly, including a 15 s flap guard and a
requirement for the inverter to be in normal work mode for at least
10 minutes before resuming.
The excess_export_pause switch is replaced by a read-only binary sensor
(binary_sensor.alphaess_inverter_excess_export_pause) that reflects the
auto-pause state. Dashboard examples updated accordingly.
v1.9.3
- fix: inverter model and serial number are now read from the device on
startup and shown in the HA device card, replacing the hardcoded
"SMILE-M5-S-INV / SMILE series" string. - fix: integer sensor registers (dispatch mode, EMS version,
fault/warning codes, period hours/minutes, etc.) no longer display
with a spurious .0 decimal suffix. - fix: power sliders (force charge/discharge/export/import, dispatch
power, max export power) now clamp to the configured Inverter AC
Limit instead of always allowing up to 20 kW.