Dachfenster-Rolläden von Roto über Handsender ansteuern

Aus FHEMWiki
Version vom 18. November 2018, 23:20 Uhr von AndreasMohr (Diskussion | Beiträge) (Typos/Spelling)
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)

AVRoto v1.2 FS20-Interface für Dachfenster-Rolläden von Roto mit Fernbedienung zur Integration in FHEM

Voraussetzungen

Die Dachfenster werden über eine Funkfernbedienung (Handsender) für maximal 5 Kanäle (=Fenster) angesteuert. Es ist ein Eingriff in den original Handsender nötig, dieser sollte nur durch Personen durchgeführt werden, die "elektrisch nicht unerfahren sind", eine halbwegs ruhige Hand haben und mit dem Lötkolben umgehen können. ACHTUNG: durch den Eingriff geht ziemlich sicher die eventuell noch vorhandene Garantie flöten! Bitte den Eingriff nur durchführen wenn man sich dessen bewusst ist!

Konzept

Da der original Handsender nicht über FHEM bedienbar ist (Rolling Code, nehme ich mal an) wurde eine Elektronik entwickelt, die im Prinzip das (nach-)macht, was der menschliche Benutzer auch macht. Hierzu muss ich kurz die Funktion des Handsenders erläutern: Der 5-Kanal-Handsender besitzt 4 Tasten, jeweils eine für SELECT, AUF, STOP und AB, sowie eine LED für jeden der 5 Kanäle. Möchte man zum Beispiel den Rolladen auf Kanal 2 hochfahren, so wird zuerst so oft die SELECT-Taste gedrückt, bis die LED von Kanal 2 aufleuchtet, anschließend drückt man die Taste AUF. Alle anderen Kanäle funktionieren auf die gleiche Art und Weise. Eine Besonderheit ist die Funktion um alle angelernten Rolläden auf einmal auf, bzw. ab fahren zu lassen. Diese Auswahl wird am Handsender durch Leuchten aller 5 LEDs angezeigt (anwählbar durch Drücken von SELECT nach dem Kanal 5 aktiv war). AVRoto kann also Mikroprozessor-gesteuert alle Tasten des Handsenders bedienen sowie den Zustand der LEDs lesen, somit ist es möglich per FS20-Befehl entweder einzelne Rolläden oder auch alle auf einmal zu steuern. Als Interface zum FS20-System dient der FS20- und Wetterdaten-UART-Empfänger FS20 WUE (bei ELV knapp 15 EUR), der empfangene FS20-Befehle über eine TTL-RS232-Schnittstelle weiter geben kann.

Hardware/Schaltung (siehe AVRoto v1_2.pdf)

AVRoto Schaltplan

Verwendet wird ein ATmega 8 in (fast) Minimalbeschaltung. Ich habe die DIL-Variante gewählt, da sich die Schaltung dann relativ einfach auf einem Stück Lochraster-Platine mittels fliegender Verdrahtung in Fädeltechnik realisieren lässt. Da der Handsender mit einer 3V-Batterie betrieben wird und sowohl der Atmega wie auch das FS20 WUE mit 3,3V betrieben werden können habe ich eine kleine Spannungsregelung mittels TLE4247 (U1) und 2 Kondensatoren implementiert. Dieser Regler besitzt einen relativ weiten Eingangsspannungsbereich (glaube 4-40V), sodass sich als Versorgung jedes ausgediente Gleichspannungs-Steckernetzteil (vom alten Import-AB) verwenden lässt, der Strombedarf ist mit ein paar Milliampere vergleichsweise unwichtig. Das FS20 WUE-Modul unterhält sich über die UART-Schnittstelle direkt mit dem Atmega, über Pin 1 der Steckerleiste 2 kann es dem Atmega mitteilen, dass FS20 Daten zur Abholung bereit stehen. Es ist zwar auch möglich, alle empfangenen FS20-Befehle direkt weiter zu schicken, allerdings hat sich das in der Praxis als sehr störanfällig erwiesen, gerade wenn viele FS20-Befehle hintereinander durch die Luft sausen (was ja bei Verwendung von FHEM des öfteren mal passiert).

Das WUE kann ein paar (glaube 5) Kommandos im internen Puffer speichern, die der Atmega dann der Reihe nach abholen und verabeiten kann. In diesem Zusammenhang möchte ich noch erwähnen, dass die Schaltung nur funktioniert, wenn, wie im Schaltplan ersichtlich ein externer Quarz mit 3,6864 MHz verwendet wird, der interne RC-Oszi ist für diese Aufgabe zu ungenau (ich hab's probiert). Jumper A und B sind für zukünftige (Firmware-)Erweiterungen gedacht, sie werden im Moment nicht verwendet, können also auch weggelassen werden. Der Programmier-Stecker J4 kann ebenfalls weggelassen werden, wenn der Controller nicht in der Schaltung programmiert wird, sondern z.B. mit einem Entwicklungsboard. Der Taster SW1 dient zum Aufrufen des Programmiermodus (siehe Punkt 5, Programmierung der FS20 Adressen), die LED D1 zeigt den Status des Programmiermodus an. Über die Pfostenleiste J6 wird die Ankopplung an den Handsender hergestellt (ich habe dafür ein Stück Flachbandkabel von einem IDE-Controller genommen (sowas gab's mal - die mit den blauen Steckern, die sind nicht so riesig).

Durch Messen am Handsender habe ich die entsprechenden Punkte gefunden an denen ich die Signale einspeisen, bzw. auslesen muss. Die Taster des Handsenders schalten jeweils nach Masse, hier werden parallel dazu die Pegel durch den Atmega ebenfalls auf Masse gezogen (dies geht übrigens auch viel schneller als man das mit der Hand machen kann). Bei den LEDs nehme ich das Signal jeweils an den Vorwiderständen ab (siehe Bild).

Nachbau

AVRoto Anschluss an Handsender

Wie schon oben erwähnt lässt sich die Schaltung relativ einfach auf einem Stück Lochrasterplatine aufbauen. Die Spannungsversorgung habe ich mittels Silberdraht durchgeführt, alles restliche mit Fädeldraht, soviel ist es ja nicht. Den Spannungsregler und die dazugehörigen C's habe ich als SMD-Variante auf der Unterseite plaziert, ebenso den Vorwiderstand für die LED. Atmega 8 programmieren: dies erfolgt entweder auf einem Evo-Board oder über die Stiftleiste J4 (ISP). Hierbei ist es wichtig als Taktgeber external Crystal Oszillator (high)einzustellen, da wir ja mit externem Quarz arbeiten.

Beim Anschluss an den original Handsender ist dieser zuerst aus dem Gehäuse zu nehmen und WICHTIG-die Batterie zu entfernen.

Programmieren der FS20 Adressen

AVRoto speichert bis zu 6 Adressen (Kanal 1 bis 5 und Alle Kanäle, s.o.) im EEprom, so dass sie auch nach Spannungsausfall erhalten bleiben. Um einem Kanal eine FS20 Adresse zuzuweisen geht man wie folgt vor: - Mittels der SELECT-Taste den gewünschten Kanal (oder alle Kanäle) auswählen - solange die LED(s) des Handsenders noch leuchten die Programmiertaste von AVRoto gedrückt halten bis die LED D1 leuchtet - Ein- oder Ausschalt-Befehl mit der gewünschten FS20-Adresse senden (diese sollten natürlich vorher in FHEM definiert worden sein) - diesen Vorgang für alle verwendeten Kanäle durchführen

Weitere Infos / geplante Updates

Aktuell werden FS20-mässig nur die Befehle AUF, 0x00 (aus, auf 0% dimmen) und AB 0x01 (Einschalten auf Helligkeitsstufe 1 (6,25%, Minimum) unterstützt. Da die Verbindung zur STOP-Taste auch verdrahtet ist, bedarf es allerdings nur einer Firmwareanpassung um z.B. über on-for-timer-Befehle die Rolläden nur halb runter zu fahren. Dies folgt noch irgendwann (zumindest falls es jemand braucht (ich brauch es eigentlich nicht).

Einbinden in FHEM

Definition eines Rolladens in der fhem.cfg:

define sz_rollo_w1 FS20 c102 01
  attr sz_rollo_w1 eventMap on:zu off:auf
  attr sz_rollo_w1 icon icoFenster.png
  attr sz_rollo_w1 model fs20as1
  attr sz_rollo_w1 room Schlafzimmer

Um den gewünschten Rolladen nun z.B. jeden Morgen um 9:00 zu öffnen genügt folgender Eintrag in der fhem.cfg:

define rollo_w2_auto_auf at *09:00:00 {\
  {fhem("set sz_rollo_w2 off")}\
  {fhem("setstate sz_rollo_w2 off")}\
  }

Hexfiles zum Programmieren des Atmega gibt es auf Anfrage bei mir - oder kann man die hier auch irgendwie hinterlegen?