A Remote That Finally Belongs to You

Most people think of IR remotes as relics. Dumb plastic wands that exist purely to be lost in couch cushions and die at the worst possible moment.

But strip away the UX sins and what you’re left with is something surprisingly powerful: instant, local, zero-latency control.

This ESPHome-based IR node leans into that idea hard.

At its core, it’s an ESP8266 (ESP8285 board) running both a receiver and transmitter. That alone isn’t special. What makes it interesting is how it’s wired into Home Assistant–not as a workaround, but as a first-class control layer.

IR as Input, Not Just Output

Most setups treat IR as a one-way street: send commands, hope for the best.

Here, the remote becomes a trigger device.

Specific NEC codes–like the colored buttons on an LG remote–are mapped directly to Home Assistant actions:

  • Pink button → toggle TV lights
  • Green button → toggle bedroom light
  • Yellow button → toggle soundbar power
  • Blue button → toggle TV power

No cloud. No polling. No delay. Press button → thing happens.

That’s the entire philosophy.

And because it’s ESPHome, you’re not stuck with whatever some manufacturer thought was useful. You decide what every button means.

The Quiet Killer Feature: IR Proxy

Buried in this config is something that feels like a glimpse into the future:

    infrared:
      - platform: ir_rf_proxy

Right now, it’s rough. Definitely not plug-and-play. But conceptually? It’s huge.

This is the beginning of IR becoming network-native inside Home Assistant.

Instead of:

  • Capturing codes manually
  • Writing YAML
  • Flashing firmware

You eventually get:

  • Discoverable IR devices
  • Reusable command sets
  • Shared control layers

In other words, IR stops being a hack and starts acting like a real integration.

We’re not fully there yet–but this is the direction.

Output Still Matters

On the flip side, the transmitter side is just as important.

Every key TV function is exposed as a Home Assistant button:

  • Power
  • Volume up/down
  • Mute
  • Navigation
  • Playback

Which means your “dumb” TV is now:

  • Scriptable
  • Automatable
  • UI-controllable
  • Fully local

No app. No API. No nonsense.

Just raw IR, weaponized properly.

HDMI-CEC: Listening Instead of Guessing

If the IR node is about control, the HDMI-CEC node is about awareness.

And honestly, this is the more interesting one.

Because most smart home setups fake device state. They assume the TV is on because you told it to turn on.

This one doesn’t assume anything.

It listens.

Sniffing the HDMI Bus

Using an ESP32 and this esphome-hdmi-cec component, this device taps directly into the HDMI-CEC line and watches traffic in real time.

Not controlling (well, not primarily)–just observing.

With:

    promiscuous_mode: true
    decode_messages: true

…it’s basically Wireshark for your HDMI cable.

And from that stream, it extracts something incredibly useful:

A Real Power State Sensor

Two messages matter here:

  • 0x36 → Standby (OFF)
  • [0x90, 0x00] → Power ON

That’s it.

No guessing. No delays. No “wait 10 seconds and hope.”

Just:

  • TV says it’s off → sensor updates
  • TV says it’s on → sensor updates

Which means your automations suddenly get way smarter.

Lights, sound, notifications–everything can react to what’s actually happening, not what you think is happening.

Minimal Control, Maximum Precision

There’s also a small but important addition:

    hdmi_cec.send:
      destination: 0x0
      data: [0x36]

A clean, direct “turn off everything” broadcast.

No IR blasting. No aiming. No interference.

Just a message on the HDMI bus that every device understands.

Why This Setup Works So Well

Individually, these projects are solid.

Together, they’re kind of ridiculous–in a good way.

You end up with:

IR → Control Layer

  • Instant input from physical remotes
  • Reliable output to “dumb” devices
  • Fully local, zero latency

HDMI-CEC → State Layer

  • Real device awareness
  • No guesswork
  • Clean integration into automations

And the combination solves a problem most people don’t even realize they have:

Smart homes are great at sending commands.

They’re terrible at knowing what actually happened.

This setup fixes that.

The Bigger Picture

What’s happening here isn’t just “cool ESPHome stuff.”

It’s a shift in how you think about devices.

Instead of asking:

“Does this support Home Assistant?”

You start asking:

“Can I make this support Home Assistant?”

IR? Yes.

CEC? Yes.

RF (soon)? Probably.

And suddenly, entire categories of “dumb” hardware become viable again–without any of the baggage of cloud apps, firmware updates, or abandoned ecosystems.

Final Thought

There’s something deeply satisfying about turning off your TV with a 20-year-old protocol…

…while a microcontroller quietly logs the event and updates your house in real time.

It’s not flashy.

It doesn’t need to be.

It just works–and more importantly, it works on your terms.