Direct answer: When a TP-Link Kasa or Tapo device is unavailable in Home Assistant, do not factory-reset it first. Confirm that the device still works in the vendor app, verify its current IP address, check whether the model now requires TP-Link account authentication, and enable Third-Party Compatibility when the firmware provides that control. If the device is on another VLAN, add it manually by IP because automatic discovery normally will not cross subnets.
This guide applies to the official TP-Link Smart Home integration in current Home Assistant releases and covers Kasa plugs, switches, bulbs and power strips as well as supported Tapo plugs, lights, hubs, sensors, cameras and doorbells. It focuses on connection and authentication failures, not cloud outages in the Kasa or Tapo mobile apps.
Symptoms this guide covers
- A Kasa or Tapo device is present but all or most entities show Unavailable.
- Home Assistant discovers the device but setup fails with an authentication or communication error.
- A device worked until a firmware update, router replacement, password change or IP-address change.
- The vendor app works, but Home Assistant cannot connect locally.
- A device on an IoT VLAN is not discovered.
- A Tapo camera is controllable but live view is missing or unavailable.
- An old total-consumption or update sensor remains unavailable even though the physical device works.
Before changing anything
Record the device model, hardware revision, firmware version, current IP address and the exact error shown under Settings → Devices & services → TP-Link Smart Home. Download diagnostics if Home Assistant offers them. Do not paste credentials, tokens, public IP addresses, Wi-Fi passwords or unredacted diagnostics into a forum post.
Electrical safety: Do not open a mains-powered plug, switch, power strip or wall device. If a hardwired switch must be inspected, isolate the circuit and use a qualified electrician. A factory reset can erase schedules, camera settings and network configuration, so it belongs near the end of the process.
Quick decision table
| Observation | Most likely layer | Safest next check |
|---|---|---|
| Device also fails in the Tapo or Kasa app | Power, Wi-Fi, router or device firmware | Confirm power and check the router client list |
| Vendor app works; Home Assistant reports authentication failure | Credentials or Third-Party Compatibility | Verify the case-sensitive account email and compatibility setting |
| Device moved to another VLAN | Discovery or firewall routing | Add the current IP manually and test same-VLAN access |
| Only one historical sensor is unavailable | Entity removed or no longer reported | Identify the entity type before changing the integration |
| Tapo camera controls work but live view does not | Camera account or live-view option | Check the separate camera account in the Tapo app |
| Failure began after the DHCP lease changed | Stored host address | Reconfigure the entry with the current IP |
1. Separate a device problem from a Home Assistant problem
Start with observations that do not change configuration. Confirm that the device has power and appears online in the correct Kasa or Tapo account. Then open the router’s client list and locate the device by hostname, vendor or MAC address. Compare the listed IP with the host saved in Home Assistant.
If the vendor app cannot reach the device while your phone is on the same local network, Home Assistant is unlikely to be the first problem. Check Wi-Fi coverage, access-point association and whether client isolation is enabled. Power-cycle a removable plug only if the connected appliance can safely lose power. Do not power-cycle a refrigerator, medical device, server, pump or security system without considering the consequence.
If the app works and the device answers at its current IP, continue with the integration-specific checks below. The official integration communicates locally even though newer devices may require TP-Link cloud-account credentials to authorize that local connection. That distinction explains why internet access during initial setup may matter even when normal control is local.
2. Confirm model and firmware support
The official Home Assistant documentation maintains a supported-device list and links to the python-kasa project for current hardware and firmware coverage. Match the exact model and, when available, the hardware revision. A similar product name is not proof of support. Hub-attached products can also have different capabilities from directly connected Wi-Fi devices.
If the model is absent, do not repeatedly delete and recreate the integration. First compare the device against the current python-kasa support table and known issues. An unsupported model may partially identify itself but still fail during feature negotiation. Preserve diagnostics for a maintainer report rather than guessing at credentials or ports.
Firmware can change authentication requirements. Newer Kasa and Tapo devices commonly require the TP-Link cloud username and password for local authorization. Older devices that never required authentication may behave differently. Avoid downgrading firmware unless TP-Link or the integration maintainers provide model-specific instructions; an interrupted or incompatible firmware change can permanently disable a device.
3. Fix authentication without exposing credentials
Open the integration entry and choose Reconfigure when that option is available. Use the TP-Link cloud username associated with the device. Home Assistant’s documentation notes that this is normally the account’s case-sensitive email address. Do not use the separate camera account username in the general TP-Link account field.
If setup fails after a password change, update the integration with the new account password instead of deleting the device. Deletion can break entity-based automations and dashboards if replacement entities receive different identifiers.
Some firmware versions require an explicit compatibility switch in the vendor app. Depending on the product line and app version, look under Tapo Lab → Third-Party Compatibility or Settings → Third-Party Compatibility. Enable it only for devices you intend to expose to the official integration, then retry reconfiguration. This setting is preferable to an immediate factory reset because it preserves device placement, schedules and account association.
Do not test credentials with random third-party websites or paste them into terminal commands copied from strangers. If advanced testing with the official python-kasa command-line tool is necessary, run it only on a trusted computer and avoid saving the command—with its password—in shell history.
4. Correct IP-address and DHCP problems
A router restart, lease expiration or replacement can assign a different address. If Home Assistant still targets the old address, reconfigure the integration with the current IP. After it works, create a DHCP reservation in the router so the same MAC address receives the same IP. A reservation is usually safer than manually assigning an address on the device because the router remains the source of truth and can prevent conflicts.
Verify the repair by watching the integration for at least several polling cycles and operating one low-risk entity. The official integration normally polls device state every five seconds and updates immediately after a Home Assistant command. A single successful toggle is useful, but ten to fifteen minutes without another availability drop is better evidence.
If the address changes again despite a reservation, check for duplicate MAC entries, mesh nodes using isolated guest networks, or a second DHCP server. Do not solve an address conflict by choosing an arbitrary static address that might already be in the DHCP pool.
5. Handle VLANs and discovery correctly
Automatic discovery generally does not cross subnets. A Kasa or Tapo device on an IoT VLAN may work perfectly yet never appear in the Discovered section. Add the integration manually using the device’s IP address.
If manual setup also fails, temporarily place Home Assistant and the device on the same trusted test network. If the connection works there, the integration is probably healthy and the remaining issue is routing or firewall policy. Restore the intended network afterward and permit only the traffic required between Home Assistant and the device. Avoid broad “allow any” rules between an untrusted IoT VLAN and your main network.
Multicast reflection is not a universal cure. Discovery and steady-state control are separate phases: discovery may rely on local broadcast behavior, while normal control uses the device’s unicast IP. Document which phase fails before changing mDNS, IGMP or multicast settings.
6. Fix Tapo camera live view separately
Tapo camera and doorbell live view has an additional prerequisite. In the Tapo app, create or verify the camera account under Device Settings → Advanced Settings → Camera Account. This camera-specific username and password are different from the main TP-Link cloud-account credentials.
When adding or reconfiguring the integration, enable Live view and enter the camera-account credentials only in the camera fields. If you do not want live video in Home Assistant, leave Live view disabled; other supported controls can still be used.
If live view alone fails, do not reset the whole camera. First disable and re-enable the camera-account option or reset only those camera-account credentials in the Tapo app, then reconfigure Home Assistant. Review privacy mode before troubleshooting a missing stream, and never expose RTSP or camera web ports directly to the public internet.
7. Recognize removed or historical entities
Not every unavailable entity means the device is offline. The official documentation identifies historical sensors that may remain in the entity registry after integration behavior changes.
The total consumption sensor is reported by some older Kasa devices. Tapo and newer Kasa devices may not provide it. A newer device can therefore work normally while that one entity remains unavailable. Likewise, a legacy update-available binary sensor was removed because the cloud check was unstable. If an unavailable entity ends with an update-related identifier, confirm its history and documentation before deleting only that stale entity.
Deleting a stale entity is different from deleting the device or integration. Take a screenshot or note its entity ID first, confirm that no automation or dashboard depends on it, and remove only the obsolete registry entry.
8. Eliminate conflicts with custom integrations
Disable custom integrations that also communicate with the same TP-Link devices. Two integrations can compete for sessions, create duplicate devices or make error messages misleading. Restart Home Assistant after disabling the custom component, then test the official integration by itself.
Do not delete custom-component files while troubleshooting. Disable the component through its documented method, keep a record of its version and preserve a backup. If the official integration works alone, choose one integration and migrate deliberately rather than running both indefinitely.
9. Use logs without creating a privacy problem
Enable debug logging from the TP-Link integration’s menu, reproduce the failure once, then disable logging and download the file. The official documentation also describes logger entries for homeassistant.components.tplink and kasa. Debug logging can grow quickly, so do not leave it enabled.
Before sharing a log, remove account email addresses, IP addresses if your threat model requires it, camera names, Wi-Fi identifiers, tokens and any credentials. A useful escalation report includes the exact model, hardware revision, firmware version, Home Assistant version, integration error, whether the vendor app works, whether both systems share a subnet, and the least-destructive checks already completed.
Verification checklist
- The device appears online in the vendor app and router client list.
- Home Assistant uses the device’s current reserved IP.
- The exact model and firmware are supported.
- The case-sensitive TP-Link account email is correct.
- Third-Party Compatibility is enabled when the firmware requires it.
- Manual-IP setup is used across VLANs instead of relying on discovery.
- Camera live view uses the separate camera-account credentials.
- Only obsolete entities—not the whole working device—are removed.
- Debug logging is turned off after the test.
Rollback and recovery
If a change makes the situation worse, restore the previous VLAN rule, move the device back to its original network, or re-enter the former integration host. Restore Home Assistant from a current backup only when configuration damage is confirmed; a network or authentication failure normally does not justify a full restore.
If you must factory-reset the device, first export or document automations, schedules, camera privacy settings, entity IDs and room assignments. Reset one device at a time. Re-add it to the official app with the exact model selection, confirm local operation, then reconfigure Home Assistant. This prevents a broad reset from hiding the original cause.
Prevent the problem from returning
- Create DHCP reservations for locally controlled smart-home devices.
- Record models, firmware versions, VLANs and integration ownership.
- Review firmware release notes before enabling automatic updates on critical devices.
- Keep a current Home Assistant backup and an offline copy of essential configuration.
- Use one supported integration per device whenever possible.
- Test IoT firewall changes with one noncritical device before applying them broadly.
- Periodically review disabled and unavailable entities for documented removals.
Related Troubliq guides
For a protocol-neutral path, start with the Smart-Home Diagnostic Decision Tree or the Device Unavailable Diagnostic. If the symptoms began after a local address change, compare the process in WLED unavailable after an IP change. For another integration where discovery and local transport must be separated, see SwitchBot device not discovered.
Sources and review record
- Home Assistant: TP-Link Smart Home integration
- Home Assistant: troubleshooting configuration, diagnostics and debug logs
- python-kasa documentation
Last reviewed: September 20, 2026. Testing disclosure: This guide synthesizes current official documentation and documented integration behavior. Troubliq did not claim hands-on testing with every listed model or firmware version.


