yocto isn't the sexy answer, but 100 devices will make you grateful for the boring one.
Work story for you lot! As always, this is a bit long, but I love working and writing about it, and I hope y'all would love reading about it too!
I am working on a client project, where among other things, I have to make an SBC based HMI endpoint. The endpoint shall run scripts that helps visualize the state of the rest of the system, shall provide compute space for the client's own control algorithms to run, and shall have interfaces for controlling and reading digital and analog I/O within the system.
The client's control algo reads and actuated these I/O interfaces. Now, the SBC does not have to control them, we have separate boards that connect to a central logger. The SBC also connects to the logger over a USB interface, and for controlling the I/O, it only has to send a message to the Logger.
In the future, there is plans to have IP camera streams on a local ethernet network, and have the SBC hooked into it and help stream these feeds to a remote endpoint on the internet, for live, remote monitoring purposes.
Oh, and we are planning to have about 100 such systems deployed in the future, and we gotta actively design things for that. So keep that in mind too!
This is the most interesting problem that we have to face in this project. The debate is between linux + DE (desktop enviromnent) and android + kiosk mode customization. The decision boils down to 2 things - reproducibility of the image and all custom scripts that are being written for it, and ease of integration of said scripts that shall be written for it.
The advantage that I see at the moment is with Linux and a DE, and that boils down to the YOCTO build that we can have for it.
YOCTO, is a build system that helps us create custom OS distros, all tailor made by us for the application that we have intended. Via bitbake recipes, we can integrate as many scripts as we want, at any depth and degree of closeness to the linux kernel as we want, and ensure that the output binary that is flashed to the processor is consistent, across one or 100 such SBCs.
Android, in kiosk mode, is what I have seen being used MULTIPLE times in such SBC based HMI systems. The integration of python scripts on this is questionable for me - simply because I have never done it or seen it being done.
However, the beauty and smoothness of the UI that I have seen on kiosk-android deployments is unmatched - albeit the compute-heavy nature of Android.
And to make this more complicated - we may very well see an entirely different compute unit being used in this system in the future. This means that the OS image should also be compatible on the newer SBC or compute mechanism that we see in the system.
After talking to Gemini - YOCTO build for linux + a DE is the best option, and it boils down to the fact that YOCTO is build for shit like this. The meta-layers is all that needs to be swapped out for a change of SBC, and the bitbake scripts need to be setup ONCE for it to be reproducible as many times as we want it to be.
Also, integrating custom python logic and the client's algorithm on this is much easier than Android, that apparently does NOT support native python on it.
So yeah - as much as I hate to say it, all roads do indeed lead back to YOCTO.
For those who have read so far, first of all - thank you for your time. Second - I'll keep y'all posted about any further devs on this for sure.
Cheers!