First, here are links to dropbox folders for this project that I will update once in a while.
MicroPython files for the V1 version which uses uasyncio to achieve Reading of inputs in a separate task. The MQTT (using mqtt_as library) example appears to be reliable. Most reliable.
MicroPython files for the V2 version which is not using uasyncio so it is simpler. It is using Timer's interrupt only. Seems reliable with mqtt_as too. Not stable with built-in umqtt.simple.
UIFlow2 Demo