Un HMI con python?

Un HMI ('Human Machine Interface'), es una aplicacion (software), para que las personas interactuen con una maquina.   La pantalla de operación.
Este software permite mostrar lo que ve el controlador de un proceso (PLC, PAC ), y manejar el proceso o maquina, enviando ordenes al controlador.

La mayoria de los softwares para desarrollar un HMI, son vendidos por los mismos fabricantes de los controladores (plc, PAC), y estan sujetos a una licencia, que limita y restringe su uso.
Hacerlo con software libre tiene la ventaja de que puedes hacerlo correr en cualquier computador, y tener funcionando todas las copias de que quieras.
Ademas puede tener caracteristicas adicionales, que un HMI comercial no tiene:
    Que registre eventos y genere informes en determinadas situaciones.
    Poder visualizar la informacion en forma remota como una pagina web.
    ...

Una aplicación HMI, esta constantemente leyendo valores desde un controlador, y con los valores leídos, anima los elementos que muestra en las pantallas, según la configuración que se le ha dado.
Podria leer los datos por un puerto serial, Modbus-rtu, o podria leer por un puerto ethernet, Modbus-TCP
Pero solo lee, una tabla de valores.   El controlador (PLC) debe estar programado para poner en una tabla con determinadas direcciones, los valores que interesa mostrar. Debe estar definido, que significa, y a que corresponde, cada valor en cada dirección de la tabla.   La aplicación HMI, necesita esta misma definición, para interpretar cada valor que lee, y mostrar esos valores según lo que representen.
Del mismo modo, para que el HMI, pueda enviar ordenes al controlador, debe esta definido, tanto en el programa del controlador (plc), como en la la aplicación, el significado de escribir determinados valores en determinadas direcciones.

Para que la aplicacion pueda ser modificada facilmente, sin necesidad de alterar el codigo de programacion, la definicion de que significa cada valor leido, y de como se debe mostrar, la obtiene la aplicacion de tablas de configuracion.   Estas son archivos csv (Valores Separados por Comas) que pueden ser editadas facilmente con LibreOffice