Rollo Modul mit 2 Eingängen (Schalter) , 2 Ausgängen (Motoren), Laufzeit, etc

Hallo Community,
ich steige im Moment von FHEM auf HA um und komme bei meinem Rollo´s nicht weiter und bitte Euch um etwas Input / Feedback wie ich das Thema in HA angehen kann.
Ich habe aktuell HA auf einem RaspBerry laufen (war auch bei FHHM so) und habe an den I2C Bus mehrere MPC23017 (16bit IO) in verschiedenen Etagen hängen (I2C ist mit einem BUS Extender verlängert). Am jedem MCP23017 sind die ersten 8 Ports Eingänge der Schalter und die restlichen 8 Ports gehen zu einem Relais Modul, an welchem die Rollomotoren angeschlossen sind.
Sprich jedes Fenster belegt 4 IO Ports, sprich 2 Eingänge (Rollotaster) und 2 Relais Rollomotoren. In FHEM wurde das über eine Anpassung im Modul 44_Rollo.PM gebaut.
Über HACS habe ich bereits I2C aktiviert und MCP23017 integriert. Es ist mir aktuell möglich den Status der Eingänge zu sehen, drauf zu reagieren, als auch Relais zu schalten. Soweit so gut.
Jetzt möchte ich aber ein Gerät Rollo erstellen, in welchem ich die Laufzeit und die 4 Ports für das jeweilige Rollo definieren kann. Das Gerät soll von außen steuerbar sein, indem man den State offen, geschlossen, Schlitz oder einen Prozentwert übergibt. Gleichzeitig soll das Gerät über den Taster so reagieren, dass die Betätigung bei Rollolauf zum Stoppen des Rollos führt.
Könnt ihr mir Tipps geben, die ich das angehen kann. Ggf. gibt es ja bereits solch ein Modul über HACS oder hat jemand ähnliches umgesetzt?
Hinweis: Ein Umstieg auf Shelly, HM oder ähnliche WLAN oder Funk gebundenen Systeme wollte ich explizit vermeiden. Das liegt zum einen an der stabilen Funktionsweise innerhalb der letzte 12 Jahre FHEM Betrieb.

Danke Euch

Das geht über das Cover Template in der confoguration.yaml

Kannst auch mal nach time Based Cover bei HACS schauen

Danke @metallmanu.
Ich bin nun mit dem Cover Time Based Synced und ein paar Automatisierungen weiter gekommen. Mit dem Cover Time Based Synced und der dort zu definierenden travelling_time konnte ich über open/close_switch_entity_id die Relais für den Rollladenmotor up/close schalten, welches am MCP23017 hängt. Die Automatisierung (Rollo auf, Rollo zu, Rollo Stop) habe ich für die Rollladentaster gebaut, die auch am MPC23017 hängen, um eben die Entität für das Cover Time Based Synced zu schalten. Soweit funktioniert das alles.
Jetzt aber noch eine Newbie Frage: Ist es nicht zu aufwändig jeden Rollladentaster mit je 3 Automatisierungen zu belegen, ich habe ca. 20 Rolladen. Des weiteren die Frage, ob ich das Cover Time Based Synced wirklich in der configuration.yaml definieren muss oder ob man das auch auslagern kann.
Wie kann ich das Ganze bei den 20 Rollladen einfacher gestalten? Außerdem soll es noch ein paar Gruppenschaltungen geben, die auch von einem Taster geöffnet / geschlossen, aber eben auch zeitgesteuert / sonnenstandsgesteuert betätigt werden sollen.
Grüße