I'm starting this thread to hopefully collect your experiences with the reliability and general ease of use for different types of DIY software system designs. What are your regrets, as in what would you do differently if you were starting again? Any advice for others?
For a start let's assume anyone doing DIY software already knows some programming and has plenty of "general computers knowledge". This is not about linux vs windows, open source vs proprietary(if you make custom components for your proprietarty system of course) etc.
So what do I mean by software system design? Things like:
For a start let's assume anyone doing DIY software already knows some programming and has plenty of "general computers knowledge". This is not about linux vs windows, open source vs proprietary(if you make custom components for your proprietarty system of course) etc.
So what do I mean by software system design? Things like:
- - Controller centralisation/modularity?
- Use one computer (Raspberry PI, PC, Intel NUC, whatever), connect lots of interfaces to it that talk to all hardware components and run all the software on it?
- Use two computeres in some sort of resilient, fault tolerant setup?
- Use a bunch of small devices like ESP32, each programmed for a very specific purpose?
- Software centralisation/modularity (only for centralised controller/s)?
- Do you run one piece of software that does everything? (maybe except recording and presenting stats)
- Do you run bunch of programs/scripts all under the native OS?
- Do you have a bunch of programs/scripts that each run in its own docker container (If so, do you use, or wish you did use any container orchestration)?
- Imagine you're pulling data from current sensors, tempearture probes, BMSes, you're doing analyzing it and you control a bunch of inverters via their rs485 BMS port. Would you:
- Write one multithreaded script/program that reads/writes through all serial ports.
- Use existing tools like mppsolar to fetch data from the BMSes (via serial), put it in MQQT and have your scripts only consume the data and do the actual control?