跳转到内容

红外组件

IMPORTANT

此组件为实验性功能。API 可能随时更改,不遵循正常的破坏性变更策略。使用风险自负。 一旦 API 被认为稳定,此警告将被移除。

ESPHome 支持创建红外实体的组件,提供用于发送和接收原始红外(和射频)信号的标准化 API。红外实体在 ESPHome 中表示为无状态组件(类似于按钮),可以发送原始时序序列或接收时序序列并将其作为事件转发给 Home Assistant 等 API 客户端。

红外平台为 IR/RF 通信提供基础基础设施,在 ESPHome 设备和 API 客户端之间建立统一接口。这实现了无需重新编译固件的运行时信号传输,使其非常适合学习和重放 IR/RF 命令。

ESPHome 中的所有红外组件都有一个平台和一个名称。该组件作为无状态实体运行,支持动作(设备传输的 API 命令)和事件(设备接收到 API 客户端广播)。

# 示例红外配置
infrared:
- platform: ...
name: 客厅红外发射器
id: my_ir_transmitter

配置变量:

  • id (可选, 字符串):手动指定用于代码生成的 ID。idname 中至少必须指定一个。
  • name (可选, 字符串):红外实体的名称。idname 中至少必须指定一个。

NOTE

如果您为设备设置了 friendly_name,并且希望红外实体使用该名称,可以设置 name: None

  • icon (可选, 图标):手动设置前端红外实体使用的图标。

  • internal (可选, 布尔值):将此组件标记为内部。内部组件不会暴露给前端(如 Home Assistant)。仅指定 id 而不指定 name 会隐式将其设置为 true。

  • disabled_by_default (可选, 布尔值):如果为 true,则此实体不应添加到任何客户端的前端(通常是 Home Assistant),除非用户手动启用(通过 Home Assistant UI)。默认为 false

  • entity_category (可选, 字符串):实体的类别。有关可用选项列表,请参阅 https://developers.home-assistant.io/docs/core/entity/#generic-properties。设置为 "" 可移除默认实体类别。

红外组件使用原始时序序列操作,表示交替的标记(信号开启)和空格(信号关闭)周期,以微秒为单位。这提供了最大的灵活性,几乎可以支持任何 IR 或 RF 协议。

当红外实体支持发送功能时,它可以通过 API 发送原始时序序列。传输参数包括:

  • 原始时序数组:交替的标记/空格持续时间,以微秒为单位
  • 载波频率:可选的载波频率,单位为 Hz(0 = 无载波调制,典型用于 RF)
  • 重复次数:传输信号的次数(默认为 1)

原始时序格式允许 Home Assistant 等 API 客户端将特定协议的命令编码为原始时序,并通过红外实体发送。

当红外实体支持接收功能时,它捕获原始时序序列并将其作为事件发送给 API 客户端。这实现了:

  • 从现有遥控器学习 IR/RF 命令
  • 分析未知协议
  • 创建万能遥控器

接收是非阻塞的,可以与其他信号处理组件并行运行。

  • IR/RF 代理 - 将 ESPHome 的 remote_transmitter/remote_receiver 组件与红外 API 桥接,实现运行时信号控制