Hi all,
I wanted to share a long-term Arduino-based project that started during a house renovation about seven years ago and that I finally cleaned up enough to publish in reusable form.
The live installation currently uses six Controllino Maxi controllers distributed across multiple electrical panels in the house. Each controller handles the real field I/O, and each panel also has an ESP32 bridge that exposes the controller runtime over MQTT and Homie.
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 I went with local controller + Wi-Fi bridge pairs instead.
At the hardware level, the recurring pattern is:
- 12/24 VDC power supply feeding the Controllino
- the same source feeding a 5 V buck converter for the ESP32 bridge
- TTL serial between Controllino and ESP32 through a 3.3 V / 5 V level shifter
- low-voltage buttons and indicator lights on the controller side
- higher-voltage loads switched within the Controllino limits
The controller side owns the real I/O and local click logic. The ESP32 side handles the network bridge role. That separation mattered a lot to me because I wanted the controller behavior to remain coherent even when Wi-Fi or the broker had problems.
The software started out much more monolithic. Over the years I kept refactoring it because I did not want it to remain a one-off personal installation forever.
The reusable public side is now split into:
lsh-corefor the controller-side runtimelsh-bridgefor the ESP32 bridge runtimelsh-protocolfor the shared contract between the layersnode-red-contrib-lsh-logicfor the orchestration side above MQTT
Project entry point:
Controller-side runtime:
ESP32 bridge runtime:
The installation-specific composition and deployment parts are still private, but the reusable core is public because I would genuinely like it to be inspectable, reusable, and possibly adoptable by other people with similar constraints.
I am not posting this as a universal recommendation or as a stack everyone should copy exactly. It is simply the result of years of building around a real house, real wiring constraints, and long-term maintainability.
If anyone here has built serious Arduino/Controllino projects that had to live for years in a real installation, I would be very interested in your feedback.
