Calendar
Calendar 集成提供日历实体,允许其他集成将日历整合到 Home Assistant 中。日历显示在日历仪表板上,可用于自动化。
This calendar is a building block integration that cannot be added to Home Assistant directly, but is used and provided by other integrations. A building block integration differs from a typical integration that connects to a device or service. Instead, other integrations use this calendar building block to provide entities, actions, and other functionality that you can use in your automations or dashboards. If one of your integrations uses this building block, this page documents the functionality the calendar building block offers.
日历入门
Home Assistant 的日历支持主要专为自动化用例设计。它允许您根据事件触发自动化,并访问日历集成提供的事件信息,无论实际日历数据存储在哪里。当给定集成支持时,Home Assistant 还可以创建、编辑和删除外部日历中的事件,使日历的读取和写入交互成为可能。
Home Assistant 并不旨在取代功能齐全的个人日历。相反,它与外部日历平台并存,并通过强大的自动化功能来补充它们。
根据您的需求,您可以从多种方式中选择:
-
使用现有的外部日历:探索内置的 日历集成 将 Home Assistant 连接到您首选的日历平台,并将其事件用于自动化。
-
运行您自己的功能齐全、注重隐私的日历平台:如 Nextcloud Calendar 或其他 自托管日历平台 等解决方案提供完整的日历功能,并通过 CalDAV 暴露日历。您可以使用 CalDAV 集成 将它们与 Home Assistant 集成,同时在 Home Assistant 之外保留完整的日历管理功能。
-
使用简单的本地事件存储进行自动化:Local Calendar 集成 提供完全本地的日历,专为自动化工作流设计。它不旨在作为通用的个人日历使用。
查看和管理日历
每个日历在 Home Assistant 中都表示为一个独立的实体,可以在日历仪表板上查看和管理。您可以在 Home Assistant 实例的主侧边栏中找到日历仪表板。
某些日历集成允许 Home Assistant 直接从 Home Assistant 管理您的日历。在这种情况下,您可以通过选择日历仪表板右下角的 添加事件 按钮来添加新事件。
日历仪表板提供对即将到来的事件的快速可见性和简单的事件编辑,使构建和调试依赖于日历数据的自动化变得更加容易。
另请参阅下文的 动作。
日历卡片
为了在仪表板上直接显示日历事件,Home Assistant 包含了 日历卡片。该卡片显示来自一个或多个日历实体的即将到来的事件,并提供日程的快速浏览视图。
日历实体的状态
状态显示是否存在活动事件:
- On:日历有活动事件。
- Off:日历没有活动事件。
此外,实体可以具有以下状态:
- Unavailable:实体当前不可用。
- Unknown:状态尚未知。
自动化
日历 触发器 支持基于事件开始或结束的自动化。请参阅 自动化 Home Assistant 入门指南或 自动化 文档以获取完整详细信息。
日历触发器是基于日历事件进行自动化的最佳方式。日历实体也可以用于根据其状态进行自动化,但这些功能有限,属性仅表示下一个事件。

YAML 中的日历触发器示例:
日历触发器通常不应使用自动化模式 single,以确保在多个事件同时开始时触发器可以触发(例如,改用 queued 或 parallel)。请注意,日历每 15 分钟读取一次。测试时,请确保不要计划距离当前时间少于 15 分钟的事件,否则您的触发器可能不会触发。
有关可用于条件或动作的额外触发器数据,请参阅 自动化触发器变量:日历。
自动化示例
以下是使用日历触发器的几个示例。
示例:日历事件通知
此示例自动化包括:
- 针对日历实体
calendar.personal。 - 在任何日历事件开始时。
- 发送包含事件标题和开始时间的通知。
- 允许多个事件同时开始。
示例:日历事件灯光计划
此示例包括:
- 针对日历实体
calendar.device_automation。 - 当事件摘要包含
Front Lights时。 - 在事件开始和结束时打开和关闭名为
light.front的灯光。
动作
某些日历集成允许 Home Assistant 使用动作直接管理您的日历。某些日历实体提供的动作如下所述,您也可以阅读更多关于 动作 的信息。
动作:创建事件
calendar.create_event 动作允许您添加新的日历事件。使用 目标选择器 选择日历 target,data 负载支持以下字段:
您可以使用 start_date_time 和 end_date_time,或 start_date 和 end_date,或 in。
::: 这是一个 YAML 动作的完整示例:
Home Assistant 日历不允许零持续时间的日历事件。以下将创建一个从"现在"开始、持续一分钟的事件。这可用于在日历中记录外部事件。
动作:获取事件
calendar.get_events 动作允许您用日期范围内的日历事件填充 响应数据。它可以返回来自多个日历的事件。
:::note
仅使用 end_date_time 或 duration 之一。
响应数据包含每个日历实体的一个字段(例如本例中的 calendar.school 和 calendar.work)。
每个日历实体有一个 events 字段,包含具有以下字段的事件列表:
此示例在另一个动作中使用带响应数据的模板:

