概述

今天分享一个我自用的HomeAssistant耗材监控卡片,这个卡片能够集中展示家中各种智能设备的耗材状态和电池电量,让你一眼就能了解所有设备的工作状态。通过Mushroom Chips Card实现,界面简洁美观,支持状态颜色变化和条件显示。

最终效果展示

耗材充足时:

text

🌡️ 23.5°C  💧 45%  🌀 12.5μg/m³  ☣️ 0.023mg/m³  ✅ 耗材充足

耗材不足时:

text

🌡️ 23.5°C  💧 45%  🌀 12.5μg/m³  ☣️ 0.023mg/m³  🔴 空气净化器滤芯需要更换
⚠️ 水浸卫士电池电量低
⚠️ 温湿度计电池电量低

这个卡片主要包含以下几个部分:

  1. 环境监测:显示当前温度、湿度、PM10和PM2.5数值

  2. 状态指示:根据数值范围显示不同颜色图标

  3. 耗材监控:智能显示需要关注的耗材或电池问题

  4. 智能条件:所有设备正常时显示"耗材充足",有问题时只显示异常项目

配置步骤

第一步:安装必要组件

确保已安装以下组件:

  • Mushroom Cards(通过HACS安装)

  • card-mod(通过HACS安装)

第二步:配置groups.yaml

configuration.yaml中启用group组件:

yaml

group: !include groups.yaml

然后将以下代码添加到groups.yaml

yaml

# groups.yaml
# 耗材监控组
hao_cai:
  name: 耗材监控
  entities:
    - sensor.xiaomi_cn_845289709_va3_filter_life_level_p_4_1
    - sensor.yeelink_cn_blt_3_1kq920if8ck00_contrl_battery_level_p_2_1003
    - sensor.xiaomi_cn_822494120_lx40_filter_life_level_p_3_1
    - sensor.xiaomi_cn_822494120_lx40_filter_life_level_p_5_1
    - sensor.lumi_cn_blt_3_1l1mgh9k8c800_bmcn01_battery_level_p_3_1
    - sensor.miaomiaoc_cn_blt_3_1kpg1kpmckc01_t9_battery_level_p_2_1003
    - sensor.loock_t2pv1_559c_battery_level
    - sensor.loock_t2pv1_559c_battery_level_2
    - sensor.lumi_cn_blt_3_1n9o6tqf8ck01_mcn001_battery_level_p_2_1003
    - sensor.linp_cn_blt_3_1mrj1a1gccg00_es2_battery_level_p_4_1003
    - sensor.xiaomi_sw776_a8b5_battery_level

第三步:配置template.yaml

configuration.yaml中启用template组件:

yaml

template: !include template.yaml

然后将以下代码添加到template.yaml

yaml

# template.yaml
# 耗材监控模板传感器
- binary_sensor:
  - name: "空气净化器滤芯需要更换"
    unique_id: air_purifier_filter_low
    state: "{{ states('sensor.xiaomi_cn_845289709_va3_filter_life_level_p_4_1')|float < 20 }}"
    device_class: problem
    attributes:
      device_name: "米家空气净化器"
      original_value: "{{ states('sensor.xiaomi_cn_845289709_va3_filter_life_level_p_4_1') }}"
      friendly_name: "空气净化器滤芯"

  - name: "双键无线开关电池电量低"
    unique_id: double_button_switch_battery_low
    state: "{{ states('sensor.yeelink_cn_blt_3_1kq920if8ck00_contrl_battery_level_p_2_1003')|float < 20 }}"
    device_class: battery
    attributes:
      device_name: "双键无线开关"
      original_value: "{{ states('sensor.yeelink_cn_blt_3_1kq920if8ck00_contrl_battery_level_p_2_1003') }}"
      friendly_name: "双键无线开关电池"

  - name: "净水器复合滤芯需要更换"
    unique_id: water_filter_composite_low
    state: "{{ states('sensor.xiaomi_cn_822494120_lx40_filter_life_level_p_3_1')|float < 20 }}"
    device_class: problem
    attributes:
      device_name: "米家净水器"
      original_value: "{{ states('sensor.xiaomi_cn_822494120_lx40_filter_life_level_p_3_1') }}"
      filter_type: "复合滤芯"
      friendly_name: "净水器复合滤芯"

  - name: "净水器RO滤芯需要更换"
    unique_id: water_filter_ro_low
    state: "{{ states('sensor.xiaomi_cn_822494120_lx40_filter_life_level_p_5_1')|float < 20 }}"
    device_class: problem
    attributes:
      device_name: "米家净水器"
      original_value: "{{ states('sensor.xiaomi_cn_822494120_lx40_filter_life_level_p_5_1') }}"
      filter_type: "RO反渗透滤芯"
      friendly_name: "净水器RO滤芯"

  - name: "水浸卫士电池电量低"
    unique_id: water_leak_detector_battery_low
    state: "{{ states('sensor.lumi_cn_blt_3_1l1mgh9k8c800_bmcn01_battery_level_p_3_1')|float < 20 }}"
    device_class: battery
    attributes:
      device_name: "小米水浸卫士"
      original_value: "{{ states('sensor.lumi_cn_blt_3_1l1mgh9k8c800_bmcn01_battery_level_p_3_1') }}"
      friendly_name: "水浸卫士电池"

  - name: "温湿度计电池电量低"
    unique_id: temperature_humidity_battery_low
    state: "{{ states('sensor.miaomiaoc_cn_blt_3_1kpg1kpmckc01_t9_battery_level_p_2_1003')|float < 20 }}"
    device_class: battery
    attributes:
      device_name: "米家智能温湿度计"
      original_value: "{{ states('sensor.miaomiaoc_cn_blt_3_1kpg1kpmckc01_t9_battery_level_p_2_1003') }}"
      friendly_name: "温湿度计电池"

  - name: "智能门锁电池电量低"
    unique_id: smart_lock_battery_low
    state: "{{ states('sensor.loock_t2pv1_559c_battery_level')|float < 20 }}"
    device_class: battery
    attributes:
      device_name: "小米智能门锁"
      original_value: "{{ states('sensor.loock_t2pv1_559c_battery_level') }}"
      friendly_name: "智能门锁电池"

  - name: "门锁猫眼电池电量低"
    unique_id: smart_lock_peephole_battery_low
    state: "{{ states('sensor.loock_t2pv1_559c_battery_level_2')|float < 20 }}"
    device_class: battery
    attributes:
      device_name: "小米智能门锁猫眼"
      original_value: "{{ states('sensor.loock_t2pv1_559c_battery_level_2') }}"
      friendly_name: "门锁猫眼电池"

  - name: "蓝牙无线开关电池电量低"
    unique_id: bluetooth_switch_battery_low
    state: "{{ states('sensor.lumi_cn_blt_3_1n9o6tqf8ck01_mcn001_battery_level_p_2_1003')|float < 20 }}"
    device_class: battery
    attributes:
      device_name: "小米蓝牙无线开关"
      original_value: "{{ states('sensor.lumi_cn_blt_3_1n9o6tqf8ck01_mcn001_battery_level_p_2_1003') }}"
      friendly_name: "蓝牙无线开关电池"

  - name: "人体存在传感器电池电量低"
    unique_id: presence_sensor_battery_low
    state: "{{ states('sensor.linp_cn_blt_3_1mrj1a1gccg00_es2_battery_level_p_4_1003')|float < 20 }}"
    device_class: battery
    attributes:
      device_name: "领普人体存在传感器ES3"
      original_value: "{{ states('sensor.linp_cn_blt_3_1mrj1a1gccg00_es2_battery_level_p_4_1003') }}"
      friendly_name: "人体存在传感器电池"

第四步:添加卡片到仪表板

在HomeAssistant的仪表板编辑器中,添加一个Mushroom Chips Card,并粘贴以下完整配置代码:

yaml

type: custom:mushroom-chips-card
card_mod:
  style: |
    :host {
      --chip-background: transparent !important;
      --chip-border-color: transparent !important;
      --chip-border-width: 0px !important;
      --chip-box-shadow: none !important;
    }
    ha-card {
      border: none !important;
      box-shadow: none !important;
      background: transparent !important;
    }
    mushroom-chip {
      border: none !important;
      box-shadow: none !important;
      background: transparent !important;
    }
    mushroom-chip > * {
      border: none !important;
      box-shadow: none !important;
      background: transparent !important;
    }
    mushroom-state-item {
      border: none !important;
      --shape-color: transparent !important;
      box-shadow: none !important;
      background: transparent !important;
    }
chips:
  # 温度显示芯片
  - type: template
    entity: sensor.miaomiaoc_cn_blt_3_1kpg1kpmckc01_t9_temperature_p_3_1001
    icon: mdi:thermometer
    icon_color: >
      {% set temp =
      states('sensor.miaomiaoc_cn_blt_3_1kpg1kpmckc01_t9_temperature_p_3_1001')
      | float %} 
      {% if temp < 18 %} blue 
      {% elif temp < 26 %} green 
      {% else %} red 
      {% endif %}
    content: >
      {{ states('sensor.miaomiaoc_cn_blt_3_1kpg1kpmckc01_t9_temperature_p_3_1001')
      | float | round(1) }}°C
    tap_action:
      action: more-info
    hold_action:
      action: more-info

  # 湿度显示芯片
  - type: template
    entity: sensor.miaomiaoc_cn_blt_3_1kpg1kpmckc01_t9_relative_humidity_p_3_1002
    icon: mdi:water-percent
    icon_color: >
      {% set humi =
      states('sensor.miaomiaoc_cn_blt_3_1kpg1kpmckc01_t9_relative_humidity_p_3_1002')
      | float %} 
      {% if humi < 30 %} orange 
      {% elif humi < 70 %} green 
      {% else %} purple 
      {% endif %}
    content: >
      {{ states('sensor.miaomiaoc_cn_blt_3_1kpg1kpmckc01_t9_relative_humidity_p_3_1002')
      | float | round(0) | int }}%
    tap_action:
      action: more-info
    hold_action:
      action: more-info

  # PM10显示芯片
  - type: template
    entity: sensor.xiaomi_cn_845289709_va3_pm10_density_p_3_5
    icon: mdi:air-filter
    icon_color: >
      {% set pm10 = states('sensor.xiaomi_cn_845289709_va3_pm10_density_p_3_5')
      | float %} 
      {% if pm10 <= 50 %} green 
      {% elif pm10 <= 150 %} yellow 
      {% else %} deep-orange 
      {% endif %}
    content: >
      {{ states('sensor.xiaomi_cn_845289709_va3_pm10_density_p_3_5') | float |
      round(1) }} μg/m³
    tap_action:
      action: more-info
    hold_action:
      action: more-info

  # PM2.5显示芯片
  - type: template
    entity: sensor.xiaomi_cn_845289709_va3_pm2_5_density_p_3_4
    icon: mdi:cloud
    icon_color: >
      {% set pm25 = states('sensor.xiaomi_cn_845289709_va3_pm2_5_density_p_3_4')
      | float %} 
      {% if pm25 <= 35 %} green 
      {% elif pm25 <= 75 %} yellow 
      {% else %} deep-orange 
      {% endif %}
    content: >
      {{ states('sensor.xiaomi_cn_845289709_va3_pm2_5_density_p_3_4') | float |
      round(1) }} μg/m³
    tap_action:
      action: more-info
    hold_action:
      action: more-info

  # 条件芯片:所有耗材充足时显示
  - type: conditional
    conditions:
      - condition: state
        entity: binary_sensor.kong_qi_jing_hua_qi_lu_xin_xu_yao_geng_huan
        state: "off"
      - condition: state
        entity: binary_sensor.lan_ya_wu_xian_kai_guan_dian_chi_dian_liang_di
        state: "off"
      - condition: state
        entity: binary_sensor.jing_shui_qi_fu_he_lu_xin_xu_yao_geng_huan
        state: "off"
      - condition: state
        entity: binary_sensor.jing_shui_qi_rolu_xin_xu_yao_geng_huan
        state: "off"
      - condition: state
        entity: binary_sensor.shui_jin_wei_shi_dian_chi_dian_liang_di
        state: "off"
      - condition: state
        entity: binary_sensor.wen_shi_du_ji_dian_chi_dian_liang_di
        state: "off"
      - condition: state
        entity: binary_sensor.zhi_neng_men_suo_dian_chi_dian_liang_di
        state: "off"
      - condition: state
        entity: binary_sensor.men_suo_mao_yan_dian_chi_dian_liang_di
        state: "off"
      - condition: state
        entity: binary_sensor.lan_ya_wu_xian_kai_guan_dian_chi_dian_liang_di
        state: "off"
      - condition: state
        entity: binary_sensor.ren_ti_cun_zai_chuan_gan_qi_dian_chi_dian_liang_di
        state: "off"
    chip:
      type: template
      content: 耗材充足
      icon: mdi:check-circle
      icon_color: green
      entity: group.hao_cai
      tap_action:
        action: more-info
      hold_action:
        action: more-info

  # 条件芯片:空气净化器滤芯需要更换
  - type: conditional
    conditions:
      - condition: state
        entity: binary_sensor.kong_qi_jing_hua_qi_lu_xin_xu_yao_geng_huan
        state: "on"
    chip:
      type: template
      entity: sensor.xiaomi_cn_845289709_va3_filter_life_level_p_4_1
      content: 空气净化器滤芯需要更换
      icon: mdi:air-filter
      icon_color: red
      tap_action:
        action: more-info
      hold_action:
        action: more-info

  # 条件芯片:双键无线开关电池电量低
  - type: conditional
    conditions:
      - condition: state
        entity: binary_sensor.lan_ya_wu_xian_kai_guan_dian_chi_dian_liang_di
        state: "on"
    chip:
      type: template
      entity: sensor.yeelink_cn_blt_3_1kq920if8ck00_contrl_battery_level_p_2_1003
      content: 双键无线开关电池电量低
      icon: mdi:button-pointer
      icon_color: red
      tap_action:
        action: more-info
      hold_action:
        action: more-info

  # 条件芯片:净水器复合滤芯需要更换
  - type: conditional
    conditions:
      - condition: state
        entity: binary_sensor.jing_shui_qi_fu_he_lu_xin_xu_yao_geng_huan
        state: "on"
    chip:
      type: template
      entity: sensor.xiaomi_cn_822494120_lx40_filter_life_level_p_3_1
      content: 净水器复合滤芯需要更换
      icon: mdi:water-check
      icon_color: red
      tap_action:
        action: more-info
      hold_action:
        action: more-info

  # 条件芯片:净水器RO滤芯需要更换
  - type: conditional
    conditions:
      - condition: state
        entity: binary_sensor.jing_shui_qi_rolu_xin_xu_yao_geng_huan
        state: "on"
    chip:
      type: template
      entity: sensor.xiaomi_cn_822494120_lx40_filter_life_level_p_5_1
      content: 净水器RO滤芯需要更换
      icon: mdi:water-check
      icon_color: red
      tap_action:
        action: more-info
      hold_action:
        action: more-info

  # 条件芯片:水浸卫士电池电量低
  - type: conditional
    conditions:
      - condition: state
        entity: binary_sensor.shui_jin_wei_shi_dian_chi_dian_liang_di
        state: "on"
    chip:
      type: template
      entity: sensor.lumi_cn_blt_3_1l1mgh9k8c800_bmcn01_battery_level_p_3_1
      content: 水浸卫士电池电量低
      icon: mdi:water-alert
      icon_color: red
      tap_action:
        action: more-info
      hold_action:
        action: more-info

  # 条件芯片:温湿度计电池电量低
  - type: conditional
    conditions:
      - condition: state
        entity: binary_sensor.wen_shi_du_ji_dian_chi_dian_liang_di
        state: "on"
    chip:
      type: template
      entity: sensor.miaomiaoc_cn_blt_3_1kpg1kpmckc01_t9_battery_level_p_2_1003
      content: 温湿度计电池电量低
      icon: mdi:thermometer
      icon_color: red
      tap_action:
        action: more-info
      hold_action:
        action: more-info

  # 条件芯片:智能门锁电池电量低
  - type: conditional
    conditions:
      - condition: state
        entity: binary_sensor.zhi_neng_men_suo_dian_chi_dian_liang_di
        state: "on"
    chip:
      type: template
      entity: sensor.loock_t2pv1_559c_battery_level
      content: 智能门锁电池电量低
      icon: mdi:lock
      icon_color: red
      tap_action:
        action: more-info
      hold_action:
        action: more-info

  # 条件芯片:门锁猫眼电池电量低
  - type: conditional
    conditions:
      - condition: state
        entity: binary_sensor.men_suo_mao_yan_dian_chi_dian_liang_di
        state: "on"
    chip:
      type: template
      entity: sensor.loock_t2pv1_559c_battery_level_2
      content: 门锁猫眼电池电量低
      icon: mdi:eye
      icon_color: red
      tap_action:
        action: more-info
      hold_action:
        action: more-info

  # 条件芯片:蓝牙无线开关电池电量低
  - type: conditional
    conditions:
      - condition: state
        entity: binary_sensor.lan_ya_wu_xian_kai_guan_dian_chi_dian_liang_di
        state: "on"
    chip:
      type: template
      entity: sensor.lumi_cn_blt_3_1n9o6tqf8ck01_mcn001_battery_level_p_2_1003
      content: 蓝牙无线开关电池电量低
      icon: mdi:button-pointer
      icon_color: red
      tap_action:
        action: more-info
      hold_action:
        action: more-info

  # 条件芯片:人体存在传感器电池电量低
  - type: conditional
    conditions:
      - condition: state
        entity: binary_sensor.ren_ti_cun_zai_chuan_gan_qi_dian_chi_dian_liang_di
        state: "on"
    chip:
      type: template
      entity: sensor.linp_cn_blt_3_1mrj1a1gccg00_es2_battery_level_p_4_1003
      content: 人体存在传感器电池电量低
      icon: mdi:motion-sensor
      icon_color: red
      tap_action:
        action: more-info
      hold_action:
        action: more-info

卡片功能详解

1. 环境监测部分

  • 温度:显示当前温度,根据温度范围显示不同颜色(<18°C蓝色,18-26°C绿色,>26°C红色)

  • 湿度:显示当前湿度,根据湿度范围显示不同颜色(<30%橙色,30-70%绿色,>70%紫色)

  • PM10/PM2.5:显示空气质量数据,根据浓度显示不同颜色

2. 耗材监控逻辑

  • 智能显示:当所有设备都正常时,只显示一个"耗材充足"的绿色芯片

  • 问题优先:当有设备需要关注时,隐藏"耗材充足"芯片,只显示具体问题项目

  • 阈值设定:所有电池电量和滤芯寿命低于20%时触发警告

3. 支持的设备

  • 米家空气净化器(滤芯寿命)

  • 双键无线开关(电池电量)

  • 米家净水器(复合滤芯和RO滤芯寿命)

  • 小米水浸卫士(电池电量)

  • 米家智能温湿度计(电池电量)

  • 小米智能门锁(主电池和猫眼电池)

  • 小米蓝牙无线开关(电池电量)

  • 领普人体存在传感器ES3(电池电量)

自定义配置建议

1. 修改实体ID

将代码中的所有实体ID替换为你自己的设备实体ID。可以通过HomeAssistant的开发者工具查看设备实体ID。

2. 调整阈值

可以根据需要调整电量/寿命的警告阈值:

yaml

# 修改template.yaml中的阈值,例如将20改为30
state: "{{ states('sensor.your_entity_id')|float < 30 }}"

3. 添加更多设备

如需添加更多监控设备:

  1. groups.yaml中添加对应的传感器实体

  2. template.yaml中添加新的binary_sensor定义

  3. 在卡片配置中添加相应的条件芯片

4. 样式自定义

可以通过修改card-mod部分的CSS来自定义卡片外观:

yaml

card_mod:
  style: |
    /* 修改卡片背景色 */
    ha-card {
      background: rgba(255, 255, 255, 0.1) !important;
      backdrop-filter: blur(10px);
      border-radius: 15px;
    }

注意事项

  1. 确保所有引用的传感器实体ID正确无误

  2. 重启HomeAssistant使groups.yaml和template.yaml配置生效

  3. 如果设备名称显示为中文乱码,检查template.yaml的编码格式

  4. 条件芯片中的实体ID需要与template.yaml中定义的binary_sensor的unique_id对应

总结

这个耗材监控卡片通过简洁的方式集中展示了家庭智能设备的关键状态信息,实现了"一眼掌握全局"的效果。通过条件逻辑,它只在有问题时显示警告信息,避免了信息过载,是一个非常实用的HomeAssistant仪表板组件。

如果你有更多智能设备,可以按照相同的模式扩展这个卡片,构建属于你自己的智能家居监控中心!