Custom ESPHome component that bridges IR hardware to MQTT and/or Serial via a clean JSON API. Supports 15+ protocols, multiple RX/TX channels, optional status LED, and works with or without network.
→ Full documentation: MANUAL.md
Option 1 — directly from GitHub (no local clone needed):
external_components:
- source:
type: git
url: https://github.com/steelcuts/ir2mqtt_bridge
ref: main
components: [ir2mqtt_bridge]Option 2 — local clone (if you have the repo checked out next to your config):
external_components:
- source:
type: local
path: components
components: [ir2mqtt_bridge]| File | Description |
|---|---|
| ir2mqtt_bridge_lan.yaml | Ethernet (LAN8720) + MQTT + status LED. For boards like Olimex ESP32-POE. |
| ir2mqtt_bridge_wifi.yaml | WiFi + MQTT + status LED. Minimal network setup. |
| ir2mqtt_bridge_serial.yaml | USB/Serial only, no network. JSON over UART0. |
| ir2mqtt_bridge_multi_serial.yaml | USB/Serial with 2× RX and 3× TX channels. Uses rmt_symbols: 64 to stay within ESP32 RMT limits. |
All examples use substitutions: at the top for easy pin customization.
ir2mqtt_bridge:
receivers: [rx1] # remote_receiver IDs
transmitters: [tx1] # remote_transmitter IDsSerial mode — add a uart: component and reference it:
uart:
id: bridge_uart
tx_pin: GPIO1
rx_pin: GPIO3
baud_rate: 115200
ir2mqtt_bridge:
uart_id: bridge_uart
receivers: [rx1]
transmitters: [tx1]When using serial, set
logger: baud_rate: 0to free UART0 from ESPHome's logger.
Receive (bridge → host): published to ir2mqtt/bridge/<device_id>/received
{ "type": "received", "protocol": "nec", "receiver_id": "rx1", "address": "0xFF00", "command": "0x1A" }Send (host → bridge): publish to ir2mqtt/bridge/<device_id>/command
{ "command": "send", "code": { "protocol": "nec", "address": "0xFF00", "command": "0x1A" } }See MANUAL.md for the full JSON protocol, all config options, and hardware limits.