carl552 posted:This level of computation and control is beyond DSC, TMCC and most home computers.
I'm somewhat offended by this comment. A Commodore 64 is perfectly capable of running the I/O for thousands of devices, never mind any modern computer. As a point of fact my father's layout was run by said Commodore 64 in the 80's with dozens of blocks, neon lights and the whole assortment of WWII surplus relays and such. My point on the previous post that TMCC is good enough was just that it is good enough to control the things that it can control. you don't need another system in place to turn on and off accessories or to activate turnouts. TMCC already does it just fine.
Looking at the LCC spec, which has proven somewhat difficult as it is not clearly laid out like most protocols in electronics, it seems fairly straight forward, and designed to be much more capable than it actually needs to be in order to try and future proof it some what. From what I can see you can send a payload of up to 256 bits of information to any of 4096 addresses on the system (12 bit addresses.). this is well within the ability of pretty much any modern microcontroller so it hardly matters which one you use.
I will point out again that any open source project should avoid using a proprietary system like CAN, when open source alternatives are available, but understand wanting to stick with the system in the LCC standard. Why a licensed technology was chosen for a open standard confuses me.
In any case, using the ESP32, or whatever else, building a board that interlinks with others and does whatever with some input to make some output happen is pretty straight forward stuff in the software. For the hardware, I recommend using Opto-couplers on all input and output lines to protect the uP. Additionally any average opto will provide enough current to drive an LED or two for block indicators and the like. In either case you will need a buffer transistor between the output lines of the uP and the Opto or LED it is driving, as the uP can not provide the current needed. I mention this because it would make the most sense, to me anyway, to put all these support components on the same board with the uP.
Pretty much you're making whats known in heavy industry as a Programable Logic Controller, or PLC. Take data (X) in, if it matches pre programed things, do output (Y). It's not complex and requires very little computing power. Once you have base code written to interrupt the LCC standard on the CAN bus, that can be copied to all modules and there is not much more to it. if X then Y to your heart's content.