Button states with garage door Open - Hold - Close

My code opens and closes my garage and i’m somewhat happy with it, but as i’ve used it more and more i’m trying to think of ways it can be improved.

My door seems to have 3 states on the one pin. Open, stop (reverse) and close. If i fully open it and leave it for maybe 5 mins, it automatically skips the stop (reverse) state. If i close it before the 5 minutes are up, i have to press the button twice to close it.

Just a bit curious as to what others would do here, would you control it all via one button, or two. would you use a timer to try and figure out if it needed to be pressed once or twice to close… I was tempted to put in a reed switch to see its state (currently using a cam) but feel with some carefully planning and coding, the apps buttons could always know if its open or closed.

I think I would put a read switch with a timer and build the functionality into the code. Also the reed switch could notify you if the door was open for an excessive amount of time. Or a cat had slipped in and the door had opened again.