So, habe mal ein kleines Testobjekt erstellt.
Einen Schalter für AN und AUS und einen Timer.
Schalter habe ich unter HELFER erstellt, nennt sich Markise AN/AUS und soll quasi deinen Schalter für die Markisensteuerung simulieren.
Dann unter Helfer einen Timer erstellt mit 5 Minuten laufzeit. Ist zu viel, kann aber ja jeder so einstellen, wie er will. Geht ja nur darum, das der Timer beim klick auf den Schalter gestartet wird und wenn der Schalter wieder geklickt wird, der Timer aus geht und man dann die Zeit auslesen kann.
In Automatisierung und Szene müssen wir dann (ich habs momentan mit 2 Routinen gemacht) 2 Routinen erstellen.
Zeit start und Zeit pause.
Code:
alias: Zeit start
description: ""
trigger:
- platform: state
entity_id:
- input_boolean.markise_an
from: "off"
to: "on"
condition: []
action:
- service: timer.start
data: {}
target:
entity_id: timer.timer_1
mode: single
Code:
alias: Zeit Pause
description: ""
trigger:
- platform: state
entity_id:
- input_boolean.markise_an
from: "on"
to: "off"
condition: []
action:
- service: timer.pause
data: {}
target:
entity_id: timer.timer_1
mode: single
Dann habe ich mir auf dem Dashboard eine Entitätsanzeige gemacht, die mir bei "Zeit Pause" dann die verstrichene Zeit anzeigt, wobei hier von 5 Minuten an rückwärts gezählt wird.
So, wenn Du nun also z.B. weißt, dass das vollständige öffnen der Markise sagen wir mal 30 Sekunden dauert, kannst Du ziemlich sicher sagen, das nach 15 Sekunden die Markise zu 50% ausgefahren ist.
Vorteil bei Timer-1 Pause ist, das Du auch weiter raus fahren lassen kannst und der Timer dann einfach weiter läuft, somit also auch die neue Position erfasst würde.
Fehlt natürlich noch eine Routine, die auf das einfahren der Markise reagiert und die Zeit ermittelt und eine Routine, die den Timer gegebenenfalls zurück setzt.
Aber ich denke, das würde den Rahmen hier sprengen.
Erstell Dir das erst mal so und experimentiere selbst ein wenig rum.