news 2026/9/16 19:54:40

Home Assistant 中 amcrest.set_color_bw 动作详解:切换 Amcrest / Dahua 摄像头彩色与黑白模式

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Home Assistant 中 amcrest.set_color_bw 动作详解:切换 Amcrest / Dahua 摄像头彩色与黑白模式

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_audioamcrest.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

核心必填参数如下:

参数必填类型说明
hoststring摄像头的 IP 地址或主机名;若使用主机名,需确保 DNS 解析正常
usernamestring访问摄像头的用户名;大多数 Amcrest 设备即使你在 App 中改过用户名,也仍然使用admin
passwordstring访问摄像头的密码
namestring覆盖摄像头显示名称;多摄像头场景下强烈建议设置,否则摄像头编号在每次重启时可能随机变化(默认Amcrest Camera
portinteger摄像头服务端口(默认80
resolutionstring分辨率选项: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 操作步骤如下:

  1. 进入Settings>Automations & scenes(设置 > 自动化与场景);
  2. 打开一个现有的自动化或脚本,或选择Create(创建)新建一个;
  3. 如果是新建自动化,在When(触发条件)部分添加一个触发器;脚本不需要触发器;
  4. Then do(执行动作)部分选择Add action(添加动作);
  5. 选择要控制的对象:在By target(按目标,参见下文 动作的目标)下选择要控制的摄像头,也可以选择区域(area)、设备(device)或标签(label);
  6. 在该目标对应的动作列表中,选择Amcrest: Set color mode(Amcrest:设置色彩模式);
  7. Color mode(色彩模式)字段中选择想要的模式;
  8. 选择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);
  • 合法值仅限autocolorbw三种,传其他值会被摄像头/集成拒绝。

该字段的 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: bw
alias: "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字段填入autocolorbw
  • 观察画面输出,彩色/黑白/自动三种模式应有肉眼可见的差异(自动模式通常依赖环境光照阈值)。

相关动作与组合使用

该动作的文档页在 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: driveway
alias: "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: driveway

enable_audio/disable_audio两个动作均无额外参数,只需指定目标即可(参见 source/_actions/amcrest.enable_audio.markdown 与 source/_actions/amcrest.disable_audio.markdown)。

常见问题与排查思路

  • 动作执行后画面没有变化:确认摄像头本身支持色彩模式切换(部分低端型号无红外/黑白硬件能力);确认color_bw只传了autocolorbw三值之一;检查 Amcrest 集成日志中是否有摄像头返回的错误码。
  • 找不到动作:确认amcrest集成已正确配置且摄像头实体已生成;动作按目标域camera过滤,先确保目标选择的是摄像头实体。
  • 无法一次切换多台摄像头:检查目标选择方式——应使用区域、楼层或标签,而不是逐个指定实体;多目标可以混用(参见 source/_includes/actions/targets.md)。
  • 夜间自动模式切不回彩色auto模式由摄像头内部的日夜切换逻辑决定,若摄像头未正确配置照度阈值,可能长期停留在黑白;此时可改用定时/日落触发的显式colorbw切换来保证行为可控。

如果问题仍无法解决,可参考 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),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/16 19:54:00

AnimatedDrawings完整教程:三步把儿童涂鸦变成会动的动画角色

AnimatedDrawings完整教程:三步把儿童涂鸦变成会动的动画角色 【免费下载链接】AnimatedDrawings Code to accompany "A Method for Animating Childrens Drawings of the Human Figure" 项目地址: https://gitcode.com/GitHub_Trending/an/AnimatedDra…

作者头像 李华
网站建设 2026/9/16 19:53:53

Python requests库网络请求卡死问题分析与解决方案

1. 问题现象与根源分析当使用Python的requests库进行网络请求时,经常会遇到程序卡死无响应的情况。这种问题通常表现为:程序长时间挂起不返回结果控制台无任何错误输出最终可能抛出requests.exceptions.Timeout异常在极端情况下甚至会导致整个脚本进程僵…

作者头像 李华
网站建设 2026/9/16 19:52:25

51单片机+Proteus仿真:多功能断路器开发设计全解析

简介:基于51单片机Proteus仿真的多功能断路器开发设计资料包,主要面向单片机初学者、电子类课程设计学生以及嵌入式项目开发者。资源围绕智能断路器展开,能够实现电流、电压、温度的实时检测,过压、欠压、过流、过热判断与报警控制…

作者头像 李华