Custom integration that connects Home Assistant to a TP-Link Deco mesh network through the router's local web API. No cloud account required.
For each connected client device, the integration creates:
- Device tracker (presence: home / away)
- Binary sensor — connected status
- Sensors — IP address, MAC address, download speed, upload speed, connection type (2.4 GHz / 5 GHz / 6 GHz / Wired), interface (main / IoT / MLO)
For each Deco mesh node, the integration creates:
- Sensors — IP address, MAC address
- Binary sensor — internet connectivity (master node only)
For the master Deco node, the integration also creates:
- Sensors — CPU usage, memory usage, online clients counter
Each client device is linked via via_device to the master Deco node so the
device hierarchy in Home Assistant reflects the mesh topology. All Deco
BSSIDs (main, AP and backhaul STA) are registered as CONNECTION_NETWORK_MAC
so other discovery flows (DHCP, etc.) can correlate the same physical device.
The integration ships a custom dashboard card that lists the clients connected to the mesh with their connection state, address and live throughput. The card is served by the integration itself and registered as a Lovelace dashboard resource automatically — no manual resource setup is required. Add it to any dashboard with:
type: custom:tplink-deco-cardOptional settings: devices (device ids to show), secondary_info
(ip | mac | connection | none), sort
(name | download | upload | connection), columns (1–6) and
show_offline. The card also provides a visual editor in the dashboard UI
and is translated into English and Portuguese (Brazil).
- Home Assistant 2026.5.3 or newer
- A TP-Link Deco mesh network with the local web admin enabled
- Router credentials (username and password used in the Deco app)
- In HACS, open the menu and choose Custom repositories.
- Add this repository's URL with category Integration.
- Install the TP-Link Deco integration from the HACS list.
- Restart Home Assistant.
- Download or clone this repository.
- Copy
custom_components/tplink_decointo your Home Assistantconfig/custom_components/directory. - Restart Home Assistant.
After installing and restarting:
- Go to Settings → Devices & Services → Add Integration.
- Search for TP-Link Deco.
- Enter the router IP, username and password.
The integration uses Home Assistant's UI config flow — there is no YAML configuration. If the router password changes, Home Assistant prompts for reauthentication instead of silently failing.
The same form exposes two polling settings, also editable later through Reconfigure:
| Setting | Default | Range |
|---|---|---|
| Update interval | 20 s | 10–600 s |
| Request timeout | 30 s | 5–120 s |
Large networks take longer to answer: on a mesh with dozens of connected clients, raise both values until the polls comfortably fit inside the interval.
Bundled language files: English and Portuguese (Brazil). To add a new
language, copy custom_components/tplink_deco/translations/en.json to
<lang>.json and translate the values.
See CODE_STYLE.md for project conventions and CONTRIBUTING.md for the contribution workflow.
source .venv/bin/activate
bash scripts/develop # starts HA at http://localhost:8123
uv run ruff format . # format
uv run ruff check . --fix # lint
uv run mypy custom_components/tplink_deco # type-checkThis integration is built and maintained on personal time, on hardware bought for the purpose. If it is useful to you, consider sponsoring the work — it keeps the devices, the testing and the releases coming.
MIT — see LICENSE.