I'd make all ESP32 controllers the same - same ready-made PCB, plug-in terminals for the controller and screw terminals for inputs and outputs. ESP32-S3 has enough of IO to handle an absurd variety of tasks. You can have at least 40 ESP32s on the same WiFi reporting data within milliseconds of the event and taking commands via HTTP APIs. Firmware updates are easy over WiFi, too. You can probably have the same firmware for all of them with precise logic configured via the HTTP API. Works well for me in https://github.com/kachurovskiy/nanoels - albeit with just 1 ESP32 per machine :)