I do not own a single Modbus device. No solar inverter, no energy meter, no heat pump with an RS-485 port hiding behind a plastic flap. So the Modbus section of the Home Assistant 2026.9 release notes, published on 2 September, should have been the part I skimmed.
I read it three times instead. Not because of what it does for inverter owners this month — that list is short and I will get to it — but because of the shape of the problem it solves. This is plumbing work, and plumbing work either quietly fixes a decade of pain or quietly goes nowhere. You can usually guess which by looking at where the authors put the code.
The last YAML holdout
Modbus has been supported in Home Assistant for years through the modbus integration, where you hand-write a register map in your configuration. Register 40072 is grid power, scale it by 0.1, it is a signed 16-bit, next. It works. Plenty of people run it. It is also the last significant corner of Home Assistant where understanding a device’s wire protocol is the user’s job.
Everything else has moved the other way. You add Shelly, you type an IP, you get entities. With Modbus you add the device, then you find a PDF from the manufacturer, then you translate that PDF into YAML, then you debug your own translation. That gap has been widening for years, and 2026.9 does not close it. It builds the thing that makes closing it possible.
Why sharing a wire is the hard part
Here is the constraint that explains the entire design, and it is worth stating plainly. A Modbus connection is exclusive: one party talks at a time. But an RS-485 bus, or a TCP-to-serial gateway sitting in front of one, can carry several devices at once, sometimes from different manufacturers. If two integrations each open their own connection to that bus, they do not take turns politely. They contend.
Historically Home Assistant did not support sharing a bus between integrations at all. That is a large part of why Modbus stayed one YAML monolith: one integration, one connection, one owner.
The new approach inverts it. The modbus integration becomes a broker. It hands out units over connections it owns, and a device integration — your inverter, your ventilation unit — collects its own connection details in its own config flow like any normal integration, then asks modbus for a unit on them. Two integrations that ask with identical details get units on one connection, and their requests serialise behind it instead of colliding.
The detail I keep coming back to is that the shared connection is never configured or persisted as something you can see. It exists only while an integration holds a unit on it, and it closes when the last consumer’s config entry unloads. Paulus Schoutsen’s developer post from July puts it better than I can: you set up your heat pump, not a bus. The bus gets a single owner without the user ever learning that a bus exists.

What actually shipped
Three integrations use the new mechanism so far, and it is only fair to say that is a small first crop.
Fronius gained optional Modbus TCP support over SunSpec, alongside its existing local HTTP API. The payoff is per-string data — current, voltage, power and lifetime energy for each MPP tracker — which the HTTP API does not expose. It shares its connection with anything else talking to the same inverter, and that is not academic: some Fronius models accept only a handful of simultaneous Modbus sessions, so people have had to choose between Home Assistant and whatever else they wanted pointed at the inverter.
Sofar Inverter Modbus is brand new: Modbus TCP directly or through a bridge, automatic model detection, and support for both PV-only and hybrid inverters with battery storage. Flexit, for the ventilation units, is built the same way.
That is the whole list. If you run a Huawei, a SolarEdge, a Victron or a Stiebel Eltron, nothing changed for you this month. Your YAML still works, and the release notes are explicit that the old integration is not going anywhere.
The bit that decides whether this matters
The connection layer did not stay inside Home Assistant. It was published as modbus-connection, a standalone PyPI package with no Home Assistant dependency, sitting on top of tmodbus, a modern fully-typed Modbus library.
That is the part I would bet on. A device library becomes an ordinary Python package that knows how to talk to one specific device and mentions Home Assistant nowhere. An integration wires that library to a shared connection and exposes entities. The two can be written and tested independently, by different people, and the library is useful to somebody building a Grafana exporter who has never run Home Assistant in their life. modbus-connection also ships a device-modelling framework and a pytest plugin, which tells you the intent is for other people to write these — not for the core team to write forty of them.
The developer post goes further and includes a ready-made prompt for handing your existing Modbus YAML to an AI agent, complete with a reference implementation to copy. Make of that what you will. As a way of saying “we would like a hundred of these and we are not precious about how you get there”, it is unambiguous.
What I would actually do about it
Nothing, if you have working YAML. There is no migration, no deprecation notice, no reason to touch a running setup. For almost everyone reading this, that is the correct answer.
Two exceptions. If you have a Fronius and have ever been annoyed that your per-string numbers were invisible, the Modbus option is there now and worth enabling. And if you have ever hit the “something else is already talking to my inverter” wall, this is the release that turns that from a fact of life into a solvable problem.
The thing to watch over the next few releases is simple enough to check: does the list of device integrations grow past three? If it does, hand-written register maps become the fallback for obscure hardware rather than the default experience for anyone with a solar array, and that is a genuinely large quality-of-life change for a corner of the smart home that has been stuck for a very long time. If it does not, this stays a well-built piece of infrastructure with almost nothing standing on it.
I will check back at 2026.12. That feels like enough time to tell which one it is.

Leave a Reply