ghapvharmo/gha-lab-7ccf56a2a4
GitHub: ghapvharmo/gha-lab-7ccf56a2a4
用于将 TP-Link Tapo 摄像头、门铃和门铃提示音接入 Home Assistant 的社区自定义集成组件,提供视频流、PTZ 控制和移动侦测等丰富功能。
Stars: 0 | Forks: 0
[](https://github.com/hacs/integration)
[](https://github.com/JurajNyiri/HomeAssistant-Tapo-Control/releases/)
[](https://analytics.home-assistant.io/custom_integrations.json)
# HomeAssistant - Tapo: 摄像头控制
自定义组件 - Tapo: 摄像头控制 - 用于将 Tapo 摄像头、门铃和门铃提示音添加到 Home Assistant 中
⭐ 现在还为不支持 RTSP 或 ONVIF 功能的设备提供了视频流。
## 安装说明
将 custom_components/tapo_control/ 目录下的内容复制到你 Home Assistant 配置文件夹下的 custom_components/tapo_control/ 目录中。
## 使用 HACS 安装
HACS 是 Home Assistant 的社区商店。你可以安装 [HACS](https://github.com/custom-components/hacs),然后从 HACS 商店安装 Tapo: 摄像头控制。
## 要求
### 网络
为了能从 Home Assistant 访问你的 Tapo 摄像头,防火墙中必须**开放**以下目标 TCP (v)LAN 端口:
门铃提示音:
- 80 - 用于控制摄像头的 HTTP ([服务](https://github.com/JurajNyiri/HomeAssistant-Tapo-Control#quick-start))
摄像头和门铃:
- 443 - 用于控制摄像头的 HTTPS ([服务](https://github.com/JurajNyiri/HomeAssistant-Tapo-Control#quick-start))
- 8800 - 用于视频流和录像下载(如果设备支持)的专有协议
- 554 - 用于从摄像头获取视频流(如果设备支持)的 RTSP
- 2020 - 用于通过 binary sensor 跟踪检测到的移动(如果设备支持)的 ONVIF
**这些不是 WAN 端口,_请勿_通过端口转发开放 WAN 端口。只有当你明白上述内容的含义时,你可能才需要开放 (v)LAN 端口。**
### 第三方兼容性
确保你已在智能手机上的官方 Tapo 应用中开启了 Third Party Compatibility。
**Tapo App -> Me -> Tapo Lab -> Third-Party Compatibility -> On**

注意:需要 3.8.103 或更高版本。
## 使用说明
在 Home Assistant 界面中,通过集成(搜索 `Tapo: Cameras Control`)添加摄像头、门铃或门铃提示音。如果你配置了 MyHomeAssistant 重定向,也可以直接点击下面的按钮。
[](https://my.home-assistant.io/redirect/config_flow_start/?domain=tapo_control)
**注意:** 还有其他的 Tapo 集成,请确保你选择的是 `Tapo: Cameras Control`。否则,你可能会选择用于智能插座和灯泡的集成,或者是官方的 HA 集成(截至 2024 年 12 月,与该集成相比,官方集成的功能非常有限)。
在集成 Tapo 摄像头、门铃和门铃提示音时,请确保仅使用 ONE(一个)集成。如果同时使用多个集成,将导致所有连接到摄像头的集成/服务发生冲突和连接不稳定。
如果你要添加门铃提示音,请将 Control Port 设置为 80,而不是 443。
当设备(重新)连接到 WIFI 时,也会自动发现它们。
要添加多个设备,请多次添加该集成。
请参阅 [Lovelace 卡片示例](https://github.com/JurajNyiri/HomeAssistant-Tapo-Control/blob/main/examples/EXAMPLES_LOVELACE.md)。
## 快速入门
此自定义组件会创建:
门铃、摄像头:
- 最多 4 个摄像头实体:HD 和 SD,使用 RTSP 标准或 TP-Link 专有视频协议。如果你选择使用直接实体,建议在选项中禁用 `Use Stream from Home Assistant`,以获得最佳性能和电池续航。
- 首次检测到移动后的移动 binary sensor
- 如果摄像头支持泛光灯开关,则提供 Light 实体
- 用于校准、格式化、手动开启和停止报警、移动摄像头、重启和同步时间的 Button
- 用于 Auto track、画面翻转设置、LED 指示灯、镜头畸变校正、(Rich)通知、录像、麦克风静音、麦克风降噪、自动升级固件、HDR 模式、报警触发事件类型、隐私区域、诊断模式、Smart Track 特定开关、录音和隐私模式的 Switch 实体
- 用于自动报警、光源频率、移动侦测、夜视、聚光灯亮度、报警类型、快速回复和移动到预设位置的 Select 实体
- 用于移动角度、扬声器音量、麦克风音量、聚光灯亮度、警报音量、警报持续时间和移动侦测数字灵敏度的 Number 实体
- 用于浏览和播放存储在摄像头上的录像的 Media Source
- 用于报告监控媒体同步状态的 Sensor 实体
- 用于存储诊断的 Sensor 实体
门铃提示音:
- 用于门铃提示音时长、门铃提示音音量、门铃播放时长和门铃播放音量的 Number 实体
- 用于门铃提示音铃声和 LED 的 Switch 实体
- 用于门铃提示音声音类型和门铃播放类型的 Select 实体
- 用于网络 SSID、信号强度、RSSI 的 Sensor 实体
- 用于重启和响铃的 Button 实体
此外,对于带有 PTZ 功能的摄像头,还提供以下服务:
## 声音检测
集成能够分析来自摄像头麦克风的声音,并通过 binary_sensor 暴露检测到的噪音。
你需要通过勾选“Enable sound threshold detection”在集成选项中开启此功能。开启后,你还可以设置任何其他以 [Sound Detection] 开头的选项。进行任何更改后,你都需要重启 Home Assistant。
有关更多信息和故障排除,请参阅此功能所基于的 [Home Assistant ffmpeg 文档](https://www.home-assistant.io/integrations/ffmpeg_noise/)。
## 媒体同步
集成能够同步录像以实现快速回放。
同步默认是关闭的,你可以浏览存储在摄像头上的媒体并请求播放。但是,下载速度相当慢,因此建议在后台开启媒体同步。这样,你就可以瞬间播放来自摄像头的任何已同步媒体。
你可以通过导航到 `Home Assistant Settings` -> `Devices & services` 并点击 `Tapo: Cameras control` 集成来开启此设置。在那里,点击你想为其开启媒体同步的 Tapo 设备旁边的 `Configure` 按钮,然后选择 `Configure media`。在这里,你需要定义要同步的小时数。除非指定,否则同步不会运行。在这里,你还可以设置用于存储已同步录像的存储路径(默认为 /config/.storage/tapo_control)。
最后,你可以打开或关闭 Switch 实体 `switch.*_media_sync`。
**注意:** 一旦实际录像时间和文件修改时间超过了你设置的小时数,录像将被删除。
## 故障排除 | 常见问题
## 有意见或建议?
请[创建一个新 issue](https://github.com/JurajNyiri/HomeAssistant-Tapo-Control/issues/new/choose),或在 [Home Assistant: 社区论坛](https://community.home-assistant.io/t/tapo-cameras-control/231795)上进行讨论。
加入 [Discord](https://discord.gg/pa54QyK) 上的讨论。
## 致谢
- 来自 NCC Group 的 [Dale Pavey](https://research.nccgroup.com/2020/07/31/lights-camera-hacked-an-insight-into-the-world-of-popular-ip-cameras/),感谢其对 Tapo C200 的初步研究
- [likaci](https://github.com/likaci) 和 [他的 GitHub 仓库](https://github.com/likaci/mercury-ipc-control),感谢其对手 Mechan(Tapo 的基础)摄像头的研究
- [Tim Zhang](https://github.com/ttimasdf),感谢其在 [他的 GitHub 仓库](https://github.com/ttimasdf/mercury-ipc-control) 中对 Mercury 摄像头的额外研究
- [Gábor Szabados](https://github.com/GSzabados),感谢其在 [Home Assistant 社区论坛](https://community.home-assistant.io/t/use-pan-tilt-function-for-tp-link-tapo-c200-from-home-assistant/170143/18) 中进行的研究和收集的所有上述信息
- [Davide Depau](https://github.com/Depau),感谢其对摄像头的额外[研究](https://md.depau.eu/s/r1Ys_oWoP)以及对 pytapo 库的贡献
- [Joe Bebo](https://github.com/bebo-dot-dev),感谢其[记录](https://github.com/JurajNyiri/HomeAssistant-Tapo-Control/issues/243)了使用 hub 的摄像头的通信协议
# 免责声明
此集成使用的是 Python 模块 Pytapo,这是一个用于实现与 Tapo 摄像头互操作性的非官方模块。
作者与 Tp-Link 或 Tapo 没有任何关联。
pytapo 库中使用的所有 api 请求都可以在互联网上找到(上面链接了示例),pytapo 模块纯粹只是这些 HTTPS 请求的封装。
作者不保证此集成的功能,并且不对任何损害负责。
本仓库中的所有产品名称、商标和注册商标均是其各自所有者的财产。
tapo_control.save_preset
将当前的 PTZ 位置保存到预设中 - **name** 必填:预设的名称。不能为空或为数字tapo_control.delete_preset
删除一个预设 - **preset** 必填:PTZ 预设的 ID 或名称。请在实体属性中查看可能的预设使用哪个视频流?
此集成了 4 个不同的摄像头实体: - HD Stream - SD Stream - HD Stream (Direct) - SD Stream (Direct) Direct 视频流使用 TP-Link 专有流媒体协议。非 Direct 视频流使用标准的 RTSP 协议。 ### 为什么使用 Direct 视频流? 1. 如果你的设备没有 RTSP 功能,这是唯一的办法。这包括电池设备、太阳能设备以及通过 hub 工作的设备。 2. 如果你已经用完了[所有的 RTSP 视频流](https://www.tp-link.com/cz/support/faq/2742/),和/或你的 RTSP 视频流在 Home Assistant 中不稳定。 3. Direct 视频流的加载速度_极_快,延迟不到半秒*_(_*确保在集成选项中禁用 `Use Stream from Home Assistant (restart required)` 以获得最快的体验_)。在底层,新的视频流是“直接发送到你浏览器”的 binary stream,没有任何不必要的转换或开销。 ### 为什么不使用 Direct 视频流? 如果你有使用 RTSP 的选项,建议坚持使用 RTSP 视频流。 1. Direct 视频流会占用更多的 CPU 资源,因为运行此集成的设备现在直接处理 binary stream,而不是由摄像头提供标准化的 RTSP 视频流。 2. Direct 视频流不能与 webrtc 卡或 go2rtc 一起使用。 3. 使用 [webrtc](https://github.com/AlexxIT/WebRTC) Home Assistant 摄像头卡,RTSP 视频流非常快且几乎无延迟。用于检测移动的 binary sensor 不显示或不起作用
只有在首次检测到移动后,才会添加移动 sensor。 它还需要设备支持 ONVIF。如果设备没有暴露 Onvif 接口(很可能是电池或太阳能供电),移动事件将不起作用。 - 确保摄像头开启了移动侦测 - 确保摄像头关闭了隐私模式 - 确保摄像头能看到你和你的动作 - 如果你开启了 webhooks,并且你的 Home Assistant 内部 URL 可以通过 HTTP 访问,请确保摄像头能够访问它。 - 确保你为 Home Assistant 设置了正确的 IP。在 `/profile` 下开启 Advanced Mode。前往 `/config/network` 并在 `Network Adapter` 下验证设备显示的 IP 是否正确。如果不正确,在 `Home Assistant URL` 下取消勾选 `Local Network` 旁边的 `Automatic`,并将其设置为 `http://<某个 IP 地址>:8123`。**请勿使用 HTTPS**。 - 某些摄像头固件的 pullpoint 功能已损坏,只有 webhooks 能正常工作。如果由于上述原因(HTTPS 或 VLAN 设置)导致你无法运行 webhooks,binary sensor 将永远不会显示。 - 试着在摄像头前走动 - 如果上述方法都不起作用,请重启摄像头并重试 同时请确保: - binary sensor 没有被实体禁用,检查 .storage/core.entity_registry 中是否有被禁用的实体,在平台 "tapo_control" 上查找 "disabled_by": "user"。如果是,请删除整个实体或将其更改为 "disabled_by": null,然后重启 HASS。 - binary sensor 已在 tapo 集成选项中开启 - 摄像头上的 ONVIF 端口 2020 已开启摄像头视频流延迟严重
这是 Home Assistant 的一个[已知问题](https://community.home-assistant.io/t/i-tried-all-the-camera-platforms-so-you-dont-have-to/222999)。 有一个选项可以禁用摄像头的 Home Assistant Stream 组件,这可能会以较高的 CPU 占用为代价,显著降低延迟。 你可以在添加摄像头时选择禁用 stream 组件,或者在已经添加了摄像头后通过“选项”来执行此操作。此更改需要重启 Home Assistant。 这样做可能会有一些缺点,例如失去控制回放的选项以及较高的 CPU 占用。 效果取决于你的硬件以及未来的 Home Assistant 更新。 如果你禁用了 stream,而你的硬件无法胜任此任务,你将会遇到花屏、更大的延迟和卡顿。 如果你愿意,可以尝试一下,看看哪种效果最适合你。 **另一种可能是使用 [AlexxIT 的 WebRTC Camera](https://github.com/AlexxIT/WebRTC)。** 可用的配置示例: ``` type: custom:webrtc-camera entity: camera.bedroom_hd ```摄像头视频流中没有声音
Home Assistant 支持的音频编解码器是 "aac"、"ac3" 和 "mp3"。 Tapo 摄像头使用 PCM ALAW (alaw),这是不支持的。 [在此查看更多细节。](https://github.com/JurajNyiri/HomeAssistant-Tapo-Control/issues/58#issuecomment-762787442) **你可以使用 [AlexxIT 的 WebRTC Camera](https://github.com/AlexxIT/WebRTC) 来使声音正常工作。** 可用的配置示例: ``` type: custom:webrtc-camera entity: camera.bedroom_hd ```我输入了正确的密码,但看到错误 `Invalid authentication data. Make sure you have created your 3rd party account via Tapo app. You can also test if these credentials work via rtsp stream, for example VLC using link rtsp://username:password@IP Address:554/stream1`
你可能输入了错误的密码,或者遇到了摄像头限制。 - 检查日志中是否有任何错误消息 - 检查 HA 是否可以通过端口 554 和 2020 访问摄像头 最后,最可能的问题,请参阅 [Tapo 官方文档](https://www.tp-link.com/cz/support/faq/2742/) 以及:我看到错误 `Invalid cloud password.`
1. 确保你已在智能手机上的官方 Tapo 应用中开启了 Third Party Compatibility。Tapo App -> Me -> Tapo Lab -> Third-Party Compatibility -> On 2. 确保登录的“两步验证”(Two-Step Verification)已禁用。前往 Tapo 应用 > Me > View Account > Login Security > 关闭“两步验证”(Two-Step Verification)。 3. 重置你的密码。 4. 确保你的摄像头可以访问互联网。 5. 将摄像头重启几次。 6. 重置摄像头。从你的账户中将其删除,恢复出厂设置,在接入互联网的情况下将其重新添加,然后再将其添加回集成中7. 尝试关闭再开启 Third-Party Compatibility,并通过 Tapo 应用打开摄像头。 8. 如果所有这些方法都失败了(不太可能),请从第 1 步开始重复,等待几个小时后再试一次。支持的型号
用户报告称以下 Tapo 摄像头、门铃和门铃提示音功能正常: - TC55 - TC60 - TC70 - TC85 - C100 - C110 - C120 - C200 - C210 - C211 - C220 - C225 - C310 - C320WS - C410 - C420 - C420S2 - C500 - C510W - C520WS - C530WS - C720 - D100C - D230 - D235 该集成_应该_适用于任何其他基于 Tapo 摄像头的设备和门铃提示音。 如果你在其他型号上测试成功,请通过创建新的 issue 进行报告。 注意:如果设备没有暴露 Onvif 接口(很可能是电池或太阳能供电),移动事件将不起作用。关于摄像头时提到的 webhook 是什么?
摄像头使用 ONVIF 标准来传达移动事件。这种通信可以通过 2 种方式进行: 1. Pullpoint:客户端打开与摄像头的连接并等待,直到摄像头响应。摄像头仅在有事件需要传达时才响应。摄像头响应后,客户端重新打开连接并再次等待。 2. Webhook:客户端告诉摄像头接收事件的 URL。当事件发生时,摄像头将此信息传达给客户端定义的 URL。 Webhooks 是首选的通信方法,因为它们更快、更轻量。话虽如此; - Webhooks 仅支持 HTTP 的 HA 设置,因为 Tapo 摄像头不支持 HTTPS webhooks - Webhooks 要求在 HA 中定义正确的 base_url,以便传达的 URL 是正确的(你可以通过为 homeassistant.onvif 开启调试日志来检查发送的 URL) 以上几点是由此集成自动确定的,如果 HA 不符合条件,则 webhooks 会被禁用。话虽如此; - 有些摄像头(和/或固件)在同时创建 webhooks 和 pullpoint 连接时会死机,这种情况发生在启动时,用于检测是否支持 webhooks,以便通信可以回退到 pullpoint。 - 有些摄像头固件的 pullpoint 已损坏(1.3.6 C200),只有 webhooks 起作用 要使 webhooks 工作,用户需要做的就是确保他在 HTTP 上使用 HA,并且 HA 可以在传达的 URL 上访问。这个集成是免费且完全在本地运行吗?
是的,该集成是免费的,不需要任何付费订阅。它也是完全本地的,不需要摄像头或此集成访问互联网。执行自动化/脚本时出现 Exception: Invalid authentication data
摄像头的固件期望消息按顺序发送。并行发送会导致摄像头返回 401 代码,从而向我们显示此异常。 你需要改为按顺序发送自动化操作,如果需要,可能还要加上延迟。 请参阅 https://github.com/JurajNyiri/HomeAssistant-Tapo-Control/issues/488 了解更多信息。时间同步同步了不正确的时间
由于[未知根本原因](https://github.com/JurajNyiri/HomeAssistant-Tapo-Control/issues/307),某些摄像头在通过 ONVIF 标准设置时间时的行为与其他摄像头不同,目前尚未找到根本原因。 无法通过官方应用设置时间,并且此集成使用的是通过 ONVIF 标准的未公开且不受支持的摄像头功能。 如果时间设置不正确,例如:提前了 1 小时: 1. 确保 Home Assistant 和设备都设置了正确的时区 2. 如果仍然遇到问题,请前往 `/config/integrations/integration/tapo_control` 3. 点击你想为其同步时间的设备下的 Configure 4. 选择 `Configure time synchronization`,提交 5. 调整夏令时(DST)期间或非 DST 期间的时间偏移量
# 免责声明
此集成使用的是 Python 模块 Pytapo,这是一个用于实现与 Tapo 摄像头互操作性的非官方模块。
作者与 Tp-Link 或 Tapo 没有任何关联。
pytapo 库中使用的所有 api 请求都可以在互联网上找到(上面链接了示例),pytapo 模块纯粹只是这些 HTTPS 请求的封装。
作者不保证此集成的功能,并且不对任何损害负责。
本仓库中的所有产品名称、商标和注册商标均是其各自所有者的财产。标签:Home Assistant, Tapo, 摄像头控制, 智能家居, 物联网, 逆向工具