Haha, well there's all the inputs from various hardware that gets standardised and send to MQTT. Then there are secondary flows that listen for the hardware MQTT topics and break the data out for specific purposes whether informational or controlling stuff. There's a lot of processing for the Telegram conversational and command interfaces, some web interface stuff, some warnings (processing sensor inputs and outputing warnings).
It is somewhat more complex than absolutely required because I decided early on that I wanted processing disaggregated so that it was much easier to swap out hardware. That has proved very useful over time. It has also allowed me to easily add new hardware, sensors, controls and new interfaces.
And then there are some test flows too. I use my live system to test out ideas over time. Though I'm gradually moving over to a new Pi3 (from my live Pi2).
And, of course, as this has happened over several years, there is some history in there that needs tidying which will happen as I migrate.