Home Assistant 中 amcrest.set_color_bw 动作详解:切换 Amcrest / Dahua 摄像头彩色与黑白模式
【免费下载链接】home-assistant.io:blue_book: Home Assistant User documentation项目地址: https://gitcode.com/GitHub_Trending/ho/home-assistant.io
导读
本文围绕 Home Assistant 的amcrest.set_color_bw动作展开,讲解如何通过自动化、脚本或开发者工具,将 Amcrest(及兼容的 Dahua)IP 摄像头在彩色(color)、黑白(bw)与自动(auto)三种色彩模式之间切换。读完本文,你将掌握该动作在 UI 与 YAML 两种场景下的完整配置方法、color_bw参数的取值语义、目标(target)选择规则,以及它与其他 Amcrest 动作(如音频开关)的组合用法。
动作概述:什么是 amcrest.set_color_bw
amcrest.set_color_bw是 Home Assistant 中Amcrest集成提供的一个动作(action),用于设置摄像头传感器的色彩模式。官方文档对该动作的定义是:
Sets the color mode of an Amcrest or Dahua camera.(设置 Amcrest 或 Dahua 摄像头的色彩模式。)
通过该动作,你可以:
- 将摄像头强制切换为彩色模式(
color); - 将摄像头强制切换为黑白模式(
bw); - 让摄像头自动根据环境光照决定使用彩色还是黑白(
auto)。
这一能力对夜间监控、红外切换、日间/夜间画面一致性控制等场景非常实用,尤其适合在自动化中结合日落日出时间或照度传感器,让摄像头在白天显示彩色、夜间自动进入黑白红外模式。
该动作对应的文档页面位于仓库的 source/_actions/amcrest.set_color_bw.markdown,属于 Home Assistant 文档站点中标准化生成的动作参考页之一。页面头部元数据(front matter)声明了它的domain: amcrest,并挂接了相关联动作(related actions)amcrest.enable_audio与amcrest.disable_audio,说明摄像头画面控制与音频流控制常被放在一起使用。
前置条件:Amcrest 集成的安装与配置
在调用amcrest.set_color_bw之前,需要先在 Home Assistant 中配置好Amcrest集成(该集成同时兼容 Dahua 摄像头和门铃)。集成配置入口文档位于 source/_integrations/amcrest.markdown,其基础配置方式是在configuration.yaml中加入:
# Example configuration.yaml entry amcrest: - host: IP_ADDRESS_CAMERA username: YOUR_USERNAME password: YOUR_PASSWORD核心必填参数如下:
| 参数 | 必填 | 类型 | 说明 |
|---|---|---|---|
host | 是 | string | 摄像头的 IP 地址或主机名;若使用主机名,需确保 DNS 解析正常 |
username | 是 | string | 访问摄像头的用户名;大多数 Amcrest 设备即使你在 App 中改过用户名,也仍然使用admin |
password | 是 | string | 访问摄像头的密码 |
name | 否 | string | 覆盖摄像头显示名称;多摄像头场景下强烈建议设置,否则摄像头编号在每次重启时可能随机变化(默认Amcrest Camera) |
port | 否 | integer | 摄像头服务端口(默认80) |
resolution | 否 | string | 分辨率选项:high对应高清(1080/720p),low对应 VGA(640x480p) |
完成配置并重启 Home Assistant 后,摄像头实体(通常为camera.*域)即可被动作定位为目标。值得注意的是,从仓库的文档结构看,Amcrest 集成目前支持 binary sensor、camera、sensor 等平台(见 source/_integrations/amcrest.markdown 中的ha_platforms元数据),而amcrest.set_color_bw的目标域被声明为camera。
在用户界面(UI)中使用该动作
如果你想以可视化方式构建自动化和脚本,Home Assistant 会逐步引导你完成整个动作的配置——选择目标、调整选项并保存,全程无需编写 YAML。相关引导文案定义在仓库的 source/_includes/actions/ui_header.md。
官方文档给出的 UI 操作步骤如下:
- 进入Settings>Automations & scenes(设置 > 自动化与场景);
- 打开一个现有的自动化或脚本,或选择Create(创建)新建一个;
- 如果是新建自动化,在When(触发条件)部分添加一个触发器;脚本不需要触发器;
- 在Then do(执行动作)部分选择Add action(添加动作);
- 选择要控制的对象:在By target(按目标,参见下文 动作的目标)下选择要控制的摄像头,也可以选择区域(area)、设备(device)或标签(label);
- 在该目标对应的动作列表中,选择Amcrest: Set color mode(Amcrest:设置色彩模式);
- 在Color mode(色彩模式)字段中选择想要的模式;
- 选择Save(保存)。
UI 中的选项
在 UI 中,该动作只有一个选项字段:
- Color mode(色彩模式):要设置的色彩模式。选择
auto让摄像头自动判断,color表示彩色,bw表示黑白。
该字段的描述文本由文档页面中的{% options_ui %}块提供(见 source/_actions/amcrest.set_color_bw.markdown)。其渲染逻辑由仓库插件 plugins/options_ui.rb 实现:该插件把options_ui块内的 YAML 解析为面向 UI 用户的配置项列表,并为每个字段生成名称、必填/可选标记(Required / Optional)以及 Markdown 描述。
在 YAML 中使用该动作
对于直接编辑 YAML、或希望精确掌握 Home Assistant 底层行为的开发者,文档提供了完整的 YAML 技术参考,见 source/_includes/actions/yaml_header.md。在 YAML 中,该动作的调用名称为amcrest.set_color_bw。
官方文档给出的基础示例:
action: amcrest.set_color_bw target: entity_id: camera.driveway data: color_bw: auto这段配置会把camera.driveway摄像头设置为自动色彩模式。color_bw的取值有三档:
| 取值 | 含义 |
|---|---|
auto | 由摄像头自动决定彩色或黑白(推荐日常使用) |
color | 强制彩色模式 |
bw | 强制黑白模式 |
YAML 选项参考
color_bw: description: "要设置的色彩模式,取值为 auto、color 或 bw 之一。" required: true type: string关键点:
color_bw是必填参数;- 类型为字符串(string);
- 合法值仅限
auto、color、bw三种,传其他值会被摄像头/集成拒绝。
该字段的 YAML 选项块由文档中的{% options_yaml %}标签定义,其渲染逻辑位于 plugins/options_yaml.rb。该插件复用了配置区块插件 plugins/configuration_basic.rb 的渲染管线:解析 YAML 映射后,为每个字段生成类型链接、必填/可选徽标和描述,最终输出统一的config-vars结构——这意味着文档站点上 UI 选项与 YAML 选项的视觉与信息格式完全一致,只是受众不同(UI 用户看人话描述,YAML 用户看字段名与类型约束)。
更完整的自动化示例
将上述动作放入真实自动化中,可以实现"日出后彩色、日落后黑白"的典型场景:
alias: "Switch driveway camera to B/W at sunset" triggers: - trigger: sun event: sunset actions: - action: amcrest.set_color_bw target: entity_id: camera.driveway data: color_bw: bwalias: "Switch driveway camera to color at sunrise" triggers: - trigger: sun event: sunrise actions: - action: amcrest.set_color_bw target: entity_id: camera.driveway data: color_bw: color你也可以把动作放进脚本(script)中按需调用,或在仪表盘上通过按钮/场景触发同样的切换逻辑。
动作的目标(Targets)
amcrest.set_color_bw必须指定一个目标(target),目标是动作作用的对象。你可以把目标指向单个实体、设备、区域、楼层或标签,Home Assistant 会对该目标下所有匹配的camera实体执行动作。目标规则的定义位于 source/_includes/actions/targets.md,具体支持的目标类型如下:
- Entity(实体):单个
camera实体,例如camera.living_room; - Device(设备):属于某台设备的所有
camera实体; - Area(区域):某个房间或区域内的所有
camera实体; - Floor(楼层):某个楼层上的所有
camera实体; - Label(标签):共享某个标签的所有
camera实体。
你还可以在一次动作中组合不同类型的目标,例如同时指定一个具体实体和一个区域,让动作同时对两者生效。这一点对多摄像头部署非常有用——比如给院子里所有摄像头打上同一个标签,然后一条动作即可把整组摄像头批量切换到黑白模式。
快速试跑:在开发者工具中调用
如果你只想验证摄像头行为而不想写任何 YAML,可以直接在开发者工具中试跑。相关指引见 source/_includes/actions/try_it.md:
打开Settings>Tools>Actions(设置 > 工具 > 动作),搜索amcrest.set_color_bw,填入字段后选择Perform action(执行动作),即可在真实实体上立即看到效果。
试跑时注意:
- 目标(Target)至少选择一个摄像头实体;
color_bw字段填入auto、color或bw;- 观察画面输出,彩色/黑白/自动三种模式应有肉眼可见的差异(自动模式通常依赖环境光照阈值)。
相关动作与组合使用
该动作的文档页在 front matter 中声明了两个相关联动作(见 source/_actions/amcrest.set_color_bw.markdown 的related_actions字段,相关动作的列表渲染逻辑见 source/_includes/actions/related.md):
- amcrest.enable_audio:启用 Amcrest / Dahua 摄像头的音频流;
- amcrest.disable_audio:禁用摄像头的音频流。
这三个动作可以协同编排。例如,夜间模式自动化可以同时把摄像头切到黑白模式并关闭音频流,白天再一并恢复彩色与音频:
alias: "Night mode for cameras" triggers: - trigger: time at: "22:00:00" actions: - action: amcrest.set_color_bw target: area: driveway data: color_bw: bw - action: amcrest.disable_audio target: area: drivewayalias: "Day mode for cameras" triggers: - trigger: time at: "07:00:00" actions: - action: amcrest.set_color_bw target: area: driveway data: color_bw: color - action: amcrest.enable_audio target: area: drivewayenable_audio/disable_audio两个动作均无额外参数,只需指定目标即可(参见 source/_actions/amcrest.enable_audio.markdown 与 source/_actions/amcrest.disable_audio.markdown)。
常见问题与排查思路
- 动作执行后画面没有变化:确认摄像头本身支持色彩模式切换(部分低端型号无红外/黑白硬件能力);确认
color_bw只传了auto、color、bw三值之一;检查 Amcrest 集成日志中是否有摄像头返回的错误码。 - 找不到动作:确认
amcrest集成已正确配置且摄像头实体已生成;动作按目标域camera过滤,先确保目标选择的是摄像头实体。 - 无法一次切换多台摄像头:检查目标选择方式——应使用区域、楼层或标签,而不是逐个指定实体;多目标可以混用(参见 source/_includes/actions/targets.md)。
- 夜间自动模式切不回彩色:
auto模式由摄像头内部的日夜切换逻辑决定,若摄像头未正确配置照度阈值,可能长期停留在黑白;此时可改用定时/日落触发的显式color与bw切换来保证行为可控。
如果问题仍无法解决,可参考 source/_includes/actions/stuck.md 中的建议:在社区论坛发帖时附上你调用的动作、目标实体以及预期与实际表现,以便快速定位。
小结
amcrest.set_color_bw是控制 Amcrest / Dahua 摄像头日夜画面的标准入口,参数极少但语义明确:UI 中通过Amcrest: Set color mode可视化配置,YAML 中通过必填的color_bw字段(auto/color/bw)精确控制。结合目标系统(实体、设备、区域、楼层、标签)与相关联的音频开关动作,你可以用少量自动化代码实现整个安防摄像头系统的日夜策略管理。本文所引用的官方动作文档位于 source/_actions/amcrest.set_color_bw.markdown,Amcrest 集成整体配置可查阅 source/_integrations/amcrest.markdown。
【免费下载链接】home-assistant.io:blue_book: Home Assistant User documentation项目地址: https://gitcode.com/GitHub_Trending/ho/home-assistant.io
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考