ESPHome IR Proxy - How to send raw IR timings from Home Assistant automation?

I have an ESPHome IR proxy transmitter setup (code below) and it works great through the ESPHome web server where I can enter raw IR data like -4500, 600, -2060, 505.

![My ESPHome IR proxy config/image]

However, I want Home Assistant to parse/send these raw IR code timings directly to ESPHome via automation/service call.

Questions:

  1. What's the exact service/action name to call from HA automation? (esphome.mydevice.ir_proxy_transmit?)
  2. How to format the raw timings array in the service data? (negative values for spaces?)
  3. Where can I find the correct service parameters in HA Developer Tools?

My ESPHome config:

Thanks!


# 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_rx


There isn't an action, the IR Proxy is meant to be a "target" for the Infrared integration, which is a "building block" integration providing a foundation for other integrations. It is these device-specific integrations like LG Infrared that handle creating the devices and entities (and possibly custom actions) that you will be able to use in HA. The goal seems to be having device/manufacturer- specific integrations so that every user doesn't have to duplicate the effort of learning codes and assigning them to entities and devices.

As I understand it, I think it should be possible for someone to create an integration that is more general which can act as a stand-in until specific integrations make their way into core. But I am not a software dev... so, I may be mistaken.

From the Release Blog:

i want to build the integration or make a test in nodered ,
but how ?

the esphome webserver has a nice opportunity to start to send raw ir timings already

If you actually want to work on an integration, maybe start with the dev docs:
https://developers.home-assistant.io/docs/core/entity/infrared


But, if you just want to send raw IR timings, that's not the point of an IR Proxy...

Instead just add a User-defined action to your ESPHome device config.

api:
... #other keys from api
  actions:          
    - action: send_raw_command
      variables:
        command: int[]
      then:
        - remote_transmitter.transmit_raw:
            carrier_frequency: 38kHz
            transmitter_id: ir_tx
            code: !lambda 'return {command.begin(), command.end()};'

Then in HA your action would be something like:

action: esphome.my_device_send_raw_command
data:
  command: [-4500, 600, -2060, 505]

I’ve built an Integration to manage my HA IR devices. Captures raw button presses via ESPHome proxies and saves as devices. It doesn’t care about manufacturer or model, just point the remote at the proxy, press required button, and save command to your device. You can admin the devices and add/remove/test commands. There’s light, climate, switch, fan and media player device type action mapping to carry device types onto IR devices.

If you’re interested, I’ll post it here for you to try out. But it’s beta. Be kind.

Makes learning commands from any remote very easy…

~DAB

EDIT: Here’s the link. Can also add in HACS.

3 Likes

wow thats impressive !

i have 2 ir proxies , but Ha-ir recieves no data , while the esphome-logger is showing data
idk if i need to configure some more thing ?

sniffer sees no data + there is no button to add devices manualy

(remark : in the smartphone app , when you enter /hair website , there is no way out to get to the other dashboards )

i use version

  • Installatiemethode Home Assistant OS
  • Core 2026.5.2
  • Supervisor 2026.05.0
  • Operating System 17.3
  • Frontend 20260429.4


and

1 Like

Hey @thermiek, thanks for trying it out!

Sniffer not receiving data

I'm sorry our docs are not explicit around this. We changed that today. :grinning_face:

HA 2026.4 shipped the infrared platform for TX (emitters) but the RX side (InfraredReceiverEntity) hasn't landed yet -- it's approved and on the roadmap for 2026.6-2026.7.

Until then, ESPHome devices need a small YAML bridge to forward received IR signals to the HA event bus where HAIR can pick them up.

Add this to your ESPHome device's remote_receiver block:

remote_receiver:
  id: ir_receiver
  pin:
    number: GPIO5   # your IR receiver data pin
    inverted: true
  dump: pronto
  on_pronto:
    then:
      - homeassistant.event:
          event: esphome.remote_received
          data:
            protocol: "PRONTO"
            code: !lambda 'return x.data;'

The on_pronto trigger catches all IR protocols (NEC, Samsung, Sony, RC-5, etc.) and pushes them to HA as events. Once you flash that, the Sniffer should light up immediately when you press buttons on any remote near your IR receiver.

This is a temporary bridge. When HA ships native receiver support, HAIR will migrate to the official API and no custom YAML will be needed.

I've added this to the README under a new "ESPHome Receiver Setup" section so future users can find it more easily.

Adding devices manually

The "Add Device" button is on the Devices tab (the blue floating button at the bottom). That said, the typical workflow is to capture signals in the Sniffer first, then assign them to devices from there. We're also working on a manual learn flow for devices like Tuya and Broadlink blasters that will add another path.

Mobile navigation

Good catch on the sidebar issue on mobile. I'll look into that. In the meantime you can swipe from the left edge or use the browser back button to get back to the main HA view.

Let me know if the YAML bridge gets your Sniffer working!

~DAB

2 Likes

the sniffer works after the esphome yaml update :grinning_face: