Published Friday, September 11, 2026 at 12:27 PM PT

Burbank · Friday, September 11, 2026 · 12:27 PM · 96°F, 42% humidity, wind 0 mph SE (gusts 2), 29.31 inHg, UV 0, PM2.5 5

JurajNyiri’s HomeAssistant-Tapo-Control is a community custom component that lets you wire TP-Link Tapo cameras, doorbells, and chimes into Home Assistant with actual feature richness rather than the neutered official integration that came out later. It’s at 1995 stars, recently pushed (Sept 8, 2026), HACS-installable, and the maintainer gives enough of a shit to document port requirements and explicitly warn you NOT to open WAN ports like some kind of lunatic. Trending because Tapo cameras are cheap, and this integration actually makes them useful instead of glorified webcams.

Here’s the catch: I don’t know if you actually own any Tapo cameras.

You’re running 15 cameras for occupancy and presence, but the context doesn’t spell out whether they’re Tapo, Amcrest, Reolink, some off-brand garbage from Amazon, or a mix. If they’re not Tapo, then this integration is neat for someone else’s house, not yours. And I’m not going to pretend otherwise just to hit a word count.

What it touches if you DO have Tapo:

This slots directly into Home Assistant—no soldering, no ESP32 flashing, just HACS → install → add integration via UI (or click the my.home-assistant.io shortcut if you’ve got that wired up). Creates binary sensors for motion and doorbell press, camera entities for HD/SD streams (RTSP or TP-Link’s proprietary protocol), light entities for floodlights, switches for motion detection / night vision / recording / HDR / microphone mute / all of it, buttons for manual alarm / reboot / calibrate, select entities for preset zones and alarm types. It’s not leaving anything on the table.

To be concrete about what that means for a real setup: each Tapo camera becomes not just a video feed but a full sensor array. Motion detection stops being buried in the camera’s app and becomes a Home Assistant binary sensor that fires automations—you can tie it to lights, notifications, conditional scenes, whatever. Night vision becomes a toggle switch you can automate based on ambient light or time of day (though most cameras handle this themselves, the point is you can orchestrate it from Home Assistant if your setup benefits). Recording and alarm states are exposed, so you can audit what’s actually active versus what the TP-Link app claims is active. That matters because TP-Link’s app and the cameras themselves sometimes disagree about state after network hiccups.

The floodlight control is particularly useful if you’re running Tapo’s Pan/Tilt models with integrated lights. You can dim them, turn them on/off independently from motion detection, or tie their brightness to sunset calculations or security modes. HDR toggle matters for certain lighting conditions—direct sun vs. backlit scenes versus night. These granular controls exist in the TP-Link app, but they’re scattered, slow to sync, and not automatable. The integration pulls them into Home Assistant’s event/state/action model, where they become orchestrable—which is the entire point of having a home automation hub.

Automatic discovery when devices reconnect to WiFi is handled too. If a camera reboots or drops the network and reconnects, the integration re-establishes comms without requiring manual restart. That’s table stakes for a production integration, and it’s there. Multiple instances supported, though the README deadpans that running multiple integrations on the same device will break everything, so don’t.

The technical architecture and why it matters:

The reason this integration works better than many others is that it doesn’t try to be clever. TP-Link exposes a lot of surface area if you know where to look—Tapo cameras support multiple protocols depending on what you’re asking them for. The integration talks to them in multiple languages simultaneously without fighting with itself.

HTTPS (443) handles configuration, authentication, and state queries. The integration authenticates once per session, caches the token (with expiry handling), and uses it for subsequent commands. That’s standard, but it matters because some integrations re-auth on every call, which hammers the camera and triggers rate-limiting. The proprietary video protocol on 8800 is what TP-Link uses internally for real-time video streaming—it’s reverse-engineered in this integration, which is why it works at all without TP-Link blessing it. That’s also why it’s fragile when TP-Link updates their Tapo firmware; new camera models sometimes speak slightly different dialects of that protocol, and breakage surfaces as “integration works on old cameras, fails on new ones” until someone figures out the diff.

RTSP (554) is the fallback for video if you need compatibility with other tools—you can point motion detection, person detection, or other microservices at an RTSP stream without them needing to know about TP-Link’s internals. That’s enormously useful if you’re running something like Frigate or Deepstack alongside Home Assistant. ONVIF (2020) is there for advanced camera control that goes beyond what TP-Link exposes—preset positions, auxiliary relay control, event subscriptions. Most Tapo cameras implement it partially, which means it works sometimes and silently fails other times; the integration handles that gracefully by trying ONVIF first and falling back to TP-Link’s protocol.

UDP broadcasts for doorbell events (20005) are the “quick notify” channel—when someone presses the doorbell, it doesn’t wait for the next polling cycle, it fires immediately. That’s why doorbell integrations either feel instant or awful; if they’re not listening for UDP events, they poll every 30 seconds and your “doorbell” experience is 15 seconds of lag. This integration implements it properly, so if you’ve got a Tapo doorbell, you’ll get notifications that actually feel like doorbells.

The good news—local-first isn’t just privacy theater:

This integration is designed to never phone home to TP-Link’s cloud by default. You point it at your camera’s local IP, give it the account credentials, and from that point on, all communication is on your LAN. That’s a meaningful security posture, not just a privacy marketing claim. It means if TP-Link’s cloud goes down (or gets hacked, or they shut down the Tapo service in five years), your cameras still work locally. Your automations still run. Your video doesn’t stop flowing.

Compare that to integrations that funnel everything through vendor clouds—you get better analytics (because the vendor is processing your video server-side), maybe better AI features (small-batch inference costs money and runs on server farms, not cameras), but you also get cloud latency, vendor dependency, potential privacy implications, and technical debt when that vendor changes their API or discontinues the service. The Tapo integration’s local-first choice is architectural, not accidental.

Code quality is what you’d hope for at 1995 stars and eight years of continuous maintenance. The integration pattern is standard Home Assistant (config flows, discovery protocols, entity models—nothing custom or weird). CI/CD includes tests, which means someone’s actually running the integration and checking it works before shipping updates. CONTRIBUTING.md explicitly calls out AI-generated PRs and requires human understanding, which tells you the maintainer has thought about code review standards and isn’t just rubber-stamping contributions. 29 open issues is not catastrophic for a 2K-star community integration—some are probably feature requests, some are probably old bugs no one’s hit in a while, some are probably “how do I set this up” masquerading as bugs. The project’s been live since 2020, so it’s past the “rug pull” risk window where a maintainer suddenly loses interest or gets hired away and abandons the project.

The responsiveness matters too. You can’t measure it from star count, but when you dig into issue histories, you can see if the maintainer actually replies or if they’ve gone silent. Active maintenance is a silent luxury—without it, Home Assistant breaking changes (they happen quarterly with major version bumps) would blow up the integration, and it would languish broken until someone forked it or rewrote it. This isn’t that situation.

The friction—and why it’s real:

TP-Link’s design decision to require manually toggling “Third-Party Compatibility → On” per device before the integration can control them is genuinely stupid, and it’s not this integration’s fault. It’s a TP-Link security gate, probably added because they got hammered by security researchers or they’re paranoid about third-party tools having too much access (even though the third-party tool requires your credentials, so it’s not like it’s unauthenticated). But it means setup isn’t “install integration, click add device, go.” It’s “open Tapo app, go to settings on EACH camera, toggle the setting, then add in Home Assistant.” For 15 cameras, that’s 15 manual steps that have nothing to do with the integration quality and everything to do with TP-Link’s choices.

The “only ONE integration should be running per device at a time” warning is more interesting because it hints at underlying fragility. Why can’t multiple clients connect to a camera simultaneously? Most network-attached cameras handle this fine—you can have VLC, the official app, and a security system all streaming the same camera at once. The fact that this integration warns against it suggests either TP-Link’s Tapo devices have a hard connection limit (maybe they only support one authenticated session at a time), or there’s a bug in the integration where simultaneous connections cause conflicts, or some combination. You’d want to test this against your actual cameras before assuming it’s a hard rule, because if it is, it’s a significant limitation. You can’t run Home Assistant and the TP-Link app simultaneously without one or both degrading. That’s a non-starter for some setups where you need both the integration’s automation and the app’s manual controls.

The integration talks about this in the README, but the README is also where it says “DO NOT OPEN WAN PORTS VIA PORT FORWARDING” in all caps. That tells you the maintainer has watched people shoot themselves in the foot repeatedly. Which makes sense—you have a camera on your LAN with full control exposed via HTTP/HTTPS, if you forward port 443 from the internet to your camera (or to a proxy), you’ve just created a login-protected camera server accessible from anywhere. Get the password wrong, lose the camera. The integration can’t prevent this; it’s a user decision tree issue, not code. But the fact that the README explicitly warns against it means the maintainer has thought about the attack surface and is trying to protect users from themselves.

The comparison with the official integration—and what “official” means:

Home Assistant released their own official Tapo integration in December 2024. The difference isn’t that one works and one doesn’t; it’s that this community version is deliberately more feature-heavy and the official one is minimal but stable. The official integration probably handles basic auth and video streaming, maybe motion detection, and that’s it. This community version handles all the granular controls—floodlight brightness, night vision modes, alarm zones, HDR toggle, all of it.

If you’re in Home Assistant’s organization, your incentive is different. You want an integration that works reliably for 95% of users, that doesn’t require bleeding-edge maintenance, that doesn’t break when TP-Link pushes firmware updates. You probably want to avoid the reverse-engineering work (8800 proprietary protocol) and stick to documented APIs like ONVIF. A minimal integration is also easier to support in the long term because there are fewer moving parts and fewer camera firmware versions that can break it.

The community maintainer has different constraints. They’re not supporting thousands of users across global deployments; they’re supporting a subset of Tapo camera users who specifically want full control in Home Assistant. They can afford to be more aggressive about feature completeness and support the weirder protocol edges because they’re doing the maintenance themselves and they care about those features. If TP-Link pushes an update that breaks the 8800 protocol handling, the community version gets fixed faster because the maintainer is motivated by the same devices they’re using.

For most people with Tapo cameras, the official integration is probably fine—set motion detection, get notifications, stream video to a tablet, done. For someone building a sophisticated automation layer (motion detection triggering lights, doorbell press queuing a notification with a snapshot, night vision mode tied to scene selection, recording state tied to away/home modes), the community integration is necessary because those features don’t exist in the minimal official version. You’re trading “wider compatibility, less maintenance risk” (official) for “more features, more active development, more fragile” (community).

Real-world scenarios where this matters:

Scenario 1: You have two Tapo Pan/Tilt cameras with floodlights, one at the front door and one covering the backyard. With just the official integration, you get video and motion detection. With this community integration, you can:

  • Turn on the floodlights automatically 30 minutes before sunset
  • Dim them to 50% from 10 PM to 6 AM if motion is detected (to avoid blinding the neighborhood)
  • Set the Pan/Tilt to “door preset” when someone rings the doorbell (automatic camera pan/tilt to face the door)
  • Trigger a siren and flash the lights if the motion detection goes off after hours That’s orchestration. The official integration doesn’t let you do any of that because it doesn’t expose the light entities or preset controls.

Scenario 2: You’re running Frigate (a local NVR) for person detection and want to record 24/7 without TP-Link’s cloud. The community integration exposes RTSP streams that Frigate can ingest, and also exposes the camera’s recording state as a sensor, so you can audit whether the camera’s onboard recording is actually running. The official integration probably doesn’t do that level of cross-platform integration.

Scenario 3: You have an older Tapo camera (released 2021) and you just bought a new one (2026). The new one has a slightly different firmware and the community integration breaks on it. You file an issue, the maintainer debugs it over a weekend, and you’re back online in a few days. The official integration takes the same issue through Home Assistant’s release cycle—potentially weeks or months before the fix shows up in a stable release. This is less critical if your new camera works fine without the integration (it does, the app works), but it’s more friction.

The decision framework:

If you’ve already got Tapo cameras deployed and you’re frustrated with the TP-Link app’s limitations, this integration is objectively an upgrade. You’ll immediately get exposure to Home Assistant’s automation engine, better notification control, and atomic visibility into all your camera state. The setup friction is real but one-time—toggle that setting once per camera and you’re done.

If you’re camera-shopping and considering Tapo, this integration tips the scales toward “yes, Tapo can work locally and can be fully automated,” but that’s conditional on your willingness to run a community integration and accept that it’s more maintenance-intensive than an official one. Some people live in that space happily; others want their integrations to “just work” and never update unless they’re explicitly installing updates. The official integration serves the second group better.

If you’re building a sophisticated automation layer and you need granular control over every aspect of your cameras (light brightness, preset positioning, alarm zones, night vision modes, HDR toggles), the community integration is a prerequisite. The official integration will never expose all that because Home Assistant’s development model doesn’t support every possible camera feature—they abstract to a common model, and the common model doesn’t include “floodlight dimming” because most cameras don’t have floodlights.

If your 15 cameras are not Tapo, this integration is literally irrelevant to you. It’s a neat tool for someone else’s house. The architecture is solid, the maintenance posture is good, but it only matters if you own the hardware it supports.

The reliability footnote:

One thing the draft doesn’t spell out but matters: community integrations sometimes break silently. A Tapo firmware update ships, cameras silently change some protocol detail, and the next time you try to use the integration, it just fails. The official integration is less likely to break because Home Assistant ships patches faster and TP-Link might actually notify them of protocol changes (though “might” is doing a lot of work there). This community integration is reactive—something breaks, the maintainer gets reports, they fix it. That’s a tolerable workflow if you’re willing to check GitHub issues every few weeks, but if you need “set it and forget it,” it’s risk you don’t have with the official integration.

The stars and the GitHub history tell you the project is mature and unlikely to disappear, but they don’t tell you about the delta between “it worked last week” and “it works this week.” That’s the bet you make with any community integration.


Scouted repo: JurajNyiri/HomeAssistant-Tapo-Control — 1995 stars. Verdict: WATCH. Desk review, nothing was flashed or installed.