Home Assistant has a new BLUETTI Modbus integration. It reads a BLUETTI power station over its local Modbus TCP interface, so it keeps working when the internet or BLUETTI's cloud is down, and according to its author it gets several values faster than the cloud API. The pull request by chpego was merged on 22 October 2026, after the integration had been in review since late August, so it should be part of Home Assistant 2026.11.

One model, read-only

The first version is deliberately narrow. It supports only the Balco 260, because that is the only model anyone in the contributor community can test right now. Setup asks for the address, port and Modbus device ID, then checks that the device reports itself as a Balco 260. There is no model picker, so it cannot be set up with the wrong profile.

It only reads. No register is ever written, which means no switching the AC output, grid import or export, and no changes to the charge limits from Home Assistant yet.

45 sensors out of 107 fields

The underlying library, bluetti-modbus, knows 107 fields for the Balco 260. The integration turns 45 of them into sensors and reads five more (serial number, firmware versions and model) into the device information. The remaining 57 were left out after the author compared a register dump and a week of history from a real unit. Among the reasons:

  • fault and warning codes are only partly decoded, so a real code would show as unknown;
  • totals such as pack count and overall state of charge are only served at a separate aggregate address;
  • phases 2 and 3 read zero every day on the single-phase unit that was tested, so they could not be verified.

Two details matter for energy dashboards. The inverter power is signed and goes negative while charging; on the test unit it ranged from -1201 W to +801 W over a week. The battery current, on the other hand, has no direction: BLUETTI confirmed that the register carries only the magnitude. The four PV inputs are the MPPT inputs of the single inverter board, not separate panels.

Polling every 30 seconds, with a serial number check

The integration polls every 30 seconds rather than every 10 seconds, as the SolarEdge Modbus integration does, because the Balco 260's Modbus TCP stack stops responding under heavier polling. One poll is ten block reads. On the test unit, 63 polls over 31 minutes all succeeded, with a median of 0.37 s each, even though the device sent 17 truncated replies that the library retried.

Every poll also checks the serial number. If a different unit answers at the same address, the entities go unavailable and the log explains why, rather than feeding the wrong device's readings into the history. The connection itself is shared through the modbus integration, following the pattern introduced with SolarEdge Modbus.

What comes later

The author lists separate follow-up pull requests for a reconfigure option, writable controls, fault and warning binary sensors, BC260 expansion packs, diagnostics and automatic discovery. More models will be added as owners come forward to verify them.