Hey everyone,
I wanted to share a standalone MQTT Bridge I’ve been working on for the Legrand Vantage InFusion system.
This isn’t meant to replace the existing integration (which is great!), but I built this because I was hitting specific reliability walls with my legacy controller setup.
The Problem:
- Restart Fatigue: I tinker with HA a lot. Every time I restarted Home Assistant, it dropped the Telnet connection. My older controller often failed to handle the reconnect gracefully, forcing me to physically reboot the Vantage processor just to get the lights back online.
- Legacy Incompatibility: While the official integration supports Keypad/Scene buttons, it relies on the controller voluntarily broadcasting those events (
S:BTNorS:TASK). My controller (running the legacy Host Protocol on port 3001) is “silent”—it executes the scene but never broadcasts the event to the network, so HA never sees the button press. - Command Crashes: The legacy serial-based architecture got overwhelmed by modern automation speeds. Turning off a whole floor via Alexa would flood the buffer and lock up the controller.
The Solution: I wrote a standalone Python service to act as a traffic cop. It runs independently (systemd), so I can restart Home Assistant 50 times a day without dropping the connection to the controller.
What else it fixes (v1.1.0):
- Scene & Button Support (The “Log Tap”): Since my controller doesn’t broadcast button presses via the standard API, this bridge “taps” into the debug log stream (
EL:events). It intercepts the raw log data to detect button presses that are otherwise invisible to standard integrations. This makes every wall switch available as a Trigger in HA. - Stops the Crashes (Serial Throttling): It implements a tiny, invisible delay (20ms) between outgoing commands. This means you can fire 50 commands from HA instantly, and the bridge queues them up and feeds them to the controller one by one. No more buffer overflows.
- “Sniper” Polling: Instead of constantly polling (which lags the network), it waits for the “Log Tap” to detect a press, waits for the scene fade to finish, and then polls exactly once to update HA.
Big thanks to loopj for the aiovantage library that does the heavy lifting under the hood. I just wrapped it in a service architecture designed for those of us fighting with older hardware limitations.