如何在Home Assistant中根据状态更改图标颜色
根据设备状态更改Home Assistant图标颜色的方法
针对你提供的洗衣机运行状态传感器配置,有两种常用方法可以实现根据状态改变图标颜色:
方法一:通过传感器配置结合state_color实现
Home Assistant的模板传感器支持state_color属性,开启后会根据状态值自动适配图标颜色。不过需要先简化传感器的状态值(避免带动态功率字符串,方便颜色映射),同时保留功率显示作为属性:
修改后的configuration.yaml配置:
washing_machine_running: friendly_name: "洗衣机运行状态" value_template: > {% if states('sensor.shelly_bathroom_washing_machine_power') != 'unknown' %} {% set power_consumption = states('sensor.shelly_bathroom_washing_machine_power') | float %} {% if power_consumption > 3 %} 运行中 {% else %} 未运行 {% endif %} {% else %} 未运行 {% endif %} # 添加属性显示实时功率 attribute_templates: power_consumption: > {% if states('sensor.shelly_bathroom_washing_machine_power') != 'unknown' %} {{ states('sensor.shelly_bathroom_washing_machine_power') | float }} {% else %} 0 {% endif %} icon_template: >- {% if is_state('sensor.washing_machine_running', '运行中') %} mdi:washing-machine {% else %} mdi:washing-machine-off {% endif %} # 开启状态颜色适配 state_color: true
配置完成后,在UI的Entities卡片中勾选「状态颜色」选项,设备运行时图标会显示默认激活色(如蓝色),停止时显示灰色。
方法二:在UI卡片中自定义样式(无需修改配置文件)
如果不想改动configuration.yaml,可以直接在UI编辑卡片时添加自定义样式,精准控制颜色:
用Entities卡片自定义样式
编辑Entities卡片时,在「样式」字段中添加以下代码:
style: | :host { --paper-item-icon-color: {% if states('sensor.washing_machine_running').startswith('Running') %}#2196F3{% else %}#9E9E9E{% endif %}; }
将#2196F3替换为你想要的运行状态颜色,#9E9E9E替换为停止状态颜色(支持任意十六进制颜色码)。
用Template卡片灵活控制
也可以直接使用Template卡片,更直观地定义图标和颜色:
type: template entity: sensor.washing_machine_running icon: >- {% if states('sensor.washing_machine_running').startswith('Running') %}mdi:washing-machine{% else %}mdi:washing-machine-off{% endif %} icon_color: >- {% if states('sensor.washing_machine_running').startswith('Running') %}blue{% else %}gray{% endif %} name: 洗衣机运行状态 state: "{{ states('sensor.washing_machine_running') }}"
这里的icon_color支持直接使用颜色名称(如blue、red)或十六进制颜色码。
内容的提问来源于stack exchange,提问作者user829174
相关产品推荐
相关产品推荐

