TheDocumentation Index
Fetch the complete documentation index at: https://mintlify.com/esphome/esphome.io/llms.txt
Use this file to discover all available pages before exploring further.
remote_receiver component lets your ESP device listen for infrared (IR) and RF remote control signals on a GPIO pin and decode them into known protocols — NEC, Sony, Samsung, RC5, RC6, Panasonic, Pioneer, and dozens more. Once decoded, signals can trigger automations directly or be matched by binary sensors that momentarily activate when a specific code is received.
Minimal Example
dump: all, every received code appears in the ESPHome logs at DEBUG level. Use this to discover the protocol and address/command values of any remote.
Configuration Variables
The GPIO pin connected to the data output of your IR or RF receiver module (e.g. TSOP38238, SRX882).
Protocols to decode and print in the logs. Set to
all to enable every available decoder. Individual options include: nec, samsung, sony, rc5, rc6, panasonic, pioneer, lg, jvc, aeha, raw, pronto, rc_switch, coolix, haier, midea, toshiba_ac, nexa, keeloq, dyson, dooya, drayton, and many more.Acceptable deviation in signal timing. Defaults to
25%. Can be expressed as a percentage or a fixed time value. For noisy RF signals, try increasing to 50% or 60%.Ignore pulses shorter than this duration. Removes glitches from noisy signals. Defaults to
50us.Time a signal must remain stable before it is considered complete. Defaults to
10ms. On ESP32 with RMT hardware, maximum is 65536us (at default clock resolution).Internal buffer for received codes. Defaults to
10kB on ESP32 and 1kB on ESP8266.Manually specify the component ID. Required when multiple receivers are configured.
ESP32 RMT Options
RMT memory allocated to this component (multiples of block size). Controls DMA buffer size when
use_dma is enabled.RMT peripheral clock in Hz. Defaults to
1000000 (1 MHz = 1 µs resolution).Enable DMA mode on supported ESP32 variants for large buffer sizes.
Filter out received data shorter than this many RMT symbols.
Automation Triggers
Each supported protocol has a correspondingon_<protocol> trigger. The decoded data is passed as variable x.
on_nec, on_samsung, on_samsung36, on_sony, on_rc5, on_rc6, on_panasonic, on_pioneer, on_lg, on_jvc, on_aeha, on_coolix, on_haier, on_midea, on_toshiba_ac, on_raw, on_pronto, on_rc_switch, on_nexa, on_keeloq, on_dyson, on_dooya, on_drayton, on_beo4, on_byronsx, on_canalsat, on_canalsatld, on_dish, on_gobox, on_magiquest, on_roomba, on_symphony, on_mirage, on_toto, on_abbwelcome.
Raw codes (
on_raw) give you a list of pulse widths in microseconds (positive = ON, negative = OFF). You can copy this list directly into a remote_transmitter configuration to replay the signal.Binary Sensor: Matching Specific Codes
Usebinary_sensor with platform: remote_receiver to create entities that briefly activate when a specific remote code is detected.
Specify which receiver to use when multiple receivers are configured.
Supported Code Types for Binary Sensors
Each entry uses the same fields as the correspondingon_<protocol> trigger:
| Protocol | Key Fields |
|---|---|
nec | address, command |
samsung | data, nbits (default 32) |
sony | data, nbits (default 12) |
rc5 | address, command |
rc6 | address, command |
panasonic | address, command |
pioneer | rc_code_1 |
lg | data, nbits (default 28) |
raw | code (list of int) |
rc_switch_type_a | group, device, state |
rc_switch_type_b | address, channel, state |
rc_switch_raw | code (binary string) |