ROLLO

Aus FHEMWiki


ROLLO
Zweck / Funktion
Rollo-Steuerung zur einfachen Anzeige/Programmierung
Allgemein
Typ Inoffiziell
Details
Dokumentation Thema
Support (Forum) Codeschnipsel
Modulname 44_ROLLO.pm
Ersteller ThomasRamm
Wichtig: sofern vorhanden, gilt im Zweifel immer die (englische) Beschreibung in der commandref!

Das Modul ROLLO bietet eine einfache Möglichkeit, mit ein bis zwei Relais den Hoch-/Runterlauf eines Rolladen zu steuern und punktgenau anzuhalten. Außerdem wird die aktuelle Position in fhem abgebildet. Über welche Hardware/Module die Ausgänge angesprochen werden ist dabei egal.

Das Modul unterstützt beliebige Konfigurationen welche Befehle ausgeführt werden müssen um die Hardware des Rollos zu steuern.

  • Die Rollo-Position wird in 10%-Schritten von 0% (offen) bis 100% (geschlossen) zwischengespeichert um auf der Oberfläche für jede Position ein Icon festlegen zu können.
Verschiedene Ansichten des Rollo:offen, fährt gerade herunter, position 50, fährt gerade hoch, geschlossen

Vorteil dieses Moduls:

Ist ein Rollo mit diesem Modul definiert kann man auf der Oberfläche per Klick das Rollo hoch/runter oder auf eine bestimmte Position fahren. Der aktuelle Status des Rollo (fährt hoch/runter,offen,geschlossen,etc.) wird angezeigt. Die Oberflächenicons werden per devStateIcon gesteuert, Icons und Farben können für jeden Status individuell formatiert werden, die Standard Kommandos auf der Oberfläche (hier: offen, geschlossen, schlitz, Position) können ebenfalls per Attribut angepasst werden. Das Status-Icon ist anklickbar. Beim Anlegen des Moduls werden die Attribute zur Darstellung in fhem mit Standardwerten angelegt, so dass man sich einiges an Tipparbeit sparen kann, aber trotzdem die Möglichkeit hat die Darstellung individuell anzupassen.

Voraussetzungen

Das eigentliche ansteuern des Rollo muss mit FHEM Befehlen ausführbar sein, diese Modul ist "nur" eine Oberfläche/Bedienmodul, kein Hardwaremodul.

Installation

Dieses Modul ist in der offiziellen FHEM-Auslieferung enthalten.

upD https://github.com/RettungsTim/fhem-rollo/blob/master/FHEM/44_ROLLO.pm

upD https://github.com/RettungsTim/fhem-rollo/blob/master/FHEM/44_ROLLO_Automatik.pm

und FHEM neu starten

Anwendung

Define

define <name> ROLLO

Attribute

Name Datentyp/
Wertebereich
Default-Wert Beschreibung
type normal,HomeKit normal Typunterscheidung zur unterstützung verschiedener Hardware. Abhängig vom gewählten Typ wird die Richtung von der die Position gerechnet wird festgelegt:

normal = Position 0 ist offen, Position 100 ist geschlossen
HomeKit = Position 100 ist offen, Position 0 ist geschlossen

secondsDown Ganzzahl 30 Sekunden die das Rollo benötigt um einmal komplett hoch zu fahren
secondsUp Ganzzahl 30 Sekunden die das Rollo benötigt um einmal komplett runter zu fahren
excessTop Ganzzahl 4 Zeit die dein Rollo nach dem Hochfahren noch weiter fahren muss ohne das sich die Rollo-Position ändert (bei mir fährt der Rollo noch in die Wand, ohne das man es am Fenster sieht, die Position ist also schon bei 0%)
excessBottom Ganzzahl 2 Zeit die dein Rollo nach dem Runterfahren noch weiter fahren muss ohne das sich die Rollo-Position ändert (Nachlaufzeit)
switchTime Ganzzahl 1 Zeit die zwischen 2 gegensätzlichen Laufbefehlen pausiert werden soll, also wenn der Rollo z.B. gerade runter fährt und ich den Befehl gebe hoch zu fahren, dann soll 1 sekunde gewartet werden bis der Motor wirklich zum stillstand kommt, bevor es wieder in die andere Richtung weiter geht. Diese Zeitangabe hat nichts mit der eigentlichen Laufzeit des Motors zu tun.
resetTime Ganzzahl 0 Zeit die beim Anfahren von Endpositionen (offen,geschlossen) der Motor zusätzlich an bleiben soll um sicherzustellen das die Endposition wirklich angefahren wurde. Dadurch können Differenzen in der Positionsberechnung korrigiert werden.
reactionTime Ganzzahl Zeit für den Motor zum reagieren. bei jedem Fahrbefehl wird diese Zeit zusätzlich eingeplannt ohne das die Position geändert wird, für "träge" Motoren.
autoStop 0,1 0 Bei autoStop=1 wird kein Stop-Befehl gesendet
commandUp Text fhem Befehl der ausgeführt werden muss um das Rollo hoch zu fahren.
commandUp2 Text Platz für einen zweiten fhem Befehl
commandUp3 Text Platz für einen dritten fhem Befehl
commandDown Text fhem Befehl der ausgeführt werden muss um das Rollo runter zu fahren.
commandDown2 Text Platz für einen zweiten fhem Befehl
commandDown3 Text Platz für einen dritten fhem Befehl
commandStopUp Text Befehl der zum Stoppen ausgeführt wird,wenn der Rollo gerade hochfährt. Wenn nicht definiert wird commandStop ausgeführt
commandStopDown Text Befehl der zum stoppen ausgeführt wird, wenn der Rollo gerade herunterfährt. Wenn nicht definiert wird commandStop ausgeführt
commandStop Text Befehl der zum Stoppen ausgeführt wird, sofern nicht commandStopDown bzw. commandStopUp definiert sind
blockMode blocked,force-open,force-closed,only-up,only-down,half-up,half-down,none none durch dieses Attribut können andere Befehle in FHEM festlegen was mein Rollo machen darf (z.B. bei gekipptem Fenster darf es nicht heruntergefahren wreden):

blocked = Rollo lässt sich nicht mehr bewegen
force-open = bei einem beliebigen Fahrbefehl wird Rollo hochgefahren
force-closed = bei einem beliebigen Fahrbefehl wird Rollo runtergefahren
only-up = Befehle zum runterfahren werden ignoriert
only-down = Befehle zum hochfahren werden ignoriert
half-up = es werden nur die Positionen 50-100 angefahren, bei Position <50 wird Position 50% angefahren,
half-down = es werden nur die Positionen 0-50 angefahren, bei Position >50 wird Position 50 angefahren
none = block-Modus ist deaktiviert

automatic-enabled on,off on Dieses Attribut wird nur für die Modulerweiterung 44_ROLLADEN_Automatic benötigt.

Hiermit kann die automatische Szenariensteuerung für diesen Rolladen deaktiviert werden.

automatic-delay 0,5,10,15,
20,30,45,60
0 Dieses Attribut wird nur für die Modulerweiterung 44_ROLLADEN_Automatic benötigt.

Hiermit kann eine Zeitverzögerung für den Rolladen eingestellt werden, werden die Rolladen per Automatic heruntergefahren, so wird dieser um die angegebenen Minuten später heruntergefahren.

Settings

   open set <Rollo-Device> open
   Faehrt das Rollo komplett auf (pct 0)
   closed set <Rollo-Device> closed
   Faehrt das Rollo komplett zu (pct 100)
   up set <Rollo-Device> up
   Faehrt das Rollo um 10 auf (pct +10)
   down set <Rollo-Device> down
   Faehrt das Rollo um 10 zu (pct -10)
   half set <Rollo-Device> half
   Faehrt das Rollo zur haelfte runter bzw. hoch (pct 50)
   stop set <Rollo-Device> stop
   Stoppt das Rollo
   drive set <Rollo-Device> drive up 5
   Fährt das Rollo in die angegebene Richtung für die angegebene Zeit (in Sekunden)
   blocked set <Rollo-Device> blocked
   wenn aktiviert, kann der ROLLO nur noch eingeschränkt gesteuert werden. Siehe Attribut block_mode für Details.
   unblocked set <Rollo-Device> unblocked
   Aktiviert einen geblockten ROLLO wieder für die normale Benutzung
   pct set <Rollo-Device> pct <value>
   Faehrt das Rollo auf eine beliebige pct zwischen 0 (offen) - 100 (geschlossen)
   reset set <Rollo-Device> reset <value>
   Sagt dem Modul in welcher pct sich der Rollo befindet
   extern set <Rollo-Device> extern <value>
   Der Software mitteilen dass gerade Befehl X bereits ausgeführt wurde und nun z.B,. das berechnen der aktuellen pct gestartet werden soll

set <name> closed Fährt das Rollo komplett herunter

set <name> open Fährt das Rollo komplett nach oben

set <name> half Fährt das Rollo auf Position 50

set <name> pct <value> Fährt das Rollo auf die angegebene Position

set <name> stop Stoppt ein fahrendes Rollo.

set <name> <toggle> Fährt das Rollo in die entgegengesetzte Richtung wie beim letzten mal bis zur jeweiligen Endposition. Fährt das Rollo gerade, wird es zuerst gestoppt und danach ebenfalls in die entgegengesetzte Richtung gefahren.

set <name> extern [open|closed|stop] Startet alle Berechnungen und internen Timer im Modul, aktiviert aber nicht die konfigurierte Hardware (nützlich wenn diese bereits aktiviert wurde, um den Status der Oberfläche mit dem Ist-Zustand synchron zu halten. siehe auch #Zusammenspiel mit externem Taster)

set <name> reset [open|closed] Setzt den internen Status des Rollo auf offen bzw. geschlossen ohne irgendwelche weiteren Aktionen durchzuführen.

set <name> blocked<value> Aktiviert die Blockiert-Sperre abhänging vom Attribut blockMode kann das Rollo danach nur noch eingeschränkt gefahren werden

set <name> unblocked Deaktiviert die Blockiert-Sperre wieder, das Rollo kann wieder komplett in alle Positionen gefahren werden.

Readings

Name Wert Beschreibung
command open,stop,closed
desired_position 0-100 Zielposition die angefahren werden soll (nur sinnvoll während das Rollo fährt)
drive-type modul,extern bei dem Befehl "set rollo extern .." wird dieses attribut auf "extern" gestellt, sonst immer "modul"
last_drive drive-up,drive-down die zuletzt benutzte Fahrtrichtung
pct 0-100 exakte Position des Rollo
state open,closed,position-[0-100] die Position gerundet auf ganze 10% Schritte, identisch mit dem Internal STATE

Anwendungsbeispiele

Set

set RolladenWohnzimmer pct 50
set RolladenWohnzimmer geschlossen
set RolladenWohnzimmer offen 

Drei Beispiele das Rollo-Modul anzuweisen verschiedene Positionen anzufahren.

set RolladenWohnzimmer extern stop

Das Rollo-Modul wird angewiesen den status auf "nicht fahren" zu setzen, die aktuelle Rollo-Position zu berechnen und als neue Position abzuspeichern. Der eigentliche Rollo-Stop-Befehl wird dabei aber nicht gesendet.

set RolladenWohnzimmer reset closed

In der Oberfläche von fhem wird für das Rollo die Position "geschlossen" gespeichert, ohne Berechnungen durchzuführen oder Hardware zu steuern. Wird evtl. benötigt wenn der Ist-Status von den Soll-Werten aus fhem abweicht.

Zusammenspiel mit externem Taster

In einem Anwendungszenario hat ein Nutzer zusätzliche Taster an seinem Rollo-Motor über die er ihn ebenfalls steuern kann. Die Taster selber senden keine Events an fhem, nur der Rollo-Motor. Hier ein Beispiel wie das ganze für aussehen könnte und diese Taster in das ROLLO-Modul integriert werden:

define rollo_manuell_auf DOIF ([meinRollo_Kanal1] eq "on" and [meinRolloModul] ne "drive-up") (set meinRolloModul extern open) DOELSEIF ([meinRollo_Kanal1] eq "off" and [meinRolloModul] eq "drive-up") (set meinRolloModul extern stop)
define rollo_manuell_ab  DOIF ([meinRollo_Kanal2] eq "on" and [meinRolloModul] ne "drive-down") (set meinRolloModul extern closed) DOELSEIF ([meinRollo_Kanal2] eq "off" and [meinRolloModul] eq "drive-down") (set meinRolloModul extern stop)

meinRollo_Kanal1 und meinRollo_Kanal2 sind die Hardwarekanäle die in dem Rollo-Modul zum hochfahren/runterfahren benutzt werden. Das erste DOIF prüft ob das Rollo hoch fährt, ohne das das Rollo-Modul davon etwas weis. Ist dem so wird dem Rollo Modul mithilfe des set <extern> mitgeteilt das das Rollo bereits gestartet wurde. Das Modul fängt an die Zeit zu zählen und aktualisiert den Status der Oberfläche auf "fahre hoch". IM DOELSEIF wird abgefragt ob das Rollo steht, obwohl das Modul denkt das Rollo würde noch fahren. Ist dem so wird wieder mithilfe des set <extern> dem Modul mitgeteilt das das Rollo gestoppt wurde. Das Modul berechnet nun aufgrund der gefahrenen Zeit die aktuelle Position und aktualisiert den Status der Oberfläche auf die Position.

Das gleiche wird dann im zweiten DOIF nochmal für das herunterfahren gemacht.

Man kann nun das Rollo sowohl über die Oberfläche als auch per Taster bedienen und fhem und der reale Ist-Status sind synchron. Ach eine gleichzeitige Bedienung ist möglich, Das Rollo startet z.B. aufgrund einer Automatisierung morgens zum hochfahren und man klickt schnell auf den Taster neben dem Bett und stoppt das ganze wieder.

Links

Thread im Forum

Thread im Forum mit der jeweils aktuellen Version des Moduls als Anhang im ersten Beitrag.