Funktion für Rollo-Status-Prüfung vor Aktion?

Begonnen von zYloriC, 07 September 2015, 15:51:28

Vorheriges Thema - Nächstes Thema

zYloriC

Hallo zusammen,

ich suche nach einer eleganten Möglichkeit vor dem Herunterfahren eines Rollos dessen Status abzufragen. Wenn das Rollo bereits unten ist, soll kein erneuter "herunter"-Befehl gesendet werden. Wie löse ich es am besten?

Zum Hintergrund gibt es 2 Szenarien:
1) Ich nutze DOIF-Befehle und Homatic UP-Rolladen-Aktoren. Wenn das Rollo unten ist und ich es dennoch herunterfahre, knackt der Schalter. Dies ist hörbar/störend und wer weißt, vielleicht tue ich dem Relais auch eine Gefallen wenn ich es nicht unnötig betätigen lasse.
2) Im Kinderzimmer gibt es einen Spezialfall, da durch die Prüfung sichergestellt werden soll, dass die Mittagsschlaf-Verdunkelung nicht beim Zurückfahren der Beschattung mit hochgefahren wird...

Ich habe schon an Verschachtelte DOIFs gedacht, diese würden aber zu unzähligen DOIF-Definitionen und Unübersichtlichkeit führen.
Eigentlich suche ich nach einer Funktion, die ich in einer DOIF-Bedingung aufrufen kann und die zunächst prüft, ob "Rollo.pct < 100", bevor es das Rollo hochfährt, denn wenn es bei 100(%) ist, ist es bereits oben...

Habt ihr Tipps wie ich so eine Funktion für mein Rollos baue. Für jedes Rollo einzeln oder gibt es etwas Generisches? Gibt es ein Modul oder habt ihr es ganz anders gelöst?

Vielen Dank für eure Hilfe. Viele Grüße!!


ChrisK

Ich hab das ganze so gelöst:

fhem("set ba_rollo1:FILTER=pct<50 50");;\

Das setzt das Rollo ba_rollo1 auf 50 wenn es auf weniger als 50 steht.

zYloriC

danke für den Tipp. Dass probiere ich heute gleich mal aus.

Weiß jemand zufällig ob der Aufruf "fhem("set ba_rollo1:FILTER=pct<50 50");;\"
viel mehr Performance verbraucht als ein einfaches "set ba_rollo1 50"
in einer DOIF Schleife?