# home-assistant-tapo-p100 puts Tapo hardware inside Home Assistant

> This is a community integration for Home Assistant that controls TP-Link Tapo devices, from smart plugs to light strips to the hub sensors, and it is built on the plugp100 library, which in turn grew out of an earlier Tapo protocol project. The install is through HACS, the configuration is through the Home Assistant user interface, and the README is unusually candid about the three ways it can go wrong.

**petretiandrea/home-assistant-tapo-p100** — A custom integration to control Tapo devices from home assistant.

- Repository: https://github.com/petretiandrea/home-assistant-tapo-p100
- Stars: 981 · Forks: 141
- Language: Python
- License: MIT
- Published: 2026-10-20 · Updated: 2026-10-20 · Language: en
- Canonical page: https://hysenlabs.com/projects/petretiandrea-home-assistant-tapo-p100

## Two community libraries, one integration

The layering matters when you are debugging something. The integration itself is the thin layer, and the core of it is provided by the `plugp100` Python library, and that library is itself based on the work of K4CZP3R on a Tapo P100 project. So the path from your Home Assistant to the radio in your smart plug runs through two pieces of code that neither Microsoft nor TP-Link wrote, and the versions are pinned in the development dependencies, with `plugp100` at 6.0.2. The dependency list in the package metadata makes the same point in a different way, because the runtime dependencies are declared as empty with a comment saying that runtime deps are managed by Home Assistant itself, and everything else is a development dependency, including a pinned Home Assistant release at 2026.3.4. The project is MIT licensed, it is published through the HACS store as Tapo Controller, and the maintainer asks for sponsorship in several tiers along with help on the roadmap.

## KLAP is the reason an old version stops working

The first warning in the README is the one that decides whether you update. Tapo is updating its devices with new firmware that uses a new protocol called KLAP, and this integration supports it, but if you run an older version your devices may not work. The advice is to keep the integration up to date by using HACS. That is a change in the behaviour of the vendor's own hardware, delivered through a firmware update, which is a good illustration of why a community integration has a maintenance burden that a vendor integration does not. It also means the version of the integration is effectively coupled to the firmware of the devices, and the release history shows how that plays out, with 3.5.2 and 3.5.3 both landing on the same day in August 2026 and 3.5.4 following in October.

## Local control, but the cloud still holds the credentials

The second warning is the one about the network. The integration works over the LAN, but the Tapo device still needs internet access to synchronise with the Tapo cloud, especially for the credentials, and a missing internet connection can lead to an Invalid authentication error. A static IP must be set for the device. So the local path is local in the sense that the device is reached directly rather than through a cloud relay, but it is not an offline installation, and that distinction is worth being clear about before somebody builds a home automation that has to survive an internet outage. The third warning is the strangest. For some unknown reason an email with capital letters throws an Invalid authentication error, the advice is to check the email address in the Tapo app settings, and the workaround is to create a new account using an all lower case email address. The author has opened issue 122 to explain it and says the fix will come.

## Discovery works, and one feature was taken away on purpose

The integration now supports native Tapo discovery, so Home Assistant can find the devices on the network. You enable it in the Tapo configuration file:

```yaml
tapo:
  discovery: true # you can omit "discovery" by default, using "tapo:" will enable discovery automatically.
```

Not every Tapo device supports discovery, so a device that cannot be found can still be added by hand, and the discovery path filters out the devices that are not supported. You can also turn it off with `discovery: false`. The other change here is marked as breaking. The feature that let you track a device by its MAC address has been disabled, because Home Assistant now tracks MAC addresses itself and the integration's own tracking is not recommended, so you need DHCP discovery enabled in the Home Assistant configuration, which is on by default. It is a good example of a custom integration keeping pace with the platform's own architecture rather than layering on top of it.

## A long device list with a few honest gaps

The checklist of supported devices is long and it is the best part of the README, because the unchecked boxes are as informative as the checked ones. The supported switches are the P100, P110, P105, P115, P125 and P110M, and the powerstrips are the P300 and the P304M with individual socket support and energy monitoring, which came from a pull request. The bulbs are the L530, L510, L520, L630, L610, L530B and L530E, with the L900 light strip fully supported and the L920 and L930 only partially, where the documentation says only RGB works and the addressable feature of the strip does not. The hub family is broad, with the H100 hub and siren, temperature and humidity sensors, motion sensors, door sensors, switch hubs and the button and dial hubs, though the H200 hub is still work in progress. There is also the KE100, energy monitoring on the three energy capable plugs, and two extra sensors for overheat and wifi signal.

## Installing through HACS, then adding a device in the UI

The install is a HACS install, and the README makes the point that you no longer need to add the repository as a custom one, with HACS 1.6.0 or newer required. You can also find it in the store by searching for Tapo Controller, and Home Assistant has to be restarted afterwards. Adding a device is then the normal user interface flow. You start setting up a new integration, and you are asked for the host, which is the IP address, plus a username and password, the same ones you use in the Tapo app. If that step fails with an invalid auth error, the README points you at the same issue 122, and if the error persists you add a comment there. The last step is the one that saves the fiddling, you wait for the connection and the integration works out by itself whether the device is a switch, a light or something else, because the device type is detected rather than configured.

## The packaging has been modernised along with the Home Assistant guidelines

The project metadata is worth a look because it shows the current Home Assistant custom integration conventions. The package requires Python 3.14.2 or later, which is a demanding floor, and the tests run with pytest with coverage over the integration package, asyncio in automatic mode and the test paths limited to the tests directory. The linting is ruff, configured with a line length of 88 and the pycodestyle, pyflakes, warnings and isort rule sets selected, replacing the older flake8 and isort arrangement, and the import sorting treats the integration package as first party. Releases are handled by semantic release, which takes the version from the project table in pyproject.toml, tags it as v followed by the version, and runs a script to sync the version, with the main branch marked as not a prerelease branch. The breaking change that removed the configuration.yaml device configuration is explained with links to the Home Assistant best practices and to the architecture decision record on integration configuration, and the tree also carries a dev container, a uv lock file, a renovate configuration and a pre-commit setup.

## Conclusion

home-assistant-tapo-p100 suits a Home Assistant user with Tapo hardware who wants the devices in the same place as everything else, especially the ones with energy monitoring, since the P110, P115 and P110M plugs are the clearest reason to move them off the vendor app. It is a poor fit if you want a guaranteed local only setup, because the documentation is explicit that the devices still need internet access to synchronise credentials with the Tapo cloud, and it is a poor fit if your account email has capital letters, since the integration will refuse it for reasons the author has not fully explained. Before you install it, check three things: that you can update it, since a firmware change introduced the KLAP protocol and an old version may simply stop working, that you can set a static IP on each device, and that you are prepared to file an issue in the project's tracker if the authentication problem bites, because there is no fix yet.

## FAQ

### How do I install the Tapo integration for Home Assistant?

Through the HACS store, where it is published as Tapo Controller, and HACS 1.6.0 or newer is required, so you no longer add the repository as a custom one. You then need to restart Home Assistant before you can set up the integration from the user interface.

### Which Tapo devices does the Home Assistant integration support?

The P100, P110, P105, P115, P125 and P110M switches, the P300 and P304M powerstrips with energy monitoring on the P304M, the L530, L510, L520, L630, L610, L530B and L530E bulbs, the L900 strip, the L920 and L930 strips partially with RGB only, a range of hub devices, the KE100, and overheat and wifi signal sensors.

### Does the Tapo integration work without internet access?

Not entirely. The integration talks to the device over the LAN, but the device still needs internet access to synchronise with the Tapo cloud, especially for credentials, and a missing connection can produce an Invalid authentication error. The documentation also says a static IP must be set for the device.

### Why does the Tapo integration fail to authenticate?

The README reports that an email address containing capital letters throws an Invalid authentication error for reasons that were not understood at the time of writing. The workaround is to create an account with an all lower case email address, and the underlying problem is tracked in issue 122.

### What changed in the latest Tapo integration release?

The newest version, 3.5.4 published on 2026-10-19, follows the Home Assistant practice of removing device configuration from configuration.yaml, as the ADR on integration configuration requires, and it also stopped the integration from tracking MAC addresses itself because Home Assistant now does that. The project is MIT licensed and depends on the plugp100 library.

## Sources

- [Issues](https://github.com/petretiandrea/home-assistant-tapo-p100/issues)
- [License: MIT](https://github.com/petretiandrea/home-assistant-tapo-p100/blob/main/LICENSE)
- [petretiandrea/home-assistant-tapo-p100 on GitHub](https://github.com/petretiandrea/home-assistant-tapo-p100)
- [README](https://github.com/petretiandrea/home-assistant-tapo-p100/blob/main/README.md)
- [Releases](https://github.com/petretiandrea/home-assistant-tapo-p100/releases)

---

Hysen Labs editorial analysis, written from the project's own repository and release notes. Cite the canonical page: https://hysenlabs.com/projects/petretiandrea-home-assistant-tapo-p100
