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 verschiedenste Konfigurationen welche Befehle ausgeführt werden müssen um die Hardware des Rollos zu steuern. Weitere Konfigurationen können im Forum angefragt werden.

Besonderheiten:

  • Wird in einer Konfiguration ein Kanal für die Richtung, der zweite für das Aktivieren des Rollos genutzt (z.B. Typ1), wird immer vor einem Rollo-Start die Richtung gesetzt. Bei einem Richtungswechsel während der Fahrt wird der Rollo für 1 sekunde gestoppt und dann in der Gegenrichtung gestartet um den Motor zu schonen.
  • Fährt das Rollo zur Position offen oder geschlossen, wird der Motor noch 5 sec. länger auf on gelassen, um Positionsverschiebungen aufgrund ungenauer Parameter auszugleichen. Bei jedem vollständigen schließen/öffnen ist die Position damit wieder korrekt.
  • 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. Die Ungenauigkeiten die dadurch zwischen echter Position und gespeicherter Position entstehen, werden durch oben angeführte Korrektur ausgeglichen.
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

Es müssen in fhem 2 Kanäle konfiguriert sein die mit on/off gesteuert werden können. Diese Kanäle können als Readings eines device oder als eigenständige definitionen in fhem existieren.

Anwendung

Define

define <name> ROLLO

Attribute

Name Datentyp/
Wertebereich
Default-Wert Beschreibung
kanal1 Text Name des fhem Geräts von Steuerungskanal1
kanal2 Text (optional) Name des zweiten fhem Geräts für Kanal 2, sofern für die eigene Konfiguration notwendig
kanal3 Text (optional) Name des dritten Kanals, sofern für die eigene Konfiguration notwendig
funktionsweise Typ1,Typ2,Typ3,Typ4,Typ5,FS20ru Typ1 Art der Kanalsteuerung. Eine Auflistung der Funktionsweise enthält der nächste Bereich.
device Text wird dieses Attribut angelegt, werden die Kanäle 1-3 als Reading dieses angegebenen devices interpretiert, nicht als eigenständige devices.
drive-down-time-to-100 Ganzzahl 20 Zeit in Sekunden die das Rollo vom offenen zum geschlossenen Zustand benötigt.
drive-up-time-to-100 Ganzzahl 20 Zeit in Sekunden, die das Rollo vom geschlossenen zum offenen Zustand benötigt (meist geringfügig höher als drive-down-time-to-100).
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 den Rolladen deaktiviert werden.

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

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

Typen

folgende Hardwarekonstellationen werden z.Zt. von dem Modul unterstützt, weitere können bei Nachfrage hinzugefügt werden.

Typ1
Kanal 1 Kanal 2 Status
On Off hoch
On On runter
Off Off stop
Typ2
Kanal 1 Kanal 2 Status
On - hoch
- On runter
Off - stop hoch
- Off stop runter
Typ3
Kanal 1 Kanal 2 Status
Off - hoch
On - runter
- On stop
FS20rsu
Kanal 1 Status
On hoch
Off runter
On stoppt das hochfahren
Off stoppt das herunterfahren
Typ4
Kanal 1 Kanal 2 Kanal 3 Status
on-for-timer 1 - - hoch
- on-for-timer 1 - runter
- - on-for-timer 1 stop
Typ5
Kanal 1 Kanal 2 Status
on off hoch
off on runter
off - stop hoch
- off stop runter

Settings

Es gibt mehrere Settings die das Rollo in eine bestimmte Position fahren:

set <name> <geschlossen> Fährt das Rollo komplett herunter (Position 100)

set <name> <offen> Fährt das Rollo komplett nach oben (Position 0)

set <name> <schlitz> Fährt das Rollo soweit herunter das nur die Rolloschlitze offen sind (Position 90)

set <name> <position> <value> Fährt das Rollo auf eine beliebige Position zwischen 0 (offen) - 100 (geschlossen)


Weitere Fahrbefehle für das Rollo:

set <name> <stop> Stopt ein fahrendes Rollo unabhängig davon ob die vorher angegebene Zielposition erreicht wurde.

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.


Sonstige Set-Befehle

set <name> extern <position:offen,geschlossen,schlitz,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 <position:offen,geschlossen> Setzt den internen Status des Rollo auf offen bzw. geschlossen ohne irgendwelche weiteren Aktionen durchzuführen.

Readings

Name Wert Beschreibung
extern extern,no Dieser Wert steht per default auf "no", nur bei [code]set extern ...[/code] wird er für die dauer der Befehlsausführung auf "extern" gesetzt.
letzte_fahrt drive-up,drive-down Zeigt die zuletzt gefahrene Richtung an, wird für den Befehl "toggle" benutzt.
position 0-100 Die aktuelle Rollo-Position als %-Wert, 0=offen, 100=zu
state offen,geschlossen,schlitz,drive-up,drive-down,position-[nn] aktueller Rollo Status. Beim fahren: drive-[richtung], im stillstand die Position als klartext (offen,geschlossen,schlitz) oder als Position (position-[nn])
stop Zeitwert interner Zeitwert wann das Rollo beim fahren seine Zielposition erreicht hat. im stillstand ohne Bedeutung
ziel_state offen,geschlossen,schlitz,position-[nn] Bei fahrendem Rollo die anzufahrende Zielposition

Anwendungsbeispiele

Define

define meinRollo ROLLO myMcp23017 PortA0 PortA1 Typ1

Die Rollo-Kanäle sind Readings des Mcp23017-Device

define meinRollo ROLLO - Rollo_KanalA Rollo_KanalB

Die Rollo-Kanäle sind in fhem Eigenständige Devices, der Parameter <device> wurde deshalb mit einem "-" deaktiviert

Set

set RolladenWohnzimmer position 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 geschlossen

In der Oberfläche von fhem wird für das Rollo die Position "geschlossen" gespeichert, ohne Berechnungen durchzuführen oder Hardware zu steuern. Wird eevtl. 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 Typ2-Rollos 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 offen) 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 geschlossen) 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. In diesem Beispiel ist das Rollo als Typ2 (ein Kanal hoch, zweiter Kanal runter) definiert. 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 mit der jeweils aktuellen Version des Moduls als Anhang im ersten Beitrag.