远程发射器
remote_transmitter 组件让你发送各种常见的遥控信号,例如红外
或 433 MHz 射频(RF)信号。
该组件分为两个部分:
- 远程发射器 “hub”,它定义引脚和一些附加设置,以及…
- 用于发送编码远程信号的各个操作。
NOTE
此组件在 ESP32 或其变体上性能最佳;大多数都有专用的 RMT 硬件外设,可确保 精确的信号时序。ESP32-C2 和 ESP32-C61 没有 RMT 硬件, 改用软件(GPIO 位翻转)实现。
# 示例配置条目remote_transmitter: pin: GPIOXX carrier_duty_percent: 50%-
pin (必选, Pin): 用于发送远程信号的引脚。
-
carrier_duty_percent (必选, int): 远程信号处于开启状态的时间占比。例如,红外协议 使用载波信号调制信号。如果你使用 IR LED,请将其设为
50%;对于 RF 应用(如 433 MHz 发射器),设为100%。 -
id (可选, ID): 手动指定用于代码生成的 ID。当单个设备上连接多个 发射器时很有用。
ESP32 RMT 配置变量
Section titled “ESP32 RMT 配置变量”NOTE
以下选项仅适用于带有 RMT 硬件的 ESP32 变体。它们在 ESP32-C2 和 ESP32-C61 上不可用,这两个变体使用软件实现。
- rmt_symbols (可选, int): 当启用
use_dma时,此选项设置驱动内部 DMA 缓冲区的大小。 当 DMA 禁用时,它指定分配给组件的 RMT 内存量。RMT 内存在所有组件之间共享, 应按块大小的倍数分配。在ESP32和ESP32-S2变体上,RMT 内存在 RX 和 TX 组件之间共享。在其他变体上,RX 和 TX 有独立专用的 RMT 内存。
| ESP32 变体 | 可用内存 | 块大小 |
|---|---|---|
| ESP32 | 512 symbols | 64 symbols |
| ESP32-C3 | 96 symbols | 48 symbols |
| ESP32-C5 | 96 symbols | 48 symbols |
| ESP32-C6 | 96 symbols | 48 symbols |
| ESP32-H2 | 96 symbols | 48 symbols |
| ESP32-P4 | 192 symbols | 48 symbols |
| ESP32-S2 | 256 symbols | 64 symbols |
| ESP32-S3 | 192 symbols | 48 symbols |
-
clock_resolution (可选, int): RMT 外设使用的时钟分辨率,单位为 Hz。默认为
1000000。 -
non_blocking (可选, boolean): 启用后,任何发送都会立即返回,RMT 将在 后台运行。发送完成后,
on_complete自动化将触发。默认为true。 -
use_dma (可选, boolean): 在支持的变体上启用 DMA。如果启用,
rmt_symbols控制 DMA 缓冲区大小,可以设置为很大的值。 -
eot_level (可选, boolean): 覆盖默认的传输结束电平。默认为
false,除非pin被设置为反转或开漏。
-
on_transmit (可选, Automation): 在数据发送之前执行的自动化。 如果射频/红外硬件需要改变状态或上电,这会很有用。
-
on_complete (可选, Automation): 在数据发送之后执行的自动化。 如果射频/红外硬件需要改变状态或断电,这会很有用。
# 示例自动化remote_transmitter: ... on_transmit: then: - switch.turn_on: tx_enable on_complete: then: - switch.turn_off: tx_enable远程发射器操作
Section titled “远程发射器操作”远程发射器支持许多可用于发送远程码的操作。下面列出所有受支持的协议。所有操作都有这些附加的 #### 配置变量
on_...: - remote_transmitter.transmit_x: # ... repeat: times: 5 wait_time: 10ms-
repeat (可选): 定义码在传输时重复的次数。默认情况下,码只发送一次。
-
transmitter_id (可选, ID): 用于发送远程码的远程发射器。默认为 配置中定义的第一台。
如果你在寻找与 Home Assistant 中 rpi_rf 集成默认相同的功能,你需要将 times 设为 10,wait_time 设为 0s。
remote_transmitter.transmit_abbwelcome 操作
Section titled “remote_transmitter.transmit_abbwelcome 操作”此操作向对讲总线发送一条 ABB-Welcome 消息。 消息类型、地址、地址长度和数据在不同的 ABB-Welcome 系统之间可能有很大差异。请参考以下操作(如按门铃 或开门)时收到的消息。
on_...: - remote_transmitter.transmit_abbwelcome: source_address: 0x1001 # 你室内机的地址 destination_address: 0x4001 # 门地址 three_byte_address: false # 你系统的地址长度 message_type: 0x0d # 开锁门,在某些系统上使用 0x0e data: [0xab, 0xcd, 0xef] # 消息数据,参见接收器转储-
source_address (必选, int, 可模板化): 发送命令所来自的源地址, 参见收到的消息了解更多信息。对于室内机,地址的最后一个字节 表示室内机背面拨码开关设置的公寓号码,并以十六进制格式传输。
-
destination_address (必选, int, 可模板化): 要发送命令的目标地址, 参见收到的消息了解更多信息。
-
three_byte_address (可选, boolean, 可模板化): 源地址和目标地址的长度。
false表示两个字节,true表示三个字节。请检查收到的消息以确认你的系统使用哪种地址长度。 例如,对于两个字节地址,接收器日志中出现[XXXX > XXXX];对于三个字节地址, 出现[XXXXXX > XXXXXX]。默认为false。 -
retransmission (可选, boolean, 可模板化): 仅当此消息之前使用相同的
message_id传输过时 才应为true。通常,如果没有收到回复,消息会以 1 秒的间隔最多传输 三次。默认为false。 -
message_type (必选, int, 可模板化): 消息类型,参见 dumper 输出了解更多信息。 最高位指示是否为回复。
-
message_id (可选, int, 可模板化): 消息 ID,参见 dumper 输出了解更多信息。 如果此消息不是回复或重传,默认为随机生成的 ID。
-
data (可选, 0-7 字节列表, 可模板化): 要发送的码。 通常你只需要直接从 dumper 输出中复制此内容。默认为
[]。 -
远程发射器操作 的所有其他选项。
NOTE
ABB-Welcome 消息通过你对讲系统的两线总线发送。 需要自定义的接收器和发射器电路。 更多信息
remote_transmitter.transmit_aeha 操作
Section titled “remote_transmitter.transmit_aeha 操作”此操作向远程发射器发送一个 AEHA 码。
on_...: - remote_transmitter.transmit_aeha: address: 0x1FEF data: [0x1F, 0x3E, 0x06, 0x5F]-
address (必选, int, 可模板化): 发送命令的地址,参见 dumper 输出了解更多细节。
-
data (必选, list, 可模板化): 要发送的命令;一个数据包可以指定 2-35 字节的长度。
-
carrier_frequency (可选, float, 可模板化): 为红外信号设置发送信号 所用的频率。默认为
38000Hz。 -
远程发射器操作 的所有其他选项。
AEHA 指日本家电协会(Association for Electric Home Appliances),这是 Panasonic 和许多其他公司使用的一种格式。
remote_transmitter.transmit_beo4 操作
Section titled “remote_transmitter.transmit_beo4 操作”此操作向远程发射器发送一个 B&O Beo4 红外协议码。
on_...: - remote_transmitter.transmit_beo4: source: '0x01' command: '0x0d'- source (必选, int, 可模板化): 要发送的 8 位源,例如 0x00=video,0x01=audio,…,参见 dumper 输出了解更多信息。
- command (必选, int, 可模板化): 要发送的命令,例如 0x01=num1, 0x0d=mute,…,参见 dumper 输出了解更多信息。
- 远程发射器操作 的所有其他选项。
remote_transmitter.transmit_brennenstuhl 操作
Section titled “remote_transmitter.transmit_brennenstuhl 操作”此操作向远程发射器发送一个 brennenstuhl 协议码。
on_...: - remote_transmitter.transmit_brennenstuhl: code: 0xBD2E2CNOTE
brennenstuhl 设备使用滚动码,即遥控器的每个按钮以伪随机方式生成 4 个不同的码。参见 滚动码 了解细节和完整的 YAML 示例。
remote_transmitter.transmit_byronsx 操作
Section titled “remote_transmitter.transmit_byronsx 操作”此操作向远程发射器发送一个 Byron 门铃 RF 协议码。
on_...: - remote_transmitter.transmit_byronsx: address: '0x4f' command: '0x2'- address (必选, int, 可模板化): 要发送的 8 位 ID,参见 dumper 输出了解更多信息。
- command (可选, int, 可模板化): 要发送的命令,参见 dumper 输出了解更多信息。默认为
0x10。 - 远程发射器操作 的所有其他选项。
remote_transmitter.transmit_canalsat 操作
Section titled “remote_transmitter.transmit_canalsat 操作”此操作向远程发射器发送一个 CanalSat 红外遥控码。
NOTE
CanalSat 和 CanalSatLD 协议使用更高的载波频率(56kHz),并且非常相似。 根据所使用的硬件,同时启用时它们可能会相互干扰。
on_...: - remote_transmitter.transmit_canalsat: device: 0x25 address: 0x00 command: 0x02-
device (必选, int, 可模板化): 要发送到的设备,参见 dumper 输出了解更多细节。
-
address (可选, int, 可模板化): 要发送到的地址(或子设备),参见 dumper 输出了解更多细节。 默认为
0。 -
command (必选, int, 可模板化): 要发送的命令。
-
远程发射器操作 的所有其他选项。
remote_transmitter.transmit_canalsatld 操作
Section titled “remote_transmitter.transmit_canalsatld 操作”此操作向远程发射器发送一个 CanalSatLD 红外遥控码。
NOTE
CanalSat 和 CanalSatLD 协议使用更高的载波频率(56kHz),并且非常相似。 根据所使用的硬件,同时启用时它们可能会相互干扰。
on_...: - remote_transmitter.transmit_canalsatld: device: 0x25 address: 0x00 command: 0x02-
device (必选, int, 可模板化): 要发送到的设备,参见 dumper 输出了解更多细节。
-
address (可选, int, 可模板化): 要发送到的地址(或子设备),参见 dumper 输出了解更多细节。 默认为
0。 -
command (必选, int, 可模板化): 要发送的命令。
-
远程发射器操作 的所有其他选项。
remote_transmitter.transmit_coolix 操作
Section titled “remote_transmitter.transmit_coolix 操作”此操作向远程发射器发送一个或两个 24 位 Coolix 红外遥控码。
on_...: - remote_transmitter.transmit_coolix: first: 0xB23FE4 second: 0xB23FE4-
first (必选, uint32_t, 可模板化): 要发送的第一个 24 位 Coolix 码; 参见 dumper 输出了解更多信息。
-
second (可选, uint32_t, 可模板化): 要发送的第二个 24 位 Coolix 码; 参见 dumper 输出了解更多信息。
-
远程发射器操作 的所有其他选项。
remote_transmitter.transmit_dish 操作
Section titled “remote_transmitter.transmit_dish 操作”此操作向远程发射器发送一个 Dish Network 红外遥控码。
on_...: - remote_transmitter.transmit_dish: address: 1 command: 16- address (可选, int, 可模板化): 要针对的接收器编号,范围 1 到 16(含)。默认为
1。 - command (必选, int, 可模板化): 要发送的命令,范围 0 到 63(含)。
- 远程发射器操作 的所有其他选项。
你可以在 LIRC 项目 中找到命令列表。
remote_transmitter.transmit_dooya 操作
Section titled “remote_transmitter.transmit_dooya 操作”此操作向远程发射器发送一个 Dooya RF 遥控码。
on_...: - remote_transmitter.transmit_dooya: id: 0x001612E5 channel: 142 button: 12 check: 3-
id (必选, int, 可模板化): 要发送的 24 位 ID。每个遥控器都有一个唯一的 ID。
-
channel (必选, int, 可模板化): 要发送的 8 位通道,范围 0 到 255(含)。
-
button (必选, int, 可模板化): 要发送的 4 位按钮,范围 0 到 15(含)。
-
check (必选, int, 可模板化): 要发送的 4 位校验值。包含按钮被按住的指示。 参见 dumper 输出了解更多信息。
-
远程发射器操作 的所有其他选项。
remote_transmitter.transmit_drayton 操作
Section titled “remote_transmitter.transmit_drayton 操作”此操作向远程发射器发送一个 Drayton Digistat RF 遥控码。
on_...: - remote_transmitter.transmit_drayton: address: '0x6180' channel: '0x12' command: '0x02'- address (必选, int, 可模板化): 要发送的 16 位 ID,参见 dumper 输出了解更多信息。
- channel (必选, int, 可模板化): 要发送的开关/通道,范围 0 到 127(含)。
- command (必选, int, 可模板化): 要发送的命令,范围 0 到 63(含)。
- 远程发射器操作 的所有其他选项。
remote_transmitter.transmit_dyson 操作
Section titled “remote_transmitter.transmit_dyson 操作”此操作向远程发射器发送一个 Dyson cool AM07 红外协议码。
on_...: - remote_transmitter.transmit_dyson: code: '0x1200' index: !lambda |- uint8_t idx = id(idx); id(idx) = (id(idx) + 1) & 3; return idx;- code (必选, int, 可模板化): 要触发的 16 位码,例如 0x1200=power, 0x1215=fan++, 0x122a=swing…,参见 dumper 输出了解更多信息。
- index (可选, int, 可模板化): 8 位滚动索引。默认为
0xFF。 - 远程发射器操作 的所有其他选项。
NOTE
dyson 设备使用滚动码,即每个遥控器按钮以伪随机方式生成 4 个不同的码。 在每次发送时,index 变量必须循环,以让 ..transmit_dyson 函数 生成与前一个不同的码。
remote_transmitter.transmit_gobox 操作
Section titled “remote_transmitter.transmit_gobox 操作”此操作通过 IR 发射器向 Go-Box 发送一条命令。
on_...: - remote_transmitter.transmit_gobox: code: 0xfa05- code (必选, int, 可模板化): 要发送的命令。已知命令有:
-
MENU = 0xaa55,
-
RETURN = 0x22dd,
-
UP = 0x0af5,
-
LEFT = 0x8a75,
-
RIGHT = 0x48b7,
-
DOWN = 0xa25d,
-
OK = 0xc837,
-
TOGGLE = 0xb847,
-
PROFILE = 0xfa05
-
FASTER = 0xf00f,
-
SLOWER = 0xd02f,
-
LOUDER = 0xb04f,
-
SOFTER = 0xf807,
-
远程发射器操作 的所有其他选项。
-
remote_transmitter.transmit_jvc 操作
Section titled “remote_transmitter.transmit_jvc 操作”此操作向远程发射器发送一个 JVC 红外遥控码。
on_...: - remote_transmitter.transmit_jvc: data: 0x1234remote_transmitter.transmit_keeloq 操作
Section titled “remote_transmitter.transmit_keeloq 操作”此操作向远程发射器发送 KeeLoq RF 遥控码。
on_...: - remote_transmitter.transmit_keeloq: address: '0x57ffe7b' command: '0x02' code: '0xd19ef0a9' repeat: times: 3 wait_time: 15ms- address (必选, int, 可模板化): 要发送的 32 位地址,参见 dumper 输出了解更多信息。
- command (可选, int, 可模板化): 要发送的 4 位命令/按钮码,参见 dumper 输出了解更多信息。默认为
0x10。 - code (必选, int, 可模板化): 要发送的 32 位加密字段。
- level (可选, boolean, 可模板化): 电池电量低状态位。默认为 false。
- 远程发射器操作 的所有其他选项。
- 如所示的 15ms 的重复 wait_time 可再现 HCS301 的重复行为。
remote_transmitter.transmit_haier 操作
Section titled “remote_transmitter.transmit_haier 操作”此操作向远程发射器发送一个 104 位 Haier 码。8 位校验和会自动添加。
on_...: - remote_transmitter.transmit_haier: code: [0xA6, 0xDA, 0x00, 0x00, 0x40, 0x40, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x05]remote_transmitter.transmit_lg 操作
Section titled “remote_transmitter.transmit_lg 操作”此操作向远程发射器发送一个 LG 红外遥控码。
on_...: - remote_transmitter.transmit_lg: data: 0x20DF10EF # 开机/关机 nbits: 32- data (必选, int, 可模板化): 要发送的 LG 码,参见 dumper 输出了解更多信息。
- nbits (可选, int, 可模板化): 要发送的位数。默认为
28。 - 远程发射器操作 的所有其他选项。
remote_transmitter.transmit_magiquest 操作
Section titled “remote_transmitter.transmit_magiquest 操作”此操作向远程发射器发送一个 MagiQuest 魔杖码。
on_...: - remote_transmitter.transmit_magiquest: wand_id: 0x01234567 magnitude: 0x080C-
wand_id (必选, int, 可模板化): 要发送的魔杖 ID,以十六进制整数表示。参见 dumper 输出了解你的魔杖 ID。
-
magnitude (可选, int, 可模板化): 魔杖应发送的挥舞和旋转的幅度。参见 dumper 输出了解的示例。 如果省略,则发送 0xFFFF(真正的魔杖从不使用此值)。
-
远程发射器操作 的所有其他选项。
remote_transmitter.transmit_midea 操作
Section titled “remote_transmitter.transmit_midea 操作”此操作向远程发射器发送一个 40 位 Midea 码。8 位校验和自动添加。
on_...: - remote_transmitter.transmit_midea: code: [0xA2, 0x08, 0xFF, 0xFF, 0xFF]
on_...: - remote_transmitter.transmit_midea: code: !lambda |- // 发送一个带当前温度的 FollowMe 码。 return {0xA4, 0x82, 0x48, 0x7F, (uint8_t)(id(temp_sensor).state + 1)};remote_transmitter.transmit_nec 操作
Section titled “remote_transmitter.transmit_nec 操作”此操作向远程发射器发送一个 NEC 红外遥控码。
NOTE
在 2021.12 版本中,位传输的顺序按照 NEC
标准从 MSB 纠正为 LSB。因此,如果配置文件来自 ESPhome 的早期版本,
转到 2021.12 或更高版本时,需要反转地址和命令位的顺序。例如,
address: 0x84ED、command: 0x13EC 分别变为 0xB721 和 0x37C8。此外,ESPHome
不会自动生成校验位或将值补齐到 2 个字节。例如,要发送命令 0x0,你需要使用 0xFF00
(0x00 是命令,0xFF 是逻辑反码)。
on_...: - remote_transmitter.transmit_nec: address: 0x1234 command: 0x78AB command_repeats: 1-
address (必选, int, 可模板化): 要发送的 16 位地址,参见 dumper 输出了解更多细节。
-
command (必选, int, 可模板化): 要发送的 16 位 NEC 命令。
-
command_repeats (可选, int, 可模板化): 在单次传输中命令字节被发送的次数。 默认为
1。 -
远程发射器操作 的所有其他选项。
remote_transmitter.transmit_nexa 操作
Section titled “remote_transmitter.transmit_nexa 操作”此操作向远程发射器发送一个 Nexa RF 遥控码。
on_...: - remote_transmitter.transmit_nexa: device: 0x38DDB4A state: 1 group: 0 channel: 15 level: 0-
device (必选, int, 可模板化): 要发送的 Nexa 设备码,参见 dumper 输出了解更多信息。
-
state (必选, int, 可模板化): 要发送的 Nexa 状态码(0-关,1-开,2-调光级别),参见 dumper 输出了解更多 信息。
-
group (必选, int, 可模板化): 要发送的 Nexa 组码,参见 dumper 输出了解更多信息。
-
channel (必选, int, 可模板化): 要发送的 Nexa 通道码,参见 dumper 输出了解更多信息。
-
level (必选, int, 可模板化): 要发送的 Nexa 级别码,参见 dumper 输出了解更多信息。
-
远程发射器操作 的所有其他选项。
remote_transmitter.transmit_panasonic 操作
Section titled “remote_transmitter.transmit_panasonic 操作”此操作向远程发射器发送一个 Panasonic 红外遥控码。
on_...: - remote_transmitter.transmit_panasonic: address: 0x1FEF command: 0x1F3E065F- address (必选, int, 可模板化): 发送命令的地址,参见 dumper 输出了解更多细节。
- command (必选, int, 可模板化): 要发送的命令。
- 远程发射器操作 的所有其他选项。
remote_transmitter.transmit_pioneer 操作
Section titled “remote_transmitter.transmit_pioneer 操作”此操作向远程发射器发送一个 Pioneer 红外遥控码。
on_...: - remote_transmitter.transmit_pioneer: rc_code_1: 0xA556 rc_code_2: 0xA506 repeat: times: 2-
rc_code_1 (必选, int, 可模板化): 要发送的遥控码,参见 dumper 输出了解更多细节。
-
rc_code_2 (可选, int, 可模板化): 要发送的次要遥控码;有些码分为 两部分发送。
-
请注意,
repeat仍然是可选的,但是Pioneer 设备可能要求给定的码被接收多次后才会对其作出响应。 如果你的设备不响应此操作发送的命令,请添加此设置。 -
远程发射器操作 的所有其他选项。
在创建此操作时,Pioneer 维护了其设备使用的 IR 码 列表。 如果文档中找不到你的特定设备,请找同一类别的设备;同一类别中的设备 共享大部分码。
remote_transmitter.transmit_pronto 操作
Section titled “remote_transmitter.transmit_pronto 操作”此操作向远程发射器发送一个以 Pronto 格式指定的原始码。
on_...: - remote_transmitter.transmit_pronto: data: "0000 006D 0010 0000 0008 0020 0008 0046 000A 0020 0008 0020 0008 001E 000A 001E 000A 0046 000A 001E 0008 0020 0008 0020 0008 0046 000A 0046 000A 0046 000A 001E 000A 001E 0008 06C3"-
data (必选, string, 可模板化): 要作为字符串发送的原始码。许多遥控 Pronto 码可以在 http://remotecentral.com 上找到。
-
远程发射器操作 的所有其他选项。
remote_transmitter.transmit_raw 操作
Section titled “remote_transmitter.transmit_raw 操作”此操作向远程发射器发送一个原始码。
on_...: - remote_transmitter.transmit_raw: code: [4088, -1542, 1019, -510, 513, -1019, 510, -509, 511, -510, 1020, -1020, 1022, -1019, 510, -509, 511, -510, 511, -509, 511, -510, 1020, -1019, 510, -511, 1020, -510, 512, -508, 510, -1020, 1022, -1021, 1019, -1019, 511, -510, 510, -510, 1022, -1020, 1019, -1020, 511, -511, 1018, -1022, 1020, -1019, 1021, -1019, 1020, -511, 510, -1019, 1023, -1019, 1019, -510, 512, -508, 510, -511, 512, -1019, 510, -509]-
code (必选, list, 可模板化): 要作为整数列表发送的原始码。 正数表示数字高电平信号,负数表示数字低电平信号。 数字本身编码信号应持续的时间(以微秒为单位)。
-
carrier_frequency (可选, float, 可模板化): 可选地为红外信号设置发送信号 所用的频率。默认为
0Hz。 -
远程发射器操作 的所有其他选项。
remote_transmitter.transmit_rc5 操作
Section titled “remote_transmitter.transmit_rc5 操作”此操作向远程发射器发送一个 RC5 红外遥控码。
on_...: - remote_transmitter.transmit_rc5: address: 0x1F command: 0x3F- address (必选, int, 可模板化): 要发送的地址,参见 dumper 输出了解更多细节。
- command (必选, int, 可模板化): 要发送的 RC5 命令。
- 远程发射器操作 的所有其他选项。
remote_transmitter.transmit_rc6 操作
Section titled “remote_transmitter.transmit_rc6 操作”此操作向远程发射器发送一个 RC6 红外遥控码。
on_...: - remote_transmitter.transmit_rc6: address: 0x1F command: 0x3F- address (必选, int, 可模板化): 要发送的地址,参见 dumper 输出了解更多细节。
- command (必选, int, 可模板化): 要发送的 RC6 命令。
- 远程发射器操作 的所有其他选项。
remote_transmitter.transmit_rc_switch_raw 操作
Section titled “remote_transmitter.transmit_rc_switch_raw 操作”此操作向 远程发射器发送一个原始的 RC-Switch 码。
on_...: - remote_transmitter.transmit_rc_switch_raw: code: '001010011001111101011011' protocol: 1-
code (必选, string, 可模板化): 要发送的原始码,从 dump 输出中复制。
-
protocol (可选, 可模板化): 要使用的 RC Switch 协议,参见 RC Switch 协议 了解更多信息。
-
远程发射器操作 的所有其他选项。
remote_transmitter.transmit_rc_switch_type_a 操作
Section titled “remote_transmitter.transmit_rc_switch_type_a 操作”此操作向 远程发射器发送一个 A 型 RC-Switch 码。
on_...: - remote_transmitter.transmit_rc_switch_type_a: group: '01001' device: '10110' state: off protocol: 1-
group (必选, string, 可模板化): 要发送命令的组。
-
device (必选, string, 可模板化): 要发送命令的组中的设备。
-
state (必选, boolean, 可模板化): 要发送的开/关状态。
-
protocol (可选, 可模板化): 要使用的 RC Switch 协议,参见 RC Switch 协议 了解更多信息。
-
远程发射器操作 的所有其他选项。
remote_transmitter.transmit_rc_switch_type_b 操作
Section titled “remote_transmitter.transmit_rc_switch_type_b 操作”此操作向 远程发射器发送一个 B 型 RC-Switch 码。
on_...: - remote_transmitter.transmit_rc_switch_type_b: address: 1 channel: 3 state: off protocol: 1-
address (必选, int, 可模板化): 要发送命令的地址。
-
channel (必选, int, 可模板化): 要发送命令的通道。
-
state (必选, boolean, 可模板化): 要发送的开/关状态。
-
protocol (可选, 可模板化): 要使用的 RC Switch 协议,参见 RC Switch 协议 了解更多信息。
-
远程发射器操作 的所有其他选项。
remote_transmitter.transmit_rc_switch_type_c 操作
Section titled “remote_transmitter.transmit_rc_switch_type_c 操作”此操作向 远程发射器发送一个 C 型 RC-Switch 码。
on_...: - remote_transmitter.transmit_rc_switch_type_c: family: 'C' group: 3 device: 1 state: off protocol: 1-
family (必选, string, 可模板化): 要发送命令的系列。范围是
a到p。 -
group (必选, int, 可模板化): 要发送命令的组。范围是 1 到 4。
-
device (必选, int, 可模板化): 要发送命令的设备。范围是 1 到 4。
-
state (必选, boolean, 可模板化): 要发送的开/关状态。
-
protocol (可选, 可模板化): 要使用的 RC Switch 协议,参见 RC Switch 协议 了解更多信息。
-
远程发射器操作 的所有其他选项。
remote_transmitter.transmit_rc_switch_type_d 操作
Section titled “remote_transmitter.transmit_rc_switch_type_d 操作”此操作向 远程发射器发送一个 D 型 RC-Switch 码。
on_...: - remote_transmitter.transmit_rc_switch_type_d: group: 'c' device: 1 state: off protocol: 1-
group (必选, string, 可模板化): 要发送命令的组。范围是
a到d。 -
device (必选, int, 可模板化): 要发送命令的设备。范围是 1 到 3。
-
state (必选, boolean, 可模板化): 要发送的开/关状态。
-
protocol (可选, 可模板化): 要使用的 RC Switch 协议,参见 RC Switch 协议 了解更多信息。
-
远程发射器操作 的所有其他选项。
remote_transmitter.transmit_roomba 操作
Section titled “remote_transmitter.transmit_roomba 操作”此操作向远程发射器发送一个 Roomba 红外遥控码。
on_...: - remote_transmitter.transmit_roomba: data: 0x88 # clean repeat: times: 3 wait_time: 17ms重要:
-
虽然
repeat是可选的,Roomba 吸尘器要求给定的码至少被接收三次后才会响应。 如果你的 Roomba 不响应命令,请增大此值。 -
虽然
wait_time是可选的,但 Roomba 遥控器在命令之间使用 17 ms 的等待时间。不过,似乎没有此参数也可以工作。
remote_transmitter.transmit_samsung 操作
Section titled “remote_transmitter.transmit_samsung 操作”此操作向远程发射器发送一个 Samsung 红外遥控码。 它在单个数据包中传输最长 64 位的码。
on_...: - remote_transmitter.transmit_samsung: data: 0x1FEF05E4 # 48 位码的另外示例: - remote_transmitter.transmit_samsung: data: 0xB946F50A09F6 nbits: 48- data (必选, int, 可模板化): 要发送的数据,参见 dumper 输出了解更多细节。
- nbits (可选, int, 可模板化): 要发送的位数。默认为
32。 - 远程发射器操作 的所有其他选项。
remote_transmitter.transmit_samsung36 操作
Section titled “remote_transmitter.transmit_samsung36 操作”此操作向远程发射器发送一个 Samsung36 红外遥控码。
它在由 “space”(间隔)分隔的两个数据包中传输 address 和 command。
on_...: - remote_transmitter.transmit_samsung36: address: 0x0400 command: 0x000E00FF- address (必选, int, 可模板化): 要发送的地址,参见 dumper 输出了解更多细节。
- command (必选, int, 可模板化): 要发送的 Samsung36 命令,参见 dumper 输出了解更多细节。
- 远程发射器操作 的所有其他选项。
remote_transmitter.transmit_symphony 操作
Section titled “remote_transmitter.transmit_symphony 操作”此操作向远程发射器发送一个 Symphony 红外遥控码。
它传输具有末尾间隔的恒定位时间帧。物理 Symphony 遥控器通常
以约 35 ms 的间隔将相同的帧发送两次。使用 command_repeats 控制
发送多少个相同的帧;默认为 2。
on_...: - remote_transmitter.transmit_symphony: data: 0x0E88 nbits: 12 command_repeats: 2-
data (必选, int, 可模板化): 要发送的 Symphony 码,参见 dumper 输出了解更多信息。
-
nbits (必选, int, 可模板化): 要发送的位数。典型值:
8、12或16。 -
command_repeats (可选, int, 可模板化): 在单次传输中发送相同帧的次数。 默认为
2以匹配典型的手持设备。 -
远程发射器操作 的所有其他选项。
remote_transmitter.transmit_sony 操作
Section titled “remote_transmitter.transmit_sony 操作”此操作向远程发射器发送一个 Sony 红外遥控码。
on_...: - remote_transmitter.transmit_sony: data: 0x123 nbits: 12- data (必选, int, 可模板化): 要发送的 Sony 码,参见 dumper 输出了解更多信息。
- nbits (可选, int, 可模板化): 要发送的位数。默认为
12。 - 远程发射器操作 的所有其他选项。
remote_transmitter.transmit_toshiba_ac 操作
Section titled “remote_transmitter.transmit_toshiba_ac 操作”此操作向远程发射器发送一个 Toshiba AC 红外遥控码。
NOTE
此操作使用较新版本的 Toshiba AC 协议传输码,很可能不适用于较旧的设备。
on_...: - remote_transmitter.transmit_toshiba_ac: rc_code_1: 0xB24DBF4040BF rc_code_2: 0xD5660001003C-
rc_code_1 (必选, int, 可模板化): 要发送的遥控码,参见 dumper 输出了解更多细节。
-
rc_code_2 (可选, int, 可模板化): 要发送的次要遥控码;有些码分为 两部分发送。
-
远程发射器操作 的所有其他选项。
remote_transmitter.transmit_mirage 操作
Section titled “remote_transmitter.transmit_mirage 操作”此操作向远程发射器发送一个 112 位 Mirage 码。8 位校验和自动添加。
on_...: - remote_transmitter.transmit_mirage: code: [0x56, 0x77, 0x00, 0x00, 0x22, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00]remote_transmitter.transmit_toto 操作
Section titled “remote_transmitter.transmit_toto 操作”此操作向远程发射器发送一个 Toto 红外遥控码。
on_...: - remote_transmitter.transmit_toto: command: 0xED # 设置水和座垫温度 rc_code_1: 0x0 # 热水器关 rc_code_2: 0x0 # 座垫加热关 # 默认以 36ms 间隔重复 3 次- command (必选, int, 可模板化): 要发送的 1 字节 Toto 命令码。范围是 0 到 0xFF。
- rc_code_1 (可选, int, 可模板化): 要发送的第一个 4 位 Toto 码(通常是一个命令参数)。范围是 0 到 0xF。
- rc_code_2 (可选, int, 可模板化): 要发送的第二个 4 位 Toto 码(通常是一个命令参数)。范围是 0 到 0xF。
- 远程发射器操作 的所有其他选项。
NOTE
Toto 遥控器会以 36ms 的间隔三次重复所有码。默认会发生此行为,但可以通过指定 repeat 和 wait time 配置变量来覆盖。
remote_transmitter.digital_write 操作
Section titled “remote_transmitter.digital_write 操作”此操作设置引脚的输出值。
on_...: - remote_transmitter.digital_write: value: trueRC Switch 协议
Section titled “RC Switch 协议”所有 RC Switch protocol 设置都有这些设置:
-
如果值是整数,则使用给定编号的内置协议定义。
-
或者给出一个键值映射,那么就有这些设置:
-
pulse_length (必选, int): 协议的脉冲长度——一个脉冲应持续多少微秒。
-
sync (可选): 同步头的脉冲高/低次数,默认为
[1, 31] -
zero (可选): 0 位的脉冲高/低次数,默认为
[1, 3] -
one (可选): 1 位的脉冲高/低次数,默认为
[3, 1] -
inverted (可选, boolean): 此协议是否反转。默认为
false。
-
Lambda 调用
Section titled “Lambda 调用”操作也可以从 lambdas 调用。按照下面的示例,.transmit() 调用可以填充
特定协议的原始时序或编码数据。
.transmit(): 返回一个调用,用于填充数据并发送。
// 示例 - 传输原始时序auto call = id(my_transmitter).transmit();auto *data = call.get_data();for (int32_t i = 0; i < 4; i++) { data->item(600, 600);}uint8_t bytes[] = {0x12, 0x34, 0x56, 0x78};for (uint8_t byte : bytes) { for (int32_t i = 7; i >= 0; i--) { if (byte & (1 << i)) { data->item(400, 200); } else { data->item(200, 400); } }}call.set_send_times(3);call.set_send_wait(2000);call.perform();// 示例 - 使用 Pioneer 协议传输auto call = id(my_transmitter).transmit();esphome::remote_base::PioneerData data = {0xA556, 0xA506};esphome::remote_base::PioneerProtocol().encode(call.get_data(), data);call.set_send_times(2);call.perform();