[Anleitung] - Sonoff T1 EU - Rollosteuerung mit Modul 44_ROLLO

Begonnen von 87insane, 04 Juli 2018, 16:08:34

Vorheriges Thema - Nächstes Thema

87insane

EDIT: Neue und bessere Version mit Tasmota hier: https://forum.fhem.de/index.php/topic,98366.msg917091.html#msg917091
Nach wie vor geht es auch mit ESPeasy - ABER die Schalter starten sporadisch neu. Das finde ich persönlich schlecht. Hinzu wird bei der
Tasmota Version kein 44er ROLLO Modul benötigt.


Hi zusammen,

nach etwas rum basteln habe ich schon einiges hin bekommen. Ich nutze die oben genannten Schalter (2 Gang) um meine Rolladen zu steuern.

Anbei eine Liste, wie ich dies getan habe. Dies wird noch weiter ausgearbeitet sobald ich Zeit habe:
1. Schalter umflashen auf ESPeasy. Per WLAN oder seriell
2. SONOFF Schalter einstellen (Rules, GPIOs usw.)
3. Jeweiligen Schalter in FHEM einbinden
4. Modul 44_ROLLO für diese Schalter einrichten und steuern




1. Schalter umflashen auf ESPeasy. Per WLAN oder seriell
Hierzu gibt es diverse Anleitungen im Netz und es ist wirklich sehr einfach.
Beide Flash-Möglichkeiten liefen bei mir ohne Probleme. Die Grundkonfiguration
ist auch in den meisten Anleitungen gut erklärt. Wenn gewünscht, werde
ich diese aber auch mit aufnehmen.


2. SONOFF Schalter einstellen (Rules, GPIOs usw. folgen noch)
Nachdem nun die Grundkonfiguration abgeschlossen wurde, können wir damit beginnen
die Geräte an zu legen und richtig zu benamen um eine bessere Übersicht zu bekommen.
Screenshot unten: az_rollo_devices_dashboard.jpg
Danach können wir die Rule Sets anlegen.

Variante 1 (Hin und her togglen mit Delay wenn Motor in die andere Richtung geschaltet wird / Besser für den Motor)
In dieser Variante wird bei einem Druck auf die "Gegnerische Taste" ein Delay auf die Relays gelegt. In dem Beispiel wird ein Bedienen erst nach zwei Sekunden wieder möglich. Hinzu bleibt der Motor bei Druck auf beiden Tasten stehen.
Set 1: (ESPeasy bis 10/18 - In Beitrag zwei mehr dazu.. https://forum.fhem.de/index.php/topic,89136.msg821548.html#msg821548)
on rollo_hoch#taste_hoch do
if [rollo_hoch#strom_output_hoch]=1
  gpio,12,0
else
if [rollo_runter#strom_output_runter]=1
  gpio,5,0
  delay 2000
if [rollo_runter#strom_output_runter]=0
  gpio,12,1
endif
endon


Set 2: (ESPeasy bis 10/18 - In Beitrag zwei mehr dazu.. https://forum.fhem.de/index.php/topic,89136.msg821548.html#msg821548)
on rollo_runter#taste_runter do
if [rollo_runter#strom_output_runter]=1
   gpio,5,0
else
if [rollo_hoch#strom_output_hoch]=1
    gpio,12,0
    delay 2000
if [rollo_hoch#strom_output_hoch]=0
   gpio,5,1
endif
endOn


Variante 2 (Simples hin und her togglen wenn Motor in die andere Richtung geschaltet wird)
In dieser Variante wird beim Druck auf die "Gegnerische Taste" einfach getoggelt. Ohne Stop oder Delay.
Set 1:
on Rollo_Runter#Key do         // Wenn GPIO 9 (Rollo runter Taste gedrückt wird)
if [Rollo_Runter#Relay]=1 // Wenn das Relay Rollo runter (GPIO 5) aktiv ist
  gpio,5,0         // Schalte GPIO 5 (Relay Rollo runter) aus
else         // Sonst
  gpio,12,0                 // GPIO 12 ausschalten (Rollo hoch Relay)
  gpio,5,1         // GPIO 5 einschalten (Relay Rollo runter)
endif
endon


Set 2:
on Rollo_Hoch#Key do         // Wenn GPIO 9 (Rollo hoch Taste gedrückt wird)
if [Rollo_Hoch#Relay]=1 // Wenn das Relay Rollo hoch (GPIO 5) aktiv ist
  gpio,12,0         // Schalte GPIO 12 (Relay Rollo hoch) aus
else         // Sonst
  gpio,5,0                 // GPIO 5 ausschalten (Rollo runter Relay)
  gpio,12,1         // GPIO 12 einschalten (Relay Rollo hoch)
endif
endon


Set 3: (Bei beiden Varianten gleich)
on Rollo_Runter#Relay=1 do         // Wenn das Relay für Rollo runter (GPIO 5) aktiv ist
timerset,1,20                 // Setze einen 20 Sekunden Timer (So lange brauchen meine Rollos bis diese unten sind)
endOn
on Rollo_Hoch#Relay=1 do         // Wenn das Relay für Rollo hoch (GPIO 12) aktiv ist
timerset,1,20         // Setze einen 20 Sekunden Timer (So lange brauchen meine Rollos bis diese oben sind)
endOn
On Rules#Timer=1 do         // Wenn die Timer Regel von Timer 1 zutrifft bzw. der Timer abgelaufen ist
gpio,5,0         // GPIO 5 ausschalten (Relay Rollo runter)
gpio,12,0         // GPIO 12 ausschalten (Relay Rollo hoch)
endOn




3. Jeweiligen Schalter in FHEM einbinden
Dies geschieht wie mit fast allen Dingen relativ einfach über Autocreate.
Bevor diese aber rein laufen, müsst ihr euch die Bridge (define espBridge ESPEasy bridge 8383) anlegen.
Ich persönlich aktiviere als Attribut zur Bridge gerne attr espBridge combineDevices 1, wegen der Übersichtlichkeit.
Bei mir sieht ein Gerät dann z.B. so aus:
# Arbeitszimmer Rollo
define ESPEasy_az_rollo ESPEasy 192.168.20.30 80 espBridge az_rollo
attr ESPEasy_az_rollo IODev espBridge
attr ESPEasy_az_rollo Interval 300
attr ESPEasy_az_rollo group ESPEasy Device
attr ESPEasy_az_rollo presenceCheck 1
attr ESPEasy_az_rollo readingSwitchText 1
attr ESPEasy_az_rollo room ESPEasy
attr ESPEasy_az_rollo setState 3



4. Modul 44_ROLLO für diese Schalter einrichten und steuern
Dieses Modul müsst ihr euch manuell herunterladen bzw. installieren.
Am besten einfach dem Wiki folgen....

Am besten einfach dem Wiki folgen.... ;)
https://wiki.fhem.de/wiki/ROLLO

Danach können wir uns ein Gerät anlegen um z.B. das o.g. Rollo zu steuern (define az_rollo ROLLO).
In diesem Device müsst ihr die GPIOs hinterlegen zum auf und ab fahren (Update 21.01.2019 - Siehe Beitrag 2) und natürlich die Zeiten,
die eure Rolläden beim hoch/runter fahren benötigen. Das ganze sieht dann bei mir z.B. so aus:
define az_rollo ROLLO
attr az_rollo autoStop 0
attr az_rollo commandDown set ESPEasy_az_rollo gpio 5 1
attr az_rollo commandStopDown set ESPEasy_az_rollo gpio 5 0
attr az_rollo commandStopUp set ESPEasy_az_rollo gpio 12 0
attr az_rollo commandUp set ESPEasy_az_rollo gpio 12 1
attr az_rollo devStateIcon open:fts_shutter_10:closed closed:fts_shutter_100:open half:fts_shutter_50:closed drive-up:fts_shutter_up@red:stop drive-down:fts_shutter_down@red:stop pct-100:fts_shutter_100:open pct-90:fts_shutter_80:closed pct-80:fts_shutter_80:closed pct-70:fts_shutter_70:closed pct-60:fts_shutter_60:closed pct-50:fts_shutter_50:closed pct-40:fts_shutter_40:open pct-30:fts_shutter_30:open pct-20:fts_shutter_20:open pct-10:fts_shutter_10:open pct-0:fts_shutter_10:closed
attr az_rollo excessBottom 2
attr az_rollo excessTop 4
attr az_rollo resetTime 0
attr az_rollo room ESPEasy
attr az_rollo secondsDown 16,44
attr az_rollo secondsUp 18
attr az_rollo switchTime 1
attr az_rollo type normal
attr az_rollo webCmd open:closed:half:stop:pct


Damit das Modul aber auch den physikalischen Tastendruck mitbekommen kann, müssen wir die Events abfangen und dem Modul übermitteln.
Die umgeflashten Sonoff-Schalter senden brav alles an FHEM.

Original aus dem 44_ROLLO.pm Wiki https://wiki.fhem.de/wiki/ROLLO#Zusammenspiel_mit_externem_Taster
In meinen Augen besser, da alle Rollos auf einmal mitbekommen was passiert: https://forum.fhem.de/index.php/topic,89136.msg895247.html#msg895247
!- (Natürlich müssen die Suchkriterien (ESPEasy_.*_rollo:strom_output_(runter|hoch):.*), ggf. die Kürzung von ESPEasy_ und das Value des Schalters (strom_output_hoch:) auf eure angepasst werden) -!


define rollos_manuell notify ESPEasy_.*_rollo:strom_output_(runter|hoch):.* {\\
my $richtung = '';;\
my $zustand = '';;\
my $geraet = $NAME;;\
$geraet =~ s/^ESPEasy_//;;\
\
if ($EVTPART0 eq "strom_output_hoch:") {\
  $richtung = "drive-up";;\
  $zustand = "open";;\
}\
if ($EVTPART0 eq "strom_output_runter:") {\
  $richtung = "drive-down";;\
  $zustand = "closed";;\
}\
\
if ($EVTPART1 eq "on" && Value("$geraet") ne "$richtung") {\
  fhem("set $geraet extern $zustand");;\
}\
elsif ($EVTPART1 eq "off" && Value("$geraet") eq "$richtung") {\
  fhem("set $geraet extern stop");;\
}\
}



Am Ende sollte es möglich sein mit den Tastern aber auch über das Modul, die Rolladen zu schalten.
Ich bin leider noch nicht mit allem fertig und Screenshots kommen auch noch.

Bitte sagt mir bescheid, falls etwas, in euren Augen fehlt oder noch Fragen offen sind.
Danke und viel Spaß beim basteln :)

MfG,
Kai

87insane

#1
Update vom 25.01.2019:

- Anpassung des Codes: notify für Übermittlung externer Taster -> FHEM -> ROLLO Modul. Es werden nun alle Rollos mit nur einem notify gesteuert. Anstelle von zweien pro Rollo.


Update vom 21.01.2019:

- Zu Punk 2) Rules wegen ESPeasy Firmware Anpassungen geändert. Hier muss nur ein zusätzliches "else" rein, sonst läuft das leider nicht mehr.
Bis ESPeasy bis 10/18 (alt):
on rollo_hoch#taste_hoch do
if [rollo_hoch#strom_output_hoch]=1
  gpio,12,0
else
if [rollo_runter#strom_output_runter]=1
  gpio,5,0
  delay 2000
if [rollo_runter#strom_output_runter]=0
  gpio,12,1
endif
endon


Ab ESPeasy 11/18 (neu):
on rollo_hoch#taste_hoch do
if [rollo_hoch#strom_output_hoch]=1
  gpio,12,0
else
if [rollo_runter#strom_output_runter]=1
  gpio,5,0
  delay 2000
else
if [rollo_runter#strom_output_runter]=0
  gpio,12,1
endif
endon


- Zu Punkt 4) Steuerung aus FHEM nicht mehr mit GPIOs sondern mit EVENTS. Dies hat den Vorteil, dass im Sonoff Schalter die entsprechende Rule für den jeweiligen Taster geprüft wird. So spart man sich das abfangen von "gegnerischen" Tasten. Mit den Rules sind die Relays Software-Seitig gegeneinander verriegelt.
attr wz_rollo rl_commandDown set ESPEasy_wz_rollo event taste_runter#taste_runter
attr wz_rollo rl_commandStopDown set ESPEasy_wz_rollo event taste_runter#taste_runter
attr wz_rollo rl_commandStopUp set ESPEasy_wz_rollo event taste_hoch#taste_hoch
attr wz_rollo rl_commandUp set ESPEasy_wz_rollo event taste_hoch#taste_hoch



Frank_Huber

Uuuuhhhh, das birgt die Gefahr dass evtl mal warum auch immer beide Relais schalten und der Motor durchbrennt weil beide Richtungenbestromt werden.
in deinem Setup würde es reichen beide Taster zu drücken.

Besser:
Releis 1 Strom an/aus
Relais 2: auf/ab

also:
Rollo hoch: beide Relais
Rollo runter: Relais 1

87insane

#3
Verstehe nicht wie das sein kann....

Aktuell toggelt er hin und her sobald der andere Taster gedrückt wird.
Schalter A an
Schalter B aus

Druck auf B und der zustand invertiert sich.

Hab aber gerade so oder so einen Test drin, der dafür sorgt das ich einen delay zwischen den beiden habe.
Bei meinen GIRAS zb sind es zwei Sekunden in denen man dann nichts drücken kann.

Soll also am Ende so sein, dass ich einen Schalter nutze, z.B. A und wenn ich dann auf B drücke, bleibt das Rollo stehen.
Nach z.B. zwei Sekunden hat man dann auch erst wieder Zugriff auf die Taster bzw. können diese erst wieder betätigt werden.
Beide gleichzeitig drücken geht aber definitiv nicht. Man könnte aktuell höchstens xxxx mal hin und her toggeln und den Motor
in die Luft jagen....


PS: Dein Beispiel verstehe ich leider nicht so ganz. Versuche mir das gerade vor zustellen. Dein Besser + Also. Kann man das umschreiben?

Frank_Huber

OK, das mit den Tastern gegenseitig sperren habe ich dann übersehen.
aber lass alleine mal ein Relais kleben oder den ESP spinnen.

Ich meine so eine Schaltung: http://forum.creationx.de/index.php?attachment/440-rollomotor-jpg/
Hier kann es nie passieren dass beide Fahrtrichtungen bestromt werden.

87insane

Hmmm... Wüsste nicht wie ich es hiermit realisieren könnte. An das verkleben von einem der Relays habe ich nicht gedacht.
https://opencircuit.shop/ContentImage/119117/crop/900-600/Sonoff-T1-EU-2-kanaals-WiFi-RF-Glazen-Touchpanel-met-led.jpg

In "deiner" Schaltung müsste ich ja immer z.B. A drücken und das Ding läuft los. Zum Richtungswechsel dann B drücken, richtig verstanden?

Frank_Huber

Ja, da müsste dann noch ein 230V Wechsler Relais dahinter. kann zur Not ja auch beim Rollo sein.

Die Änderung würdest in den Rules machen oder im notify/doif.
hoch: nur gpio5
runter: gpio 5 und 12.

Ich stand 2016 vor der gleichen Frage, allerdings mit hardwired Relais.
mir wurde dringend empfohlen das beidseitige bestromen zu verhindern.


87insane

Mal ganz doof gefragt... Wie machen es denn die normalen (bereits fertigen) z.B. meine Gira Schalter?
Die sind doch auch in beide Richtungen bestromt, oder ist es da anders?

Frank_Huber

gibt mehrere Varianten der Verdrahtung.
aber die sind IMHO immer hardware seitig verriegelt.

carl-christoph

DIe Sonoffs erobern die Rolladensteuerung...
Ich bin auch gerade dabei meine Rolladen mittels eines Sonoff Dual steuerbar zu machen.
Ich nutze für Tests bisher die Tasmota-FW mit gegenseitiger Sperrung der Relais in der FW (setOption 14).
Ansteuerung aus FHEM mittels ROLLO-Modul klappt bisher sehr zuverlässig. Sperrzeit für Richtungswechsel, Ablaufzeit, etc. mache ich bisher ausschließlich über FHEM, da keine Steuerung direkt über den Sonoff vorgesehen ist. Dementsprechend auch keine Berechnung in fhem, wenn manuell gefahren würde.

Es gibt einen Fork der Tasmota-FW, der eine erweiterte Unterstützung für Rolläden mitbringt. Habe ich mir noch nicht weiter angeschaut, inwieweit es sinnvoll ist, Logik aus FHEM in den einzelnen Rolladentreiber auszulagern.

Bei Standard-Schaltern/Tastern ohne Komfortfunktionen (Zeitschaltuhr, etc) ist ja durch den mechanischen Aufbau verhindert, dass beide Richtungen gleichzeitig bedient werden können. Ich habe an diversen Stellen gelesen, dass in Deutschland/in der EU nicht zulässig ist, dass die Sperrfunktion alleine in der Software implementiert ist. Besser sind wohl eine H-Brücke (zwei Wechsler-Relais) oder die Kombination von einem Wechsler-Relais (Richtungswahl) und einem Schließer-Relais.
In wieweit das tatsächlich immer so umgesetzt wird kann ich nicht sagen, zumal mir vor einigen Jahren mal eine günstige elektronische Steuereinheit der Fa. Jarolift direkt nach dem Einbau Spannung auf beide Ausgänge gelegt hat. Habe damals blöderweise nicht aufgeschraubt und nachgeschaut, wie die Schaltung umgesetzt ist. Könnte natürlich auch ein Kurzschluss auf der Platine gewesen sein.

Ich wollte mir nun für meine Lösung preiswerte Trennrelais (8€) dazukaufen. Diese verhindern dann, zwischen Relais-Ausgänge des Sonoff und Rohrmotor geschaltet, dass soetwas passiert. Und für den Preis fange ich nicht an, auf einem Sonoff die Relais zu tauschen oder selber Boards zu bauen. Da verdrahte ich lieber bequem das fertige kleine Trennrelais zusätlich im Rolladenkasten.

Für mich hätten sie mit dem Sonoff Dual noch einen weiteren Vorteil: Ich möchte eigentlich keine Bedienschalter direkt an den Fenstern installieren, wie es oft standardmäßig gemacht wird. Ich finde es viel sinnvoller, vorallem in Räumen mit mehreren Fenstern, wenn die Rolläden von einer zentralen Stelle aus (Lichtschalter) oder über mobile Geräte gesteuert werden können (so dies denn nicht durch eine Automatik geschieht). Der alte Impuls, zu den jeweiligen Fenstern zu laufen, um den Rolladen herunterzulassen zerstört für mich zum größten Teil wieder den Komfortgewinn, den ich mir durch die Technik verschafft habe. Andererseits schließen sich die verschiedenen Möglichkeiten ja auch nicht aus. Aber ich fange halt lieber an, eine Fernbedienung oder mein Handy zu suchen, wenn ich das Rollo öffnen möchte ;).
Mit dem Trennrelais kann ich dann an den zweiten Steuereingang trotzdem einen billigen mechanischen Taster zusätzlich montieren, der zwar nicht in die Steuerung integriert ist, dafür dann aber auch autark funktioniert, wenn der Sonoff mal stirbt oder kaputt konfiguriert ist. Der Schalter wird dementsprechend auch nicht UP oder AP in die Massivbauwand gesetzt, sondern, für den Notfall immernoch gut erreichbar aber sehr unauffällig, seitlich in den Rolladenkasten. Natürlich kann man streiten, ob das wirklich ein Szenario ist, dass man bedenken muss, und wenn ja, ob man dann nicht gleich richtige Bedienschalter setzen kann. Ich lege halt, wie schon geschrieben, keinen Wert auf die normale Steuerung am Fenster, für mich zählt allein die Zusatzfunktionalität Steuerung bei Ausfall der Elektronik.

Ich plane jedenfalls, mir in den nächsten Tagen/Wochen mal alles Nötige für einen Testaufbau zu besorgen und könnte dann berichten. Ich war sehr erleichtert, als ich auf die einfache Lösung mit den Trennrelais gestoßen bin, um das ganze ordentlich und einigermaßen regelkonform umzusetzen und hoffe nun, dass das auch so funktioniert.

Gruß
cc

Ralf9

Zitatgibt mehrere Varianten der Verdrahtung.
aber die sind IMHO immer hardware seitig verriegelt.

Ich bevorzuge diese Variante:
https://wiki.fhem.de/w/images/9/99/Relais-Schaltung_FBH-Mischer_attr_einzel.jpg
damit ist die Relaisansteuerung einfacher.

Dieses Prinzip wird auch beim Jung Schalter verwendet.
https://downloads.jung.de/public/de/pdf/datenblaetter/de_509vu.pdf

Gruß Ralf
FHEM auf Cubietruck mit Igor-Image, SSD und  hmland + HM-CFG-USB-2,  HMUARTLGW Lan,   HM-LC-Bl1PBU-FM, HM-CC-RT-DN, HM-SEC-SC-2, HM-MOD-Re-8, HM-MOD-Em-8
HM-Wired:  HMW_IO_12_FM, HMW_Sen_SC_12_DR, Selbstbau IO-Module HBW_IO_SW
Maple-SIGNALduino, WH3080,  Hideki, Id 7

87insane

Hey - Hab oben mal eine bessere Variante gepostet. Diese ist in meinen Augen die bessere SW Lösung. Allerdings verhindert diese natürlich nicht das Kleben von Relays.
(Neue Variante = Variante 1 bei den Sets und die alte ist Variante 2. Set 3 bleibt gleich. Dieses nutze ich als einen NOTAUS wenn mal alle Stricke reißen FHEM Seitig.)

Tedious

@TE: Du wolltest noch Bilder folgen lassen. Kannst Du mir aufzeigen wo genau die Rules definiert werden? Liebäugele auch mit der Lösung...
FHEM auf Proxmox-VM (Intel NUC) mit 4xMapleCUN (433,3x868) und Jeelink, HUE, MiLight, Max!, SonOff, Zigbee, Alexa, uvm...

87insane

Hi,

welche Infos benötigst du genau? Da in der ESP FW gerade vieles umgestellt wird, wollte ich da nicht etwas "falsches" posten.
Für den Zweck reicht aber auch die, die ich genommen hatte... Ist vom 11.07.1018.

Die Rules definiert man im Webfrontend des Schalters. Hierbei hatte ich die Rules so angepasst, dass die Relays Software-Seitig gegeneinander verriegeln. Ansonsten könnte man im schlimmsten Fall zwei Richtungen ansteuern und den Motor beschädigen.

Tedious

Danke für die Infos. Denn werd ich mal einen zum testen bestellen ;)
FHEM auf Proxmox-VM (Intel NUC) mit 4xMapleCUN (433,3x868) und Jeelink, HUE, MiLight, Max!, SonOff, Zigbee, Alexa, uvm...