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

HomeAssistant中card_mod封面图标颜色配置的TypeError修复咨询

修复HomeAssistant card_mod中Cover设备图标颜色配置的TypeError错误

问题描述

在HomeAssistant中使用card_mod组件为cover.woonkamer_covers设备根据状态设置仪表板图标颜色时,功能正常但日志持续抛出错误:

Homeassistant: TypeError: '>' not supported between instances of 'NoneType' and 'int'

原配置代码如下:

card_mod:
  style: |
    :host {
      {% if states('cover.woonkamer_covers') == None %}
        --card-mod-icon-color: var(--orange-color);
      {% elif states('cover.woonkamer_covers') == 'closing' %}
        --card-mod-icon-color: var(--yellow-color);
      {% elif state_attr('cover.woonkamer_covers', 'current_position') > 90 %}
        --card-mod-icon-color: var(--grey-color);
      {% elif state_attr('cover.woonkamer_covers', 'current_position') == 10 %}
        --card-mod-icon-color: var(--red-color);
      {% elif state_attr('cover.woonkamer_covers', 'current_position') == 0 %}
        --card-mod-icon-color: var(--red-color);
      {% else %}
        --card-mod-icon-color: var(--yellow-color);
      {% endif %}
    }

错误原因

  1. 类型不匹配:当cover设备未返回current_position属性(值为None)时,直接与整数进行比较会触发类型错误;
  2. 状态判断逻辑错误:states('entity_id')返回字符串类型,永远不会等于None,设备离线时实际返回'unavailable',原判断无法匹配该场景。

修复方案

通过两处修改解决问题:

  1. 使用int()过滤器将current_position转换为整数,同时添加default(0)处理属性为None的情况;
  2. 修正设备离线状态的判断逻辑,改为检测states('cover.woonkamer_covers') == 'unavailable'。

修复后的完整配置代码:

card_mod:
  style: |
    :host {
      {% if states('cover.woonkamer_covers') == 'unavailable' %}
        --card-mod-icon-color: var(--orange-color);
      {% elif states('cover.woonkamer_covers') == 'closing' %}
        --card-mod-icon-color: var(--yellow-color);
      {% elif state_attr('cover.woonkamer_covers', 'current_position') | int(default=0) > 90 %}
        --card-mod-icon-color: var(--grey-color);
      {% elif state_attr('cover.woonkamer_covers', 'current_position') | int(default=0) in [0, 10] %}
        --card-mod-icon-color: var(--red-color);
      {% else %}
        --card-mod-icon-color: var(--yellow-color);
      {% endif %}
    }

额外优化:将current_position == 0和==10的判断合并为in [0, 10],简化代码结构。

内容的提问来源于stack exchange,提问作者Perry van Dijk

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 03:57:34