Home Assistant frontend.set_theme 动作详解:系统级默认主题设置与深浅色自动切换实战

发布时间:2026/9/16 18:59:44
Home Assistant frontend.set_theme 动作详解:系统级默认主题设置与深浅色自动切换实战 Home Assistant frontend.set_theme 动作详解系统级默认主题设置与深浅色自动切换实战【免费下载链接】home-assistant.io:blue_book: Home Assistant User documentation项目地址: https://gitcode.com/GitHub_Trending/ho/home-assistant.io本篇文章围绕 Home Assistant 的frontend.set_theme动作展开讲解如何通过该动作在系统层面设置默认亮色主题与可选暗色主题覆盖并在此基础上实现白天浅色、夜晚深色或启动即恢复偏好主题等典型自动化场景。读完本文你将掌握该动作在 UI 与 YAML 两种方式下的完整用法、其与用户个人主题选择的优先级关系以及配合frontend集成主题定义体系的完整配置链路。动作定位什么是 frontend.set_themefrontend.set_theme是 Home Assistantfrontend域domain下的一个系统级动作文档对其的定义是 Sets the theme Home Assistant uses by default设置 Home Assistant 默认使用的主题。它的核心作用是为亮色模式设置默认主题可选地为暗色模式单独设置一个覆盖主题dark theme override该设置在 Home Assistant 重启后会被保存并恢复不会因重启丢失典型用途是自动切换主题例如傍晚切换到更暗的观感、白天切换回更亮的观感。一个关键前提是优先级如果某个用户在个人资料页user profile手动选择了主题那么该用户的选择会覆盖这个动作设置的默认值仅对该用户生效。也就是说frontend.set_theme设置的是没有人手动指定时的系统默认值而不是强制锁定所有用户的主题。在动作文档的 front matter 中related_actions列出了与之配合使用的 frontend.reload_themes 动作——当你在 YAML 中修改主题定义后用它即可不重启而重新加载主题。前置条件主题必须先被定义并启用frontend.set_theme本身不负责创建主题。文档明确说明The theme has to be installed and enabled before you can set it主题必须先被安装并启用然后才能被设置为默认。因此理解该动作前必须先了解主题从哪里来。主题由 frontend 集成 提供它默认随default_config:启用如需手动启用可在configuration.yaml中添加# Example configuration.yaml entry frontend:在frontend:下通过themes:键定义主题例如# Example configuration.yaml entry frontend: themes: happy: primary-color: pink accent-color: orange sad: primary-color: steelblue accent-color: darkred上述配置定义了名为happy和sad的两个主题。需要注意如果 CSS 变量要使用十六进制颜色值必须加上引号否则 YAML 会将其当作注释处理如primary-color: #123456。主题同样支持基于默认暗色主题的扩展。新版格式通过modes键声明light/dark两种模式# Example configuration.yaml entry frontend: themes: happy: primary-color: pink text-primary-color: purple sad: primary-color: steelblue modes: dark: secondary-text-color: slategray day_and_night: primary-color: coral modes: light: secondary-text-color: olive dark: secondary-text-color: slategray主题happy旧版格式自动以默认亮色主题为基础主题sad使用modesdark子键后以默认暗色主题为基础最终渲染规则按默认暗色主题变量 → 主题顶层与模式无关的变量primary-color→ 模式专属变量secondary-text-color三层叠加主题day_and_night同时定义了light和dark两种模式允许用户在个人资料页手动切换默认跟随系统设置。此外themes:支持配置拆分可以直接写在configuration.yaml也可以用themes: !include themes.yaml引入独立文件或用themes: !include_dir_merge_named my_themes引入整个主题目录。修改完主题定义后需要先执行frontend.reload_themes动作或在重启后使新主题生效然后才能用frontend.set_theme将其设为默认。相关细节可继续阅读 frontend 集成的主题章节。在 UI 中调用从自动化或脚本设置主题如果你习惯用可视化方式构建自动化可以在界面上逐步完成进入SettingsAutomations scenes自动化与场景。打开一个已有的自动化或脚本或选择Create automationCreate new automation新建。如果是新自动化先在When部分添加触发器脚本不需要触发器它们由其他东西调用时才会运行。在Then do部分选择Add action添加动作。搜索并选择Set theme设置主题。选择要使用的Theme主题并可选地设置Dark theme override暗色主题覆盖。选择Save保存。UI 中的选项选项说明必填Theme默认使用的主题。选择default即使用 Home Assistant 标准主题否Dark theme override暗色模式下使用的主题。未设置暗色覆盖时暗色模式同样使用亮色主题否需要至少设置Theme或Dark theme override中的一项任何未设置的选项都会保持其之前的值不会被清空。在 YAML 中调用完整参数参考在 YAML 中动作名称为frontend.set_theme。最基本的示例如下action: frontend.set_theme data: name: default这个例子将默认的亮色主题设回 Home Assistant 标准主题。YAML 参数表参数说明必填类型name默认使用的主题名称。使用default即采用 Home Assistant 标准主题否stringname_dark暗色模式下使用的主题名称。使用none可移除暗色覆盖使暗色模式同样使用亮色主题否string与 UI 规则一致name和name_dark至少设置其中一个未设置的选项保持之前的取值。实战示例一日落深色、日出浅色最常见的场景是按太阳轨迹切换主题——黄昏后使用更暗的主题日出后回到更亮的外观。实现方式是使用两个触发器sun.sunset与sun.sunrise并通过trigger条件配合choose分支根据触发来源选择对应主题automation: alias: Day and night theme triggers: - trigger: sun.sunset id: night - trigger: sun.sunrise id: day actions: - choose: - conditions: - condition: trigger id: night sequence: - action: frontend.set_theme data: name: HA Dark - conditions: - condition: trigger id: day sequence: - action: frontend.set_theme data: name: HA Light要点拆解两个触发器共用一个id属性night/day供后续条件分支区分是哪个事件触发了自动化condition: trigger加id用于匹配具体触发器每个分支调用一次frontend.set_theme只设置name亮色默认主题。如果你的主题同时在暗色模式下生效可以继续搭配name_dark使用。实战示例二启动时应用偏好主题另一个实用场景是让所有用户和设备在 Home Assistant 启动时回退到你偏好的外观。通过在homeassistant触发器的start事件中同时设置亮色主题和暗色覆盖即可实现automation: alias: Apply preferred themes on startup triggers: - trigger: homeassistant event: start actions: - action: frontend.set_theme data: name: HA Light name_dark: HA Dark该示例同时设置name与name_dark保证无论设备处于亮色还是暗色模式都会使用你首选的观感。权限与优先级谁说了算关于该动作有几条重要行为规则原文 Good to know 部分仅管理员可执行frontend.set_theme只有管理员administrator账号可以运行。个人选择优先用户在个人资料页手动选择的主题会覆盖此动作设置的默认值并且该选择跨设备生效保存到用户档案中跟随账号在所有设备上应用。持久化保存通过此动作设置的主题会被保存Home Assistant 重启后自动恢复。至少设置一项name与name_dark至少要提供一个未提供的选项保留原值。个人资料页的主题选择器如下所示位于侧边栏底部用户账号首字母入口内由此可以清晰理解两层主题机制frontend.set_theme负责系统默认值面向所有人、可被自动化驱动而用户资料页的选项负责个人偏好覆盖系统默认、跨设备同步。两者完整的使用方式见 frontend 集成文档中的应用主题章节。配合动作与验证方式重新加载主题frontend.reload_themes 动作用于在编辑 YAML 主题定义后不重启地重新加载主题如果重载后当前设置的主题已不存在Home Assistant 会自动回退到标准主题。快速试跑无需编写 YAML也可以直接进入SettingsToolsActions搜索frontend.set_theme填写字段后点击Perform action在真实环境上立即验证效果。排查思路若动作未生效优先检查——目标主题是否已在frontend:下定义并成功加载执行账号是否具备管理员权限当前用户是否在个人资料页手动选过主题此时个人选择优先。通过frontend.set_theme、frontend.reload_themes与frontend集成的themes:定义体系组合使用你可以在不重启、不改用户偏好的前提下构建一套完整且自动化的系统级主题切换方案。【免费下载链接】home-assistant.io:blue_book: Home Assistant User documentation项目地址: https://gitcode.com/GitHub_Trending/ho/home-assistant.io创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

关于本文作者

来自尧图内容编辑团队

尧图内容编辑团队 内容团队

尧图内容编辑团队

本文由尧图网络内容编辑团队执笔。团队由资深项目经理、前端工程师与设计师组成,所有内容均来自亲手交付的真实项目,先讲清问题、再给出可落地的解法。尧图深耕北京网站建设十年,服务过京华建材集团、智造科技等各行业客户,把一线经验沉淀为可复用的行业观察。

  • 十年建站经验,覆盖建材、制造、服务、文创等
  • 项目经理把关选题与事实准确性
  • 工程师与设计师联合撰写专业细节
  • 统一编辑规范,保证文风与排版一致
  • 每月复盘转化数据,迭代选题方向

延伸阅读

相关资讯与近期热门内容

深度阅读推荐

建站决策前值得细读的三篇

网站改版的5个关键决策
2024-08-12

网站改版的5个关键决策

什么时候该改版、改到什么程度、如何避免流量掉光,京华建材集团改版复盘给出答案。

获取专属建站方案

看完文章,把您的行业与预算告诉我们,免费获取一份量身定制的官网建设方案与报价。

立即免费咨询