HomeAssistant-Tapo-Control: adding Tapo cameras, doorbells and chimes to Home Assistant
Control for Tapo cameras as a Home Assistant component
At a glance
- What is it?
- HomeAssistant-Tapo-Control is a custom Home Assistant component that integrates Tapo cameras, doorbells and chimes with PTZ presets, motion detection, recording access and dozens of entity types per camera. It installs via HACS, requires specific firewall ports per device type, and depends on the pytapo library.
- Who is it for?
- HomeAssistant-Tapo-Control is the right choice when you need PTZ presets, motion triggers, recording access, or camera settings that the official Home Assistant Tapo integration does not expose. Skip it when a parallel Tapo integration already controls the same device, since the README states that running two integrations against one camera causes conflicts.
- Can I use it commercially?
- Yes. Apache-2.0 is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
- Is it still maintained?
- Yes. The repository last received commits 3 days ago.
- What is it written in?
- Mainly Python, according to GitHub's language statistics.
Answers come from the project's GitHub data, last synced on October 20, 2026, and from our analysis. They are not legal advice.
Editorial analysis
Tapo cameras in Home Assistant: more entities than the official integration exposes
Multiple Home Assistant integrations work with Tapo devices. HomeAssistant-Tapo-Control is a custom component that exposes a wider set of entities per camera, doorbell and chime than the built-in option. The README notes the official Home Assistant Tapo integration "has a minimum feature set compared to this integration as of December 2024." That qualifier anchors the claim to a specific date; whether the gap still holds in current versions of both integrations is not documented anywhere else in this repository.
The README also warns about a separate Tapo integration for plugs and lights in the HACS store. When adding the integration, searching for the display name "Tapo: Cameras Control" selects the correct one. The installation in Home Assistant shows multiple Tapo options, and picking the wrong one gives a different set of entities.
The single Python dependency is `pytapo`, the only line in `requirements.txt`. That library handles the direct device communication; this component wraps the results as Home Assistant entities.
Five firewall ports required per device type, and why WAN ports must stay closed
The README specifies which TCP and UDP ports must be open in the local network firewall for each device category.
Chimes require only TCP/80 for HTTP control. Cameras and doorbells require up to five ports: TCP/443 for HTTPS device control, TCP/8800 for the TP-Link proprietary video streaming protocol, TCP/554 for RTSP video, TCP/2020 for ONVIF motion detection, and UDP/20005 broadcast for doorbell press events. TCP/8800, TCP/554 and TCP/2020 are each marked as required only if available on the device.
The README puts a warning in capital letters: "DO NOT OPEN WAN PORTS VIA PORT FORWARDING." The note adds that opening LAN ports may not even be necessary depending on how the local network is set up. That distinction matters for users who reach for port forwarding as a default when connectivity fails: the integration runs locally, and the ports it needs are internal to the LAN.
Installing via HACS or copying custom_components/tapo_control/ to the HA config folder
Two installation paths are available. HACS is described as a community store for Home Assistant, and the integration appears in the HACS default repository list. After installing HACS, searching for "Tapo: Cameras Control" within HACS finds the component.
The manual path requires copying the contents of `custom_components/tapo_control/` from the repository into a `custom_components/tapo_control/` directory inside the Home Assistant configuration folder. No build step is listed; copying the files is the entire install.
After installation, devices are added through the Integrations UI by searching for "Tapo: Cameras Control". The integration also supports automatic discovery: devices appear in Home Assistant when they connect or reconnect to the local network. To add multiple devices, the integration is added once per device. Lovelace card examples are available at `examples/EXAMPLES_LOVELACE.md` in the repository.
Up to 4 camera entities per lens, plus binary sensors, PTZ controls and a long switch list
Each camera or doorbell lens generates up to 4 camera entities: HD and SD streams using either the RTSP standard or the TP-Link proprietary video protocol over TCP/8800. The README recommends disabling "Use Stream from Home Assistant" in integration options when using direct entities, citing better performance and battery life.
Motion detection creates a binary sensor after the first motion event. A separate binary sensor handles the doorbell press. Cameras with a floodlight get a light entity.
The switch entity list in the README names many types: Auto track, Automatic Reboot, Flip setting, LED Indicator, Lens Distortion Correction, Notifications, Recording, Microphone Mute, Microphone Noise Cancelling, Automatically Upgrade Firmware, HDR mode, Alarm Trigger Event types, Privacy Zones, Diagnose Mode, Smart Track specific switches, Smart Dual Track specific switches, Preset Patrol Mode, Audio Recording and Privacy mode. Availability depends on whether the specific device model supports each feature.
Select entities cover settings including Motion Detection, Night Vision and Move to Preset. Number entities cover adjustable values including Movement Angle, Speaker Volume and Siren Volume. A Media Source entity lets users browse and play recordings stored on the camera.
One integration per device: the conflict rule and the chime port exception
The README states that running more than one integration against the same Tapo device at the same time causes conflicts and connection instability for all connected services. That constraint means choosing between HomeAssistant-Tapo-Control and any other integration that connects to the same camera: they cannot coexist.
Chimes have a specific configuration difference. When adding a chime, the README instructs setting the Control Port to 80 rather than the default 443. The README instructs setting Control Port to 80 for chimes and does not document a fallback behavior when port 443 is used instead.
Devices are added one at a time by repeating the integration add flow for each device. The integration search name "Tapo: Cameras Control" must be used exactly, because at least two other Tapo integrations appear in the same search results: one for plugs and lights, and the official built-in integration.
Stream support for devices without RTSP or ONVIF, and PTZ preset services
The README highlights that the integration now exposes a stream for devices that have no RTSP or ONVIF capabilities. For those devices, the proprietary TCP/8800 path is the only video route available, and the integration handles it.
PTZ presets are managed through two services: `tapo_control.save_preset` saves the current pan-tilt-zoom position under a name that cannot be empty or a number, and `tapo_control.delete_preset` removes a preset by ID or name, with the list of available presets visible in the entity's attributes. A Move to Preset select entity and a Preset Patrol Mode switch give additional preset-related controls.
The integration targets cameras, doorbells and chimes. It does not cover Tapo plugs or Tapo lights; a separate integration handles those.
Version 7.2.6, the AI contribution policy, and what AGENTS.md means for contributors
Version 7.2.6 was released on 2026-10-05. The repository layout includes four AI-specific instruction files at the root: CLAUDE.md, AGENTS.md, GEMINI.md and .cursorrules. That set covers three distinct AI coding assistants and one IDE plugin. The README addresses AI contributions directly: AI-assisted changes are accepted when the author has reviewed and can explain the code, but purely generated or unreviewed PRs may be closed. The stated reason is that reviewing unverified generated code often takes longer than writing the change directly.
For contributors, the CONTRIBUTING.md file applies, and the AGENTS.md file must be read before any AI assistant modifies files, creates commits, pushes branches or opens pull requests.
The integration is licensed under Apache-2.0. The last push was on 2026-10-05, and the repository is not archived.
Editorial conclusion
HomeAssistant-Tapo-Control is the right choice when you need PTZ presets, motion triggers, recording access, or camera settings that the official Home Assistant Tapo integration does not expose. Skip it when a parallel Tapo integration already controls the same device, since the README states that running two integrations against one camera causes conflicts. Before adding devices, enable Third-Party Compatibility in the Tapo app under Me > Third-Party Compatibility > On, and confirm the correct firewall ports are open: TCP/443 and TCP/554 for cameras, TCP/80 for chimes.
Frequently asked questions
How do I install HomeAssistant-Tapo-Control?
The README describes two paths: install HACS and search for "Tapo: Cameras Control" inside the HACS store, or manually copy the contents of custom_components/tapo_control/ from the repository into the same directory in your Home Assistant config folder.
Does HomeAssistant-Tapo-Control support PTZ cameras?
Yes. The integration includes tapo_control.save_preset and tapo_control.delete_preset services, a Move to Preset select entity, a Movement Angle number entity, and a Preset Patrol Mode switch. PTZ buttons for moving the camera are also listed in the Quick Start section.
Why does my Tapo camera fail to connect with HomeAssistant-Tapo-Control?
The README lists two prerequisites: Third-Party Compatibility must be enabled in the Tapo app under Me > Third-Party Compatibility > On, and the firewall ports TCP/443, TCP/554, TCP/8800, TCP/2020 and UDP/20005 must be open on the local network for cameras. Chimes use TCP/80 instead of TCP/443.
Can HomeAssistant-Tapo-Control run alongside other Tapo integrations?
The README states that only one integration should be used per device at a time. Running multiple integrations against the same camera causes conflicts and connection instability for all connected services.
How do I add multiple Tapo cameras with HomeAssistant-Tapo-Control?
The README instructs adding the integration multiple times, once for each device. Devices are also automatically discovered when they connect or reconnect to the local network.
Official sources
Add this badge to your README
If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.
[](https://hysenlabs.com/projects/jurajnyiri-homeassistant-tapo-control)