I'm working on a small project coded in Python that uses a single button for input and a RGB LED as feedback, which responds to button presses and asynchronous events from the network.
As the feedback has become more complex (lot's of ifs, elses and timers), it's become evident that a UI design pattern, such as MVC or MVP would help segregate functionality.
The code is already mostly MVC in style, where the button input is tied to a controller thread and the LED has a View thread where animations are loaded under control of the controller. A model exists for interacting with a remote device.
For example, the button initiates an HTTP request by calling on the controller, which initiates an async request to the model and returns a View that blinks the LED to let the user know the request is inflight.
Where I'm struggling is how to deal with the response from the Model when the HTTP request is completed. The View could poll the Model but that seems wasteful and perhaps slow. Which makes me wonder if the Model should update the View either by raising an event or using a controller supplied callback, but these would technically tie the Model to the View.
I'm also wondering if MVP would be a better approach to this and use the Presenter to arbitrate between View and Model.
Your thoughts on approach for this totally over engineered gadget would be appreciated.