I am starting a new project on embedded industrial systems with Linux Yocto on FreeScale iMX6 and I am wondering which design patterns should I use to decouple the GUI from the system behaviour.

My concerns are:

1) maybe Qt5 is a good choice but I would like also to be able to control the industrial system from a tablet with Android or from a remote desktop or, why not, to be free to select another framework and not being dependent from Qt for life

2) the Linux system can be controlled acting on the filesystem (/dev and /sys/class ...) so, should I include the code to open/close files directly into the GUI as Qt actions ?

3) will be better to create a state machine independent from the GUI implementation and to include in the GUI actions just the code to interact with the state machine ?

4) how about to use a light web server and to develop the GUI as a website ?

I would be glad if someone could recommend a book or articles or personal opinions. Thank you in advance

Andrew