FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: zYloriC am 07 September 2015, 15:51:28

Titel: Funktion für Rollo-Status-Prüfung vor Aktion?
Beitrag von: zYloriC am 07 September 2015, 15:51:28
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!!

Titel: Antw:Funktion für Rollo-Status-Prüfung vor Aktion?
Beitrag von: ChrisK am 07 September 2015, 15:58:23
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.
Titel: Antw:Funktion für Rollo-Status-Prüfung vor Aktion?
Beitrag von: zYloriC am 09 September 2015, 11:05:09
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?