Home Assistant 中 Agent DVR 摄像头告警开关:agent_dvr.enable_alerts 动作完全指南
【免费下载链接】home-assistant.io:blue_book: Home Assistant User documentation项目地址: https://gitcode.com/GitHub_Trending/ho/home-assistant.io
导读
本文聚焦 Home Assistant 官方文档中agent_dvr.enable_alerts动作(Action,旧称服务 Service)的完整用法。通过本文,你将掌握:如何在 UI 可视化界面与 YAML 两种方式下为 Agent DVR 摄像头开启告警事件、target(目标)机制的精确配置方法、与agent_dvr.disable_alerts动作的组合应用,以及如何将告警开关接入自动化实现按需启停。文中所有操作均基于当前仓库 agent_dvr.enable_alerts 官方动作文档 与 Agent DVR 集成文档 编写。
动作语义:为 Agent DVR 摄像头开启告警事件
agent_dvr.enable_alerts是 Home Assistant 中 Agent DVR 集成提供的专用动作,其核心语义是:为指定的 Agent DVR 摄像头启用告警事件。当告警开启后,Agent DVR 服务端会为该摄像头持续生成告警事件(alert events),典型场景是检测到运动(motion)时触发告警,这些告警事件可被 Home Assistant 感知并用于驱动自动化。
从文档数据来看,该动作属于agent_dvr域,在 源文档 frontmatter 中声明其action名称为agent_dvr.enable_alerts,domain为agent_dvr,并声明了关联动作(related_actions)为agent_dvr.disable_alerts——两者是一对开/关操作,在实际自动化中通常成对出现。
前置条件:Agent DVR 集成的安装与配置
使用该动作前,必须先完成 Agent DVR 集成的配置。根据 Agent DVR 集成文档:
- Agent DVR 是面向 Windows 10、Mac 与 Linux 的免费软件 DVR 解决方案,支持以服务(service)或控制台应用(console application)方式运行,可管理海量第三方摄像头,并内置高级运动检测能力(含 DeepStack 物体识别集成)。
- 在 Home Assistant 中通过「设置 → 设备与服务 → 添加集成」以 IP 地址与端口添加,例如
http://192.168.1.3:8090/。 - 若 Agent DVR 服务端开启了Protect API,可将用户名密码写入 URL,例如
http://username:password@192.168.1.3:8090。 - 版本要求:必须使用 Agent DVRv2.6.1.0 及以上版本。
- 该集成属于本地轮询(Local Polling)类型的 Hub 集成,自 Home Assistant
0.110版本起引入,提供alarm_control_panel(报警控制面板)与camera(摄像头)两类平台;告警开关动作面向的就是其中的 camera 实体。
方式一:在 UI 中通过自动化或脚本开启告警
如果你习惯在界面上可视化构建自动化,Home Assistant 会逐步引导你完成整个动作配置,无需编写任何 YAML。根据官方动作文档的操作步骤:
- 进入设置(Settings)→ 自动化与场景(Automations & scenes)。
- 打开一个现有的自动化或脚本;也可以选择创建自动化(Create automation)→ 创建新自动化(Create new automation)。
- 若在创建新自动化,先在当(When)部分添加一个触发器;脚本(script)则不需要触发器,脚本在别处被调用时才运行。
- 在然后做(Then do)部分,选择添加动作(Add action)。
- 选择要控制的对象:在按目标(By target)下(详见下文 Targets 目标机制)选择你的 Agent DVR 摄像头。
- 在该目标展示的动作列表中,选择启用告警(Enable alerts)。
- 点击保存(Save)。
该动作在 UI 中没有任何额外可配置选项(文档原文:"This action has no additional options in the UI"),因此 UI 配置的核心就是「选对目标实体」。
方式二:在 YAML 中调用动作
对于习惯直接编写 YAML 或希望精确控制底层行为的用户,可在自动化或脚本中以agent_dvr.enable_alerts名称调用该动作。官方给出的基础 YAML 示例如下(文档原文):
action: agent_dvr.enable_alerts target: entity_id: camera.living_room在自动化中完整写法(动作部分)为:
automation: - alias: "Enable alerts for living room camera" trigger: # 示例触发器:家庭成员回家 - platform: state entity_id: person.owner to: "home" action: - action: agent_dvr.enable_alerts target: entity_id: camera.living_roomYAML 字段说明:
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
action | string | 是 | 固定为agent_dvr.enable_alerts |
target | object | 是 | 动作目标,至少指定一个实体、设备、区域、楼层或标签 |
target.entity_id | string/string[] | 二选一 | 摄像头实体 ID,如camera.living_room,可传多个实体组成列表 |
该动作必须有 target——目标就是动作的作用对象,Home Assistant 会对目标背后匹配的每一个camera域实体执行该动作(详见 actions/targets.md 模板)。
Targets 目标机制详解
根据目标机制说明,agent_dvr.enable_alerts支持五种目标类型,你可以将动作指向单个实体、设备、区域、楼层或标签,Home Assistant 会对目标背后所有匹配的 camera 实体执行动作:
- 实体(Entity):某一个具体的
camera实体,例如camera.living_room。 - 设备(Device):属于某设备的所有
camera实体。 - 区域(Area):某个房间/区域内的所有
camera实体。 - 楼层(Floor):某一楼层上的所有
camera实体。 - 标签(Label):共享某一标签的所有
camera实体。
你还可以在同一动作中混合不同目标类型——例如同时指定一个具体实体加一个区域,动作会一次性作用于二者覆盖的全部匹配实体。这意味着「一键开启全屋 NVR 摄像头告警」可以通过一个区域或标签目标轻松实现:
action: agent_dvr.enable_alerts target: area_id: living_room # 对整个客厅区域的 camera 实体生效立即试跑:无需写 YAML 的验证方式
按照官方 Try it yourself 指引,你可以在不写一行 YAML 的情况下实测该动作:进入设置 → 工具 → 动作(Settings > Tools > Actions,即开发者工具的服务页面),搜索agent_dvr.enable_alerts,填写目标字段,点击执行动作(Perform action),即可在真实实体上观察告警是否被开启。
配套动作与实战场景:结合 disable_alerts 按需启停
agent_dvr.enable_alerts的关联动作为 agent_dvr.disable_alerts,其语义是关闭指定 Agent DVR 摄像头的告警事件生成,两者互为反向操作,YAML 结构与 target 要求完全一致:
action: agent_dvr.disable_alerts target: entity_id: camera.living_room典型实战场景——「家中无人时开启告警、有人时关闭」:
automation: - alias: "Arm Agent DVR alerts when everyone leaves" trigger: - platform: state entity_id: person.owner, person.spouse to: "not_home" for: "00:05:00" action: - action: agent_dvr.enable_alerts target: area_id: all_cameras # 通过标签/区域批量开启 - alias: "Disarm Agent DVR alerts when someone arrives" trigger: - platform: state entity_id: person.owner to: "home" action: - action: agent_dvr.disable_alerts target: area_id: all_cameras # 通过标签/区域批量关闭补充:Agent DVR 集成还支持标准的 摄像头动作,例如开关摄像头、切换运动检测等;而告警开关动作专门控制「Agent DVR 服务端是否生成告警事件」,两者用途不同,可根据需求组合使用。
排查与求助
- 动作执行无反应时,请先确认 Agent DVR 服务端版本不低于v2.6.1.0(见集成文档的重要提示),并确认集成的连接地址(含 Protect API 凭据)配置正确。
- 确认目标选择正确:
agent_dvr.enable_alerts只对camera域实体生效,若目标下没有匹配的 camera 实体,动作不会产生效果。 - 若仍无法解决,官方建议(stuck 模板)是带上「你调用的动作名称 + 预期行为」前往 Home Assistant 社区论坛、Discord 或 Reddit 社区求助;也可以借助 AI 助手用自然语言描述需求来定位正确动作。
小结
agent_dvr.enable_alerts是 Home Assistant 与 Agent DVR 联动中控制摄像头告警的核心开关:在 UI 中它零配置、选对目标即可;在 YAML 中它以action + target结构调用,目标支持实体、设备、区域、楼层、标签五类,可与agent_dvr.disable_alerts组合实现「离家布防、回家撤防」的告警按需启停。配置好 Agent DVR 集成(v2.6.1.0+)后,配合 motion 告警事件,即可构建完整的本地视频告警自动化链路。
【免费下载链接】home-assistant.io:blue_book: Home Assistant User documentation项目地址: https://gitcode.com/GitHub_Trending/ho/home-assistant.io
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考