You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过input_select结合card_mod/level_color动态修改Home Assistant水箱颜色

Home Assistant水箱卡片动态颜色配置问题解决

问题背景

尝试通过input_select手动选择颜色,动态修改Home Assistant仪表盘中水箱卡片的背景色。已完成以下配置:

  1. 在configuration.yaml定义颜色选择器:
input_select:
  deposito_color:
    name: Tank Color
    options:
      - red
      - green
      - blue
      - orange
      - yellow
      - purple
      - cyan
      - gray
      - white
      - black
  1. 创建两种模板传感器将选项转换为CSS兼容值(RGB格式、十六进制格式),传感器状态显示正常,但卡片通过card_mod和level_color调用时始终显示默认颜色,卡片配置如下:
card_mod:
  style: |
    ha-card {
      background-color: [[[
        return hass.states["sensor.color_deposito_rgb"].state || "rgb(155,155,0)";
      ]]];
    }

level_color: |
  [[[
    return hass.states["sensor.color_deposito_rgb"].state || "rgb(155,155,0)";
  ]]]

full_value: "100"

核心问题解答

1. 颜色格式兼容性

  • card_mod的background-color和水箱卡片的level_color都支持**rgb(R,G,B)格式和十六进制#HEX格式**,两种格式均可正常识别,无需使用[R,G,B]数组格式。

2. 传感器状态访问问题

你的模板语法本身没有错误,但需注意两点:

  • 确认sensor.color_deposito_rgb的状态在开发者工具的「状态」页面中能随input_select的选择实时更新
  • 检查实体ID拼写是否完全一致,避免因大小写或字符错误导致无法访问

完整解决方案

步骤1:简化模板传感器(推荐十六进制格式)

用字典映射替代冗长的if-elif逻辑,维护更方便:

sensor:
  - platform: template
    sensors:
      color_deposito_rgb:
        friendly_name: "Tank Color RGB"
        value_template: >-
          {% set color_map = {
            'red': '#FF0000',
            'green': '#00FF00',
            'blue': '#0000FF',
            'orange': '#FFA500',
            'yellow': '#FFFF00',
            'purple': '#800080',
            'cyan': '#00FFFF',
            'gray': '#808080',
            'white': '#FFFFFF',
            'black': '#000000'
          } %}
          {{ color_map.get(states('input_select.deposito_color'), '#9B9B00') }}

步骤2:修正卡片配置

针对自定义水箱卡片(如custom:tank-card),确保level_color的模板字符串用引号包裹,避免YAML解析错误:

type: custom:tank-card
full_value: "100"
# 补充其他必要的卡片属性(如实体、标题等)
card_mod:
  style: |
    ha-card {
      background-color: [[[ return hass.states['sensor.color_deposito_rgb'].state || '#9B9B00'; ]]];
    }
level_color: "[[[ return hass.states['sensor.color_deposito_rgb'].state || '#9B9B00'; ]]]"

步骤3:验证生效

  1. 重启Home Assistant加载新配置
  2. 在开发者工具「状态」页确认sensor.color_deposito_rgb的状态随input_select.deposito_color变化
  3. 刷新仪表盘,测试颜色是否动态更新

内容的提问来源于stack exchange,提问作者Brais Fernandez

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.12 10:52:36