Rolladensteuerung mit FS20SM8: Unterschied zwischen den Versionen

Aus FHEMWiki
K (Wikifiziert + kleinere Korrekturen)
(% => $EVENT)
 
Zeile 57: Zeile 57:


  <nowiki>define rollo.xxx.ntfy notify rollo.xxx:.* {\
  <nowiki>define rollo.xxx.ntfy notify rollo.xxx:.* {\
  if('%' eq 'Ab') {\
  if('$EVENT' eq 'Ab') {\
   fhem 'set sm8.5 Ab';;\
   fhem 'set sm8.5 Ab';;\
   fhem 'setstate rollo.xxx Ab';;\
   fhem 'setstate rollo.xxx Ab';;\
  } elsif('%' eq 'Auf') {\
  } elsif('$EVENT' eq 'Auf') {\
   fhem 'set sm8.6 Auf';;\
   fhem 'set sm8.6 Auf';;\
   fhem 'setstate rollo.xxx Auf';;\
   fhem 'setstate rollo.xxx Auf';;\

Aktuelle Version vom 17. November 2015, 23:47 Uhr

Zielsetzung

Steuerung von Rolladen, die über zwei externe Taster bedient werden können.

Die hier beschriebene Lösung wurde für einen Lott/Uniroll-Gurtwickler entwickelt. Dieser kann über zwei Taster, die am Pfostenstecker des Sonnensensors angeschlossen werden, mit einem Tastendruck von 500 bis 1000ms Dauer geschaltet werden. Ein zweiter Tastendruck stoppt den Vorgang. Da die Anschlussbelegung nicht direkt auf der Lott/Uniroll-Webseite zur Verfügung steht, bitte ich darum, diese von der dortigen Hotline zu erfragen.

Voraussetzungen

Für dieses Projekt ist zunächst etwas Bastelarbeit erforderlich. Benötigt werden ein FS20SM8, je 2 Relais und 2 Freilaufdioden pro Rolladen, ein Gehäuse und ein Netzteil. Ggf. kommen Steckverbinder nach Belieben für den Anschluss des Kabels zum Gurtwickler hinzu. Der FS20SM8 kann mit 3V oder zwischen 5V und 12V betrieben werden. Ich habe ein altes 5V-Gleichspannungsnetzteil und je 2 5V-Subminiaturralais verbaut. Die Schaltung kann schnell auf einer Loch- oder Streifenrasterplatine aufgebaut werden. Wie die Relais und Freilaufdioden angeschlossen werden, ist in der Bedienungsanleitung des FS20SM8 beschrieben. Die Relais erzeugen bei der unten beschreibenen Ansteuerung den benötigten Tastendruck.

Umsetzung

Die Steuerung wird hier beispielhaft für ein Rollo beschrieben. Es werden 2 Ausgänge des FS20SM8 als Devices (1x für "Ab" und 1x für "Auf") in fhem angelegt. Der benötigte Schaltimpuls wird mit "set rollo.xxx on-for-timer 0.5" erzeugt. Mit eventMap wird der Befehl nach "Ab" bzw. "Auf" umbenannt. Im Webinterface wird jeweils nur ein Schaltzustand mit webCmd "Ab" bzw. "Auf" angezeigt. Damit beide Schaltzustände in einer Zeile angezeigt werden, ist ein FS20-Dummy-Device erforderlich. Hier können zusätzlich eine oder mehrere Zwischenstufen (z.B. "Ab80") definiert werden. Zur Steuerung des Dummy-Devices wird ein Notify eingerichtet, welches auf die Eingaben reagiert.

fhem.cfg

Schalte Relais am Ausgang 5 des FS20SM8 zum Rollo-Schließen für 0,5 Sekunden ein:

define sm8.5 FS20 <housecode> <button>
attr sm8.5 comment Rollo xxx Ab
attr sm8.5 eventMap /on-for-timer 0.5:Ab/
attr sm8.5 model fs20sm8
attr sm8.5 room hidden
attr sm8.5 webCmd Ab
define FileLog_sm8.5 FileLog ./log/sm8.5-%Y.log sm8.5
attr FileLog_sm8.5 logtype text
attr FileLog_sm8.5 room hidden

Schalte Relais am Ausgang 6 des FS20SM8 zum Rollo-Öffnen für 0,5 Sekunden ein:

define sm8.6 FS20 <housecode> <button>
attr sm8.6 comment Rollo xxx Auf
attr sm8.6 eventMap /on-for-timer 0.5:Auf/
attr sm8.6 model fs20sm8
attr sm8.6 room hidden
attr sm8.6 webCmd Auf
define FileLog_sm8.6 FileLog ./log/sm8.6-%Y.log sm8.6
attr FileLog_sm8.6 logtype text
attr FileLog_sm8.6 room hidden

FS20-Dummy-Device für das Webinterface:

define rollo.xxx FS20 <housecode> <button>
attr rollo.xxx comment Rollo xxx
attr rollo.xxx dummy 1
attr rollo.xxx eventMap /on-for-timer 15:Ab80/off:Ab/on:Auf/
attr rollo.xxx model dummySimple
attr rollo.xxx room FS20
attr rollo.xxx webCmd Auf:Ab80:Ab
define FileLog_rollo.xxx FileLog ./log/rollo.xxx-%Y.log rollo.xxx
attr FileLog_rollo.xxx logtype text
attr FileLog_rollo.xxx room FS20

Notify zur Reaktion auf die Eingabe im Webinterface:

define rollo.xxx.ntfy notify rollo.xxx:.* {\
 if('$EVENT' eq 'Ab') {\
  fhem 'set sm8.5 Ab';;\
  fhem 'setstate rollo.xxx Ab';;\
 } elsif('$EVENT' eq 'Auf') {\
  fhem 'set sm8.6 Auf';;\
  fhem 'setstate rollo.xxx Auf';;\
 } else {\
  if(OldValue('rollo.xxx') eq 'Auf') {\
   fhem 'set sm8.5 Ab';;\
   fhem 'define rk80 at +00:00:15 set sm8.5 Ab';;\
   fhem 'setstate rollo.xxx Ab80';;\
  }\
 } \
}

Steuerung mit Sonnenauf-/untergang:

Öffnet Rollo bei Sonnenaufgang aber nicht vor 7:00 Uhr

define Rollo.hoch at *{sunrise(0,'07:00',)} set rollo.xxx Auf

Schließt Rollo 15 Minuten vor Sonnenuntergang:

define Rollo.runter at *{sunset(-900)} set rollo.xxx Ab

Erläuterungen

Die "else"-Anweisung im Notify ist für eine Beschattungssteuerung gedacht. Dazu werden 2 Tastendrücke im Abstand von 15 Sekunden ausgeführt, um das Rollo ca 80% herunterzufahren. Weitere Zwischenstellungen könnten mit elseif eingefügt werden. Der Wert von 15 Sekunden in der Anweisung "fhem 'define rk80 at +00:00:15 set sm8.5 Ab';;" muss ggf. an die eigenen Bedürfnisse angepasst werden.

Im Artikel Rolladensteuerung mit fs20rsu und fs20bs ist eine Beschattungssteuerung beschrieben. Wer beide Arten von Rollos gleichzeitig schalten möchte, braucht nur "rollo.xxx" in die Zeile "fhem 'set rollo.wz Ab80';;" einzufügen.

Icons für das Webinterface können ebenso von diesem Projekt genommen werden.

Weblinks