IR/RF Proxy
ℹ️ Important
This component is EXPERIMENTAL. The API may change at any time without following the normal breaking changes policy. Use at your own risk. Once the API is considered stable, this warning will be removed.
ESPHome’s IR/RF proxy component works with Home Assistant to expand its remote control capabilities. This component provides a unified API-accessible interface for transmitting and receiving infrared and RF signals, acting as a bridge between Home Assistant (or other API clients) and ESPHome’s existing remote_receiver and remote_transmitter components. Note that at least one of these components is required in your device’s configuration if you wish to use the IR/RF proxy component.
The IR/RF proxy enables runtime signal transmission without recompiling and/or reinstalling (flashing) firmware, making it ideal for learning and replaying IR/RF commands, creating universal remote controls, and integrating with Home Assistant’s remote control features.
# Example configuration entry
infrared:
# IR transmitter instance
- platform: ir_rf_proxy
name: IR Proxy Transmitter
id: ir_proxy_tx
remote_transmitter_id: ir_tx
# IR receiver instance
- platform: ir_rf_proxy
name: IR Proxy Receiver
id: ir_proxy_rx
remote_receiver_id: ir_rxConfiguration variables
remote_transmitter_id (Optional, ID): The ID of the remote_transmitter component to use for sending signals. Exactly one of
remote_transmitter_idorremote_receiver_idmust be specified.remote_receiver_id (Optional, ID): The ID of the remote_receiver component to use for receiving signals. Exactly one of
remote_transmitter_idorremote_receiver_idmust be specified.frequency (Optional, frequency): The operating frequency (for example,
433 MHz,315 MHz,900 MHz). Set to a non-zero value for RF hardware. Defaults to0(infrared). This value is used to distinguish between IR and RF hardware types and is passed to Home Assistant, allowing it to identify integrations this IR/RF proxy instance can potentially support.All other configuration variables from infrared.
ℹ️ Note
When configuring a transmitter for infrared (
frequency: 0or not set), ensure the linkedremote_transmitterhascarrier_duty_percentset to an appropriate value, typically 30-50%. This is required for proper infrared transmission. Ifcarrier_duty_percentis set to 0% or 100% andfrequencyis not set or is set to zero, a validation error will occur.
How It Works
The IR/RF proxy component creates API-accessible entities that can be controlled from Home Assistant or other API clients. Each instance can be configured as either a transmitter or receiver by specifying the appropriate hardware component ID.
Transmitting Signals
The IR/RF proxy transmits signals using raw timings, which provides full remote control over the exact waveform sent
to the hardware. When configured with a remote_transmitter_id, the component can transmit IR/RF signals by accepting
an array of microsecond timing values
representing alternating mark (LED on) and space (LED off) periods.
Transmission parameters:
- Raw timings array: Alternating mark/space durations in microseconds (just as the remote_transmitter.transmit_raw action uses)
- Carrier frequency: Optional carrier frequency in Hz (0 = no carrier modulation, typical for RF)
- Repeat count: Number of times to transmit the signal (defaults to 1)
The raw timings format allows for maximum flexibility and can support more or less any protocol, whether implemented in ESPHome or not. Home Assistant integrations can encode protocol-specific commands into raw timings and transmit them through the IR/RF proxy component.
Receiving Signals
When configured with a remote_receiver_id, the IR/RF proxy captures raw timings and sends them to API clients for
decoding or analysis. This enables:
- Learning IR/RF commands from existing remotes
- Analyzing unknown protocols
- Creating universal remote controls
Reception is non-blocking, allowing other listeners to also process signals simultaneously.
Hardware Support
The IR/RF proxy can work with both infrared and RF hardware:
- Infrared: Do not set
frequency(or setfrequency: 0, which is the default) and use standard IR LEDs/receivers - RF: Set
frequencyto match your RF hardware (for example,315 MHzfor 315 MHz or433 MHzfor 433.92 MHz)
You can create separate instances for different purposes:
- Transmit-only (specify only
remote_transmitter_id) - Receive-only (specify only
remote_receiver_id) - Multiple instances of any of the above for different hardware or frequencies. For example, a single ESPHome device could have multiple transmitter LEDs, each in a different room/cabinet.