The spec that decides this: which integration reaches the plug
Home Assistant prints an IoT class on every integration page. It describes where the work happens and who has to be awake for the plug to turn on. For smart plugs, exactly two classes are in play.
Local Push is the Matter integration. Home Assistant runs its own Matter controller, talks to the device over IPv6 on your own network, and the device pushes state changes back as they happen. The project states the position plainly: Matter products “run locally and always allow local control, with device control done without the need for any internet connection or cloud services.” Nothing polls, nothing waits, nothing phones home.
Local Polling is the TP-Link Smart Home integration, and it is better than its name sounds. Home Assistant documents that this integration “connects locally to the devices without going via the TP-Link cloud” — and goes out of its way to add that this “is different from the native Tapo and Kasa apps which will connect to the devices via the TP-Link cloud if the device has access to the internet.” Home Assistant polls every five seconds, and when you flip the switch from Home Assistant the state updates immediately rather than waiting for the next poll. In practice the only thing you notice is a few seconds of lag when somebody presses the physical button on the plug.
So the ranking is: a plug with both routes beats a plug with one, and a plug with no published integration comes last. Everything else — size, energy metering, load rating — is a tiebreaker.
The catch nobody mentions: local access still needs a cloud login
Here is the detail that surprises people, and it is in Home Assistant’s own documentation rather than in a forum post. For the TP-Link integration, “if your device is a newer Kasa or Tapo device it will require your TP-Link cloud username and password to authenticate for local access.” Every Tapo device needs it; newer Kasa devices need it too.
Read that carefully, because it is not the same thing as cloud control. The traffic still stays on your LAN. What TP-Link has done is make the credential cloud-issued, which means you need an account to set the plug up and you need Home Assistant to hold those credentials. If your objection to cloud devices is privacy and dependency during an outage, this is fine — nothing leaves the house once it is running. If your objection is that you do not want an account at all, Matter is the better route, and it is one more reason the P110M comes first.
Two more documented wrinkles are worth knowing before you order. First, Home Assistant warns that some firmware versions “require explicit activation of third-party integrations before they allow access,” and tells you where to find it: Tapo Lab > Third-Party Compatibility in the Tapo app, or Settings > Third-Party Compatibility in the Kasa app. If authentication fails, check that switch before you blame the integration. Second, if your plugs sit on a different subnet from Home Assistant, automatic discovery will not work at all — add them by IP and give them static addresses.
Why the P110M wins
Two documented facts put the Tapo P110M first. TP-Link’s US product page carries the Matter Certified badge and lists its third-party platforms as Matter-Certified, Apple Home, Alexa, Google Assistant and Samsung SmartThings — which means the Local Push route is open. Separately, Home Assistant’s TP-Link integration lists P110M explicitly among its supported Tapo plugs, alongside the P100, P105, P110, P115, P125M, P135 and TP15 — which means the Local Polling route is open too. Nothing else in our registry has both.
The energy metering is the second reason, and for Home Assistant specifically it is a bigger deal than it looks. Home Assistant documents that energy-monitoring TP-Link devices create consumption sensors that “can be fed into the Home Assistant energy dashboard.” That turns a budget four-pack into actual instrumentation: you can see what the dehumidifier costs per week instead of guessing. If that is why you are buying, read our honest take on whether smart plugs save energy first — metering is the part that pays, not the switching.
TP-Link also publishes a Local Control feature for this plug independently of Home Assistant: “Your connected devices in your local area network (LAN) remain accessible via the Tapo app, even when the household goes offline.” That is a useful backstop. If Home Assistant itself is the thing that is down, the plug is still reachable from a phone on the same Wi-Fi.
The honest cons: it is 2.4 GHz Wi-Fi only — TP-Link’s spec table says “2.4 GHz WiFi Only”, so if your router hides a combined SSID you will have to deal with that first. It needs a Tapo account for setup and for energy history. And the load ceiling is real: 15 A / 1800 W resistive and only a 1/6 HP motor rating, which rules out a lot of workshop equipment. TP-Link also rates it for an indoor 0–40 °C operating range, so it is not a garage-in-winter plug.
The EP25, and why one route is still enough for most people
The Kasa EP25 is the plug we recommend most often on this site, and on Home Assistant it is still a good buy — it is just a narrower one. It is on the supported Kasa plug list (EP10, EP25, HS100, HS103, HS105, HS110, KP100, KP105, KP115, KP125, KP125M, KP401), it meters power in real time and historically, and TP-Link’s own page lists voice control through “Siri, Alexa, Google Assistant, or Samsung SmartThings” — the Siri entry being the HomeKit support that makes it unusual at this price.
What it does not have is Matter. TP-Link claims no Matter certification for the EP25 anywhere on its product page, so Local Polling through the TP-Link integration is its only documented route into Home Assistant. That is a single point of failure in a way the P110M is not: if the integration breaks on a firmware update, you wait for a fix rather than switching routes.
The honest cons beyond that: it is 2.4 GHz only like everything else here, it needs a Kasa account, and its load rating is the same 15 A / 1.8 kW with a 1/6 HP motor limit. It is physically the same 66.5 x 38 x 40 mm body as the Tapo, so the “slim” name is real but it is not smaller than its sibling. Buy it if you want the cheapest per-socket price and Apple Home matters to you; buy the Tapo if Home Assistant is the point.
The EP40M, and the thing Home Assistant does with it
The EP40M is the only plug on this page that belongs outdoors, and it is the only one where Home Assistant’s documentation changes how you should think about the product. The integration lists EP40M under Power Strips, not under Plugs — which is correct, because it is two individually controllable outlets in one enclosure. In Home Assistant you get two child switches, so the porch light and the holiday lights really can run on separate automations from one device.
TP-Link publishes the outdoor credentials: IP64, an operating range of −4 °F to 122 °F, dual antennas quoted at up to 300 ft, and 15 A / 1,875 W total with a 1/2 HP motor rating — a meaningfully higher motor ceiling than the two indoor plugs, which matters for a pond pump or a fan. It is Matter-certified, and TP-Link states that “even without an internet connection, Matter devices seamlessly operate within your local network.”
The honest cons are the ones TP-Link prints itself and most roundups skip. It is weather-resistant, not waterproof: avoid water streams, do not immerse it, and place it at least 8 inches off the ground. It must be plugged into a GFCI receptacle outdoors or in wet locations — that is a requirement on TP-Link’s spec sheet, not a suggestion. Its requirements list also includes “The Free Kasa Smart App And Account,” so there is no account-free setup. And TP-Link publishes no energy monitoring for it, so unlike the other two it will not tell you what your outdoor load costs.
The three plugs compared on what the documentation publishes
IoT classes and supported-device lists are quoted from the Home Assistant project's own integration pages; loads, ratings and certifications from TP-Link's US product pages. All read on the date at the top of this page. 'Not published' and 'Not claimed' mean we found no first-party statement — not that the feature is absent. | Tapo P110M | Kasa EP25 | Kasa EP40M |
|---|
| Matter integration (Local Push) | Yes — Matter Certified | Not claimed by TP-Link | Yes — Matter Certified |
|---|
| TP-Link integration (Local Polling) | Yes — P110M listed | Yes — EP25 listed | Yes — EP40M listed, under Power Strips |
|---|
| Appears in Home Assistant as | One switch | One switch | Two child switches |
|---|
| TP-Link cloud login needed for local access | Yes — all Tapo devices | Yes — newer Kasa devices | Yes — newer Kasa devices |
|---|
| Energy monitoring | Real-time and historical | Real-time and historical | Not published |
|---|
| Feeds the HA energy dashboard | Yes, via consumption sensors | Yes, via consumption sensors | No sensors to feed it |
|---|
| Maximum load (resistive) | 15 A / 1800 W | 15 A / 1.8 kW at 120 V | 15 A / 1,875 W total |
|---|
| Motor rating | 1/6 HP | 1/6 HP | 1/2 HP |
|---|
| Wi-Fi | 2.4 GHz only, 802.11b/g/n | 2.4 GHz only, 802.11b/g/n | 2.4 GHz only, 802.11b/g/n |
|---|
| Weather rating | Indoor, 0–40 °C | Indoor, 0–40 °C | IP64, −4 °F to 122 °F |
|---|
| Outlets | 1 | 1 | 2, independently scheduled |
|---|
| Monthly fee | None | None | None |
|---|
The first two rows are the ranking. Everything below them is why you might overrule it: if you need two outdoor sockets, the EP40M is not competing with the other two, it is the only answer. If you want the lowest price per socket and an Apple Home household, the EP25 is the buy. If Home Assistant is the reason you are shopping, the P110M.
What we left off, and exactly why
The Wyze Plug is the obvious fourth candidate — it is cheap, it comes in a four-pack, and we recommend it elsewhere on this site for a household already running the Wyze app. It is not on this page because the Home Assistant project publishes no Wyze integration at all. We checked the integrations index on the date at the top of this page and found no Wyze entry; the expected URL returns a 404. That is evidence of absence from the project’s own documentation, and we will say the obvious thing: community add-ons for Wyze devices exist. We do not rank products on community add-ons, because an add-on is not something the maker or the platform has committed to, and a page that treats one as a product feature is setting the reader up for a bad week.
We also deliberately do not recommend a Zigbee or Z-Wave plug, which is the answer a Home Assistant veteran would give you. It is a good answer: a Zigbee plug paired to a radio stick on your Home Assistant box is about as local as a plug gets, with no Wi-Fi credential and no cloud account anywhere in the picture. We do not rank one because our registry carries Wi-Fi and Matter plugs that we have verified as live, purchasable listings, and we will not recommend hardware we have not verified. If you already run a Zigbee stick, treat this page as a ranking of the Wi-Fi options and weight it accordingly.
Setting them up without losing an evening
Provision the plug in the vendor app first. Home Assistant is explicit about this: “You need to provision your newly purchased device to connect to your network before it can be added via the integration,” using either the kasa command-line tool or the Kasa or Tapo app. Then add the integration and give it your TP-Link cloud email — case-sensitive, which is a documented cause of failures — and password.
If you are going the Matter route instead, TP-Link supports scanning the Matter code from any Matter-compatible app, and Home Assistant acts as a Matter controller through its own Matter Server. One caveat worth knowing from Home Assistant’s Matter page: some vendors still “require you to set up an account before you can enable Matter support,” so Matter does not always mean account-free. For the wider picture on what Matter does and does not buy you, our guide to Matter is the long version.
One last documented quirk if you are buying Kasa power strips alongside these: Home Assistant notes that the energy-monitoring state of Kasa power-strip child plugs updates only every 60 seconds, not every five, “due to limitations of the devices.” Fine for a daily total, useless for watching a kettle. If you want second-by-second numbers, use a single plug rather than a strip.
Deciding which box to run all this on is the bigger question, and we have covered it properly: our Home Assistant Green review looks at the ready-made appliance, and our ranking of hubs for privacy compares it against the alternatives on where the automations actually run. If you are deciding between brands rather than models, our Kasa vs Tapo comparison covers the whole TP-Link line, not just the plugs.