跳转到内容

Infrared 组件

IMPORTANT

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

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

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

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

# 示例红外配置
infrared:
- platform: ...
name: Living Room IR Transmitter
id: my_ir_transmitter

配置变量:

  • id (可选, string):手动指定用于代码生成的 ID。至少必须指定 id 和 name 之一。
  • name (可选, string):红外实体的名称。至少必须指定 id 和 name 之一。

NOTE

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

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

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

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

  • entity_category (可选, string):实体的类别。 参见 https://developers.home-assistant.io/docs/core/entity/#generic-properties 查看可用选项列表。设置为 "" 以移除默认的实体类别。

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

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

  • Raw timings 数组:以微秒为单位的交替 mark/space 持续时间
  • 载波频率:可选的以 Hz 为单位的载波频率(0 = 无载波调制,通常用于 RF)
  • 重复计数:发送信号的次数(默认为 1)

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

当红外实体支持接收功能时,它捕获原始时序序列并将它们 作为事件发送给 API 客户端。这使得以下功能成为可能:

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

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

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