Seven years ago, while renovating my house, I decided that I did not want the wired part of the installation to depend on cloud services or on a generic all-in-one controller.
So I started building my own stack.
Today the house runs on six Controllino Maxi controllers distributed across multiple electrical panels. Each panel has an ESP32 bridge that exposes the controller runtime over MQTT and Homie, and a Node-RED component in the middle handles discovery, health checks, and distributed automation logic. Home Assistant sits above that layer rather than owning the low-level behavior directly.
One practical reason it ended up this way is that a common field bus between all panels was not realistic in my specific installation, so a local Wi-Fi bridge per panel became the most workable option.
For a long time I kept all of this private because it was too tied to the real house, and because the early versions were honestly too messy to publish.
Over the years I kept refactoring the reusable part on purpose, because I did not want it to remain a one-off personal installation. I wanted the core to become something other people could actually inspect, reuse, and potentially adopt for their own setups.
That is why I eventually split it into four separate public repositories:
lsh-corefor the controller-side runtimelsh-bridgefor the ESP32 serial-to-MQTT / Homie bridgenode-red-contrib-lsh-logicfor the orchestration layerlsh-protocolfor the shared wire contract
Project entry point:
What stayed private is mostly the installation-specific composition: naming, panel mapping, OTA and deployment details, and the exact topology of the real house.
I am not posting this as a universal recommendation or as a stack that everyone should copy as-is. But I did convert the core of it into reusable libraries and documented it because I would genuinely like it to be useful to other people with similar constraints.
If someone wants to adopt parts of it, adapt it, or even try the overall approach, that is exactly why I finally made the reusable side public.
The design choices that mattered most for me were:
- wired controllers first, network second
- local logic should still remain coherent when Wi-Fi or the broker misbehaves
- the network should extend the installation, not define its basic behavior
- Home Assistant discovery should be generated from the orchestration layer instead of maintained by hand
If anyone here has built something similar around wired inputs, PLCs, MQTT, or Home Assistant sitting above a separate control layer, I would genuinely like to hear what worked for you and what did not.
And if anyone is interested in actually trying or adopting parts of the stack, I would be very interested in that as well, especially to understand what is still unclear or missing from the public documentation.
A couple of photos as well: one current panel snapshot and one early renovation-stage shot.
