系列目录

回顾上一节

在上一节中,我们讲解了如何通过动态仪表盘创建能实时显示状态的分类导航卡片。这一功能不仅提升了我们控制智能家居设备的便捷性,也为整个家居系统带来了更加直观的管理体验。

本节预览

继续我们的个性化设置之旅,本节的重点是如何创建一个自动筛选卡片。当家中的灯光全部接入智能家居系统后,寻找并关闭所有已经打开的灯或者窗帘变得既费时又繁琐。为了提高效率,我们将向您展示如何仅在界面上显示当前需要关注的灯光或窗帘,使得操作更加快捷、直观。

准备工作

本次教程需要安装auto-entities卡片和mushroom卡片集(包括mushroom-cover-card)。

请确保你已经安装了Home Assistant并且可以访问其前端界面。

第一步:安装 HACS(Home Assistant 社区商店)

如果未安装HACS,请先进行安装。访问HACS 安装页面并按照说明操作。完成后,你将在Home Assistant的侧边栏中看到"HACS"。

第二步:通过 HACS 安装卡片

  1. 在Home Assistant的侧边栏中,点击"HACS"。
  2. 切换到"前端"选项卡。
  3. 点击右下角的"浏览库"按钮。
  4. 安装auto-entities:
    • 搜索"auto-entities"。
    • 找到auto-entities卡片后,点击它。
    • 点击"安装"按钮。
  5. 安装mushroom:
    • 搜索"mushroom"。
    • 找到mushroom卡片集后,点击它。
    • 点击"安装"按钮。

HACS将自动安装这些卡片并将其添加到您的资源中。

第三步:重启 Home Assistant(如果需要)

如果新安装的组件没有立即出现,可能需要重启Home Assistant:

  1. 转到"配置" -> "服务器控制"。
  2. 滚动到页面底部,点击"重启"。

完成这些步骤后,auto-entities和mushroom卡片集就安装完成了,你应该可以在仪表板上看到它们工作正常。记得根据你的实体和需求调整配置代码。


案例一:显示当前打开的灯光

接下来的教程会指导您如何在Home Assistant界面上通过创建一个自动筛选卡片显示打开的灯光,并且您将学会如何通过内嵌一个蘑菇卡来排列这些灯光。

筛选卡片演示-灯光

教程目标

创建一个自定义的auto-entities卡片,该卡片将自动显示所有当前处于开启状态的灯光。这将使您能够快速、直观地看到哪些灯光是开着的,并且需要注意。被标记为隐藏的灯光将不会显示。

创建自动筛选卡片

  1. 打开Home Assistant仪表板
  2. 转到你想要添加自动筛选卡片的视图。
  3. 编辑仪表板:点击屏幕右下角的铅笔图标进入编辑模式。
  4. 添加新卡片:点击"添加卡片"按钮,然后选择"手动添加卡"或者添加任意卡片之后,点击卡片左下角“显示代码编辑器”。
  5. 配置卡片:在配置区域粘贴以下代码:
type: custom:auto-entities
card:
  type: grid
  columns: 2
  square: false
  title: 打开的灯
card_param: cards
filter:
  include:
    - domain: light
      state: 'on'
      options:
        type: custom:mushroom-light-card
  exclude:
    - domain: light
      state: 'on'
      attributes:
        hidden: true
show_empty: true

 

此代码会创建一个卡片,显示所有开启状态的灯光,除了那些具有hidden: true属性的灯光。

  1. 保存卡片并退出编辑模式。
  2. 查看和测试卡片:确保卡片显示如预期。现在,你的界面上应该有一个卡片显示所有开启的灯光。点击任何一个灯光卡片,你可以直接从这里控制它们的开/关状态。

现在,您的Home Assistant仪表板上有一个自动筛选的灯光控制卡片。这个卡片会实时更新,只显示当前开启的灯光,让你能够快速了解家中哪些区域的灯光需要被关注。这个卡片的存在,使得灯光控制变得更加快捷和直观。


解析

这段代码是 Home Assistant Lovelace UI 中的一个 auto-entities 自定义卡片配置,它的作用是自动列出所有当前状态为开启的灯光实体,除非这些灯光实体具有 hidden: true 属性。下面是对代码中每个部分的解释:

type: custom:auto-entities: 这指定了卡片类型为 auto-entities,它是一个自定义卡片,需要通过 HACS 安装。

card: 这个部分定义了 auto-entities 卡片将如何显示包含的实体。在这个例子中,它嵌套了一个 grid 类型的卡片,用于以网格布局展示灯光。

  • type: grid: 这指定内嵌卡片的类型为网格布局。
  • columns: 2: 这设置了网格中每行显示的卡片数量为两个。
  • square: false: 这表示每个卡片不需要是正方形。
  • title: 打开的灯: 这是网格卡片的标题,显示为“打开的灯”。

card_param: cards: 这指出 auto-entities 卡片应该将找到的实体作为 cards 参数传递给网格卡片。

filter: 这个部分定义了哪些实体应该被包括或排除。

include: 这个列表定义了要包括的实体的条件。

  • domain: light: 只包括属于灯光 (light) 域的实体。
  • state: 'on': 只包括状态为开启 (on) 的实体。
  • options: 对于匹配的实体,这些选项将被应用。
    • type: custom:mushroom-light-card: 对于每个包括的实体,使用 mushroom-light-card 自定义卡片来显示它们。

exclude: 这个列表定义了要排除的实体的条件。

  • domain: light: 仍然是在灯光域内。
  • state: 'on': 状态为开启。
  • attributes: 基于实体的属性进行排除。
    • hidden: true: 如果实体具有 hidden 属性设置为 true,则排除这个实体。

show_empty: true: 这指定了即使没有找到匹配的实体,也应该显示卡片(即使它是空的)。

注意事项

  • 确保 auto-entitiesmushroom 卡片集已正确安装。
  • 如果卡片没有按预期显示,请检查代码是否正确复制粘贴,以及 auto-entitiesmushroom 是否已添加到资源文件中。
  • show_empty: true 选项意味着即使没有灯光是开启的,卡片也会显示。如果你不想看到空卡片,可以将这个选项设置为 false

案例二:显示当前打开的窗帘

在智能家居系统中,快速识别并操作打开的窗帘是一个常见需求。本教程将指导您如何在Home Assistant中创建一个自动筛选卡片,用于在界面上显示所有当前打开的窗帘,使得操作更加快捷和直观。

创建自动筛选卡片

卡片的创建过程请参考前一个案例的步骤,我们将直接进入卡片的配置:

输入配置代码

在配置编辑器中,粘贴以下代码:

type: custom:auto-entities
card:
  type: grid
  columns: 2
  square: false
card_param: cards
filter:
  template: |-
    {% for x in states.cover -%}
      {%- if x.state == 'open' -%}
        {{
          {
            'type': 'custom:mushroom-cover-card',
            'show_position_control': true,
            'show_buttons_control': true,
            'entity': x.entity_id,
            'name': state_attr(x.entity_id, 'friendly_name')|replace('Rollo ', '')
          }
        }},
      {%- endif -%}
    {%- endfor %}

 

此代码将自动筛选出所有状态为“打开”的窗帘实体,并为它们各自创建一个mushroom-cover-card。


解析

这段代码是 Home Assistant Lovelace 用户界面中的一个自定义 auto-entities 卡片配置。它会动态地为当前状态为“打开”的每个遮阳实体创建一个网格布局的 mushroom-cover-card 卡片。下面是对代码的逐行解释:

type: custom:auto-entities: 指定卡片类型为 auto-entities,这是一个可以基于特定条件动态显示实体的自定义卡片。

card: 此键定义了将用于显示符合过滤条件的实体的卡片设置。

  • type: grid: 指定实体将以网格布局显示。
  • columns: 2: 设置网格中的列数为2。
  • square: false: 指定网格中的卡片不需要是正方形的。

card_param: cards: 告诉 auto-entities 应该将过滤后的实体作为卡片传递给网格卡片。

filter: 此键包含用于过滤要显示哪些实体的条件。

  • template: 这是一个 Jinja2 模板,它会遍历 cover 域中的所有实体。
    • 循环({% for x in states.cover -%})迭代系统中的每个遮阳实体。
    • if 语句({%- if x.state == 'open' -%})检查实体的状态是否为“打开”。
    • if 语句内部,为每个打开的实体创建一个包含必要信息的 JSON 格式对象,以创建 mushroom-cover-card
      • 'type': 'custom:mushroom-cover-card': 指定每个实体使用的卡片类型。
      • 'show_position_control': true: 表示卡片应显示用于调整遮阳位置的控件。
      • 'show_buttons_control': true: 表示卡片应显示用于控制遮阳升降的按钮。
      • 'entity': x.entity_id: 指定卡片的实体 ID。
      • 'name': state_attr(x.entity_id, 'friendly_name')|replace('Rollo ', ''): 将卡片的名称设置为实体的友好名称,并去除“Rollo”这个词。

模板以逗号分隔的 JSON 格式对象列表结束,每个对象代表一个打开的遮阳实体的 mushroom-cover-card

总而言之,这段代码将为每个当前状态为“打开”的遮阳设备(如百叶窗或卷帘)显示一个 mushroom-cover-card 卡片的网格。每个卡片将显示位置控制和上/下按钮,并且会有一个去除了“Rollo”这个词的实体友好名称。

注意事项

  • 如果您发现有些窗帘没有正确显示,请检查它们的状态是否确实为“打开”。
  • 确保 auto-entitiesmushroom 卡片正确安装,并在资源文件中引用。
  • 如果您想要调整卡片的布局或样式,可以修改 grid 卡片的 columnssquare 参数。

结尾

随着您对Home Assistant的深入了解和使用,您会发现筛选卡片不仅仅是简化操作和视觉呈现的工具。它们是智能家居自动化的强大助手,能够帮助您更灵活、更智能地管理家中的每一个角落。

通过本教程,您已经掌握了如何使用auto-entities和mushroom卡片集来动态显示和控制灯光与窗帘。但这只是开始,Home Assistant的自定义筛选卡片可以应用到无数场景中,通过筛选区域和设备类型,就可以自动根据房间罗列出灯光列表,又或者显示对应的监控安全系统的状态、跟踪能耗、甚至是调整房间的温度和湿度。想象一下,经过一天的工作回到家,所有的灯光、窗帘、温度都已经根据您的喜好和习惯自动调整到最舒适的状态,这正是智能家居带给我们的便利。

掌握了筛选卡片的使用,您就可以创造出更多个性化的自动化场景,让您的智能家居系统更加智能,更能理解和满足您的生活需求。未来,随着更多智能设备的加入和技术的发展,您将能够实现更多我们现在尚未想象到的功能。所以,让我们继续探索,不断创新,用技术为生活带来更多可能。

感谢您对本篇文章阅读,期待在智能家居的道路上,与您一起不断前行,探索更多的可能性。