Home Assistant 中 amcrest.disable_recording 动作详解:停止 Amcrest/Dahua 摄像头连续录像
【免费下载链接】home-assistant.io:blue_book: Home Assistant User documentation项目地址: https://gitcode.com/GitHub_Trending/ho/home-assistant.io
amcrest.disable_recording是 Home Assistant 中 Amcrest 集成 提供的一个核心动作(action),用于立即停止 Amcrest 或 Dahua 摄像头持续向自身存储介质(SD 卡/NAS 等)写入录像。本文围绕该动作的完整用法展开:既包含在自动化、脚本与开发者工具中的实际操作步骤,也结合本仓库文档源码剖析其目标选择(targets)机制、YAML 调用形态,并与录制系列的其他动作对比,帮助你按需编排"何时录、何时停"的录像策略。
动作概述:作用与行为
根据 amcrest.disable_recording 动作文档 的说明,该动作的职责是:
停止你的 Amcrest 或 Dahua 摄像头持续向已配置的存储位置录像。
它对应的是摄像头"连续录像"(continuous recording)这一模式:只要该动作生效,摄像头不再把视频流持续写入其本地存储,直到再次通过amcrest.enable_recording重新开启。值得注意的是,这一动作控制的是摄像头本地的录像行为(设备端 SD 卡或存储位置),而非 Home Assistant 侧的快照、直播或录制。
该动作是录制动作系列中的一员,与其配套的动作包括:
| 动作 | 作用 |
|---|---|
| amcrest.enable_recording | 让摄像头持续录像到其配置的存储位置 |
| amcrest.disable_recording | 停止摄像头持续录像 |
| amcrest.enable_motion_recording | 检测到移动时录制一段片段 |
| amcrest.disable_motion_recording | 停止检测到移动时录制片段 |
可以看出,"持续录像"与"移动侦测录像"是两套相互独立的开关,可以根据实际场景自由组合(例如:白天关闭连续录像但保留移动录像,夜间离家时开启连续录像)。
在自动化与脚本中使用(UI 方式)
如果你倾向可视化构建自动化与脚本,Home Assistant 会逐步引导你完成该动作的配置,无需编写 YAML。按照动作文档中的步骤:
- 进入设置(Settings)>自动化与场景(Automations & scenes)。
- 打开一个已有的自动化或脚本,或选择创建(Create)新建一个。
- 若在创建新自动化,需在当...时(When)部分添加一个触发器;脚本不需要触发器。
- 在然后执行(Then do)部分,选择添加动作(Add action)。
- 在目标(By target)下选择你要控制的摄像头,也可以选择区域(area)、设备(device)或标签(label)。
- 从该目标展示的动作列表中选择Amcrest: Disable recording。
- 选择保存(Save)。
该动作在 UI 中没有额外的选项字段——你只需要指定目标,即可生效。
在 YAML 中使用
在 YAML 自动化或脚本中,该动作以amcrest.disable_recording调用,基础示例:
action: | action: amcrest.disable_recording target: entity_id: camera.driveway这段配置会停止camera.driveway摄像头的持续录像。该动作除 target 外没有其他可选数据字段,调用形态非常简洁。
如果将其嵌入一个完整的自动化中,例如"早晨离家后停止连续录像",可以这样组织:
alias: "Stop recording when leaving" triggers: - trigger: state entity_id: person.me to: "not_home" actions: - action: amcrest.disable_recording target: entity_id: camera.driveway动作的目标(Targets)机制
amcrest.disable_recording需要一个目标(target),目标就是动作的作用对象。根据 targets.md 模板 的定义,目标可以指向:
- 实体(Entity):某个具体的
camera实体,例如camera.driveway。 - 设备(Device):属于某台设备的所有
camera实体。 - 区域(Area):某个房间/区域内所有
camera实体。 - 楼层(Floor):某个楼层上所有
camera实体。 - 标签(Label):共享同一标签的所有
camera实体。
你还可以在同一动作中混合不同类型的目标,例如同时指定一个具体实体和一个区域,Home Assistant 会对目标背后匹配的所有 camera 实体依次执行动作。这一机制意味着你可以用一条动作批量关闭整栋房子的摄像头录像,而无需逐个枚举实体。
快速验证:开发者工具(Try it yourself)
如果你想在编写任何 YAML 之前先验证动作的实际效果,可以打开设置(Settings)>工具(Tools)>动作(Actions)(开发者工具),搜索amcrest.disable_recording,填写目标后点击执行动作(Perform action),即可在不写一行 YAML 的情况下在真实实体上观察结果。这是排查"为什么录像没停"类问题的首选调试入口。
前置条件:Amcrest 集成配置
要让上述动作可用,首先需要在configuration.yaml中配置 Amcrest 集成。最基础的配置示例:
# Example configuration.yaml entry amcrest: - host: IP_ADDRESS_CAMERA username: YOUR_USERNAME password: YOUR_PASSWORD其中常用配置项包括:
- host(必填):摄像头的 IP 地址或主机名。
- username(必填):访问摄像头的用户名,多数 Amcrest 设备即使在其 App 中另行配置了用户名,也仍使用
admin。 - password(必填):摄像头访问密码。
- name(可选,默认
Amcrest Camera):覆盖摄像头名称;多摄像头场景强烈建议设置,否则未命名时摄像头 ID 在每次重启后可能随机变化。 - port(可选,默认
80):摄像头运行端口。 - resolution(可选,默认
high):high对应 1080/720p,low对应 VGA(640x480p)。 - stream_source(可选,默认
snapshot):mjpeg使用原生 MJPEG 流,snapshot基于快照 API 生成流,rtsp则通过 RTSP 协议推流(需按 FFmpeg 集成 文档安装 ffmpeg)。 - scan_interval(可选,默认
10):传感器更新间隔(秒)。 - sensors:可启用
sdcard(SD 卡总空间与已用空间)、ptz_preset(PTZ 预置位数量)等传感器。
配置完成后需重启 Home Assistant 使配置生效。摄像头正确接入后,camera.xxx实体即会出现,amcrest.*系列动作也随之可用。
录像存储的观测方式
配合sensors中的sdcard选项,你可以同时监控摄像头本地存储的用量变化:
amcrest: - host: IP_ADDRESS_CAMERA username: YOUR_USERNAME password: YOUR_PASSWORD sensors: - sdcard这样一来,"关闭录像"动作的实际效果(SD 卡空间不再增长)可以直接通过传感器数据验证,便于自动化调试。
录制动作系列实战编排
将四个录制动作组合起来,可以形成一套完整的录像策略。例如,一个典型的"在家不录、离家连续录、夜晚保留移动录像"自动化:
alias: "Camera recording strategy" triggers: - trigger: state entity_id: person.me to: "home" id: arrived_home - trigger: state entity_id: person.me to: "not_home" id: left_home actions: - choose: - conditions: - condition: trigger id: arrived_home sequence: - action: amcrest.disable_recording target: entity_id: camera.driveway - action: amcrest.enable_motion_recording target: entity_id: camera.driveway - conditions: - condition: trigger id: left_home sequence: - action: amcrest.enable_recording target: entity_id: camera.driveway要点:disable_recording与disable_motion_recording互不干扰,连续录像关闭后,移动侦测录像是否保留由enable/disable_motion_recording独立决定,编排时需按需求显式设置。
常见问题排查
若动作执行后摄像头仍持续录像,可依序检查:
- 目标是否选对:确认 target 指向的实体确实是 Amcrest/Dahua 摄像头实体,而非其他集成生成的 camera 实体。
- 设备端配置:部分机型若在摄像头固件/App 中锁定了录像计划,设备端设置可能与动作冲突,需要先在摄像头管理界面(如 Settings > Storage / Record)确认录像模式可被远程改写。
- 固件兼容性:文档指出较新固件的 Amcrest 摄像头可能不再支持 MJPEG 高分辨率流;若涉及
stream_source配置,mjpeg不可用时建议改用rtsp。若集成本身状态异常,可先在开发者工具中执行动作并观察摄像头状态。 - 动作与实体状态:
amcrest.disable_recording没有返回值或状态回读,验证手段以观察存储用量(sdcard传感器)或摄像头管理界面为准。
若仍无法解决,可以前往 Home Assistant 社区论坛、Discord 或 /r/homeassistant 提问,描述你调用的动作与预期行为,便于快速定位。
小结
amcrest.disable_recording是精细控制 Amcrest/Dahua 摄像头本地连续录像的关键开关:它没有多余参数,核心就是"目标 + 执行",既能在 UI 中一键配置,也能在 YAML 自动化中与其他录制动作组合成完整的录像策略。配合 Amcrest 集成配置、目标(targets)批量机制与sdcard传感器验证,你可以轻松实现按在家/离家、昼夜等条件自动启停录像的实战方案。
【免费下载链接】home-assistant.io:blue_book: Home Assistant User documentation项目地址: https://gitcode.com/GitHub_Trending/ho/home-assistant.io
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考