IoT HDMI Mux with ESPHome

Hey everyone!

I designed and built an IoT HDMI Mux: a 2-input, 1-output HDMI 2.0 switch that you control over WiFi, fully integrated with Home Assistant via ESPHome.

The Problem

I had two devices (Chromecast + Kodi) connected to a single projector and got tired of swapping cables. I wanted to switch HDMI inputs easily from Home Assistant. Nothing like this existed (there were some hacky solutions out there but I thought it would be more fun to develop one from scratch), so I built it.

How It Works

  • ESP32-C3 controls a Texas Instruments TS3DV642 high-bandwidth FET switch
  • HDMI 2.0: supports up to 4K @ 60Hz
  • Three states: Input A, Input B, or Disabled
  • Fully local: no cloud, no external services (thanks to ESPHome!)

Integration

The device runs ESPHome natively. Once flashed, it appears automatically in Home Assistant via the ESPHome integration.

Fully Open Source

Everything is public on GitHub:

  • Hardware design files (schematics, PCB, BOM)
  • All firmware variants (ESPHome, Web App, MQTT)
  • 3D-printable enclosure

GitHub: GitHub - guimpt/iot_hdmi_mux: IoT enabled HDMI mux

Photos

Use Cases

  • Switch between any two hdmi devices from HA
  • Automate input switching based on device power state (e.g., when Chromecast starts casting, switch to Input A)

Available on Tindie

For those who want one ready-made, I sell them assembled with a 3D-printed enclosure on Tindie: https://www.tindie.com/products/40837/

But since it’s fully open source, you can also build your own from the GitHub repo!

3 Likes