Warum? Einsatzgebiet Garagentor. Mein elektr. Garagentor (Hörmann) hat einen (Niedervolt-)Kontakt; wenn man ihn betätigt, öffnet/Schließt das Tor (oder hält an). Nervig, denn man weiss ja nicht, ob das Tor offen oder zu ist (ausser man benutzt Augen, das funktioniert aber manchmal nicht (Wand)).
Die Idee ist jetzt folgende: Der ESP-Controller im Sonoff hat ja genug GPIO noch frei (nur 3 besetzt durch Schalter, LED und Relais). An einem der GPIOs (ich nehm die 14, weil ja eh schon die Stifte durch das Flashen eingelötet sind und der 5. Stift GPIO 14 ist) und Masse schalte ich einen Reed-Kontakt, damit ich weiß, ob das Tor offen ist.
Das größte Problem ist das Relais. Der hat 4 Anschlüsse: 2 Niedervoltzum Ansteuern des Ralais und zwei Kontakte, die die 230V Phase durchschalten (der 230V Nulleiter ist immer durchgeschaltet).
Das Relais soll so umgebaut werden, dass gar kein Strom aufliegt, sondern der Relaiskontakt die beiden Ausgänge einfach durchschaltet. Wenn dann noch die Software so eingestellt ist, dass der Kontakt nach -sagen wir mal- 1 Sekunden wieder losgelassen wird, dann kann ich damit die Garage öffnen/schließen.
Zusätzlich habe ich die Software noch so gebaut, dass der Kontakt nach den Betätigen einen gewisse Zeit (20 Sek) nicht mehr betätigt werden kann. Somit ist sichergestellt, dass das Tor nicht stehenbleibt, wenn man versehentlich 2 Mal hintereinander den Schalter betätigt…
Ach ja, gesteuert wird das alles natürlich mit FHEM. Klar, dass man eine eigene Firmware flashen muss, mit der Sonoff-Chinesencloud kann man das alles natürlich nicht machen, geschweige denn eigene GPIOs nutzen. Ich nehm natürlich EasyESP, kenn ja nichts anderes.
Ich habe festgestellt, dass man mit einem langen, feinen Schnitt zwischen dem Relais und dem fetten Widerstand (der die mit Strom Elektronik versorgt) es schaffen kann, das Relais komplett vom Netzstrom zu entkoppeln. ACHTUNG: Es sind auf beiden Seiten Leiterbahnen! Die auf der Oberseite ist sogar breiter als die unten! Das heisst: Wenn man unten denkt, die Bahn ist durchtrennt, ist sie es oben noch längst nicht. VORSICHT: Immer durchmessen, ob Strom fließen könnte. Netzspannung ist kein Spass! Das soll auf jeden Fall nur ein Elektriker machen! Sonst Finger weg!
Beim 1. Versuch habe ich eine feinen Säge genommen. Dabei habe ich allerdings den fetten Widerstand verletzt und das Ding war Schrott! Beim 2. Versuch habe ich einen Dremel mit feinem Trennschleifer genommen und das hat wunderbar geklappt.
Dann muss man noch eine feine Brücke löten (siehe Fotos) und man hat einen wunderbaren Kontakt durch das Relais (wenn es angezogen ist) an den Ausgängen.
Ergebnisse vor Anschluss immer durchmessen! Wenn keine Ahnung: Finger weg!!!
Den Sonoff mit Stiften bestücken, flashen und EasyESP draufspielen sonoff:.
Meine Konfiguration (Rules (erst einschalten!)):
Schalter wird für 1 Sekunde geschalten (ändern mit z.B. timerSet,1,0.5 für 1/2 Sek)
Schalter kann dann 15 Sek nicht mehr betätigt werden (ändern mit timerSet,2,15)
on PUMP#Key do Event startdoor endon On startdoor do if [Dummy#starttimer]=0 TaskValueSet 4,1,1// setze Sperre gpio,12,1 //start doorswitch timerSet,1,1 //timer 1 set for 1 sec timerSet,2,15 // Schalte Sperre nach x Sek wieder aus endif endon On Rules#Timer=1 do gpio,12,0 //stop doorswitch endOn // schalte Sperrung wieder aus On Rules#Timer=2 do TaskValueSet 4,1,0 endOn on PUMP#Relay=1 do //Event startdoor //gpio,12,1 // timerSet,1,1 //timer 1 set for 1 sec endon
FHEM: Dummyschalter namens Garagentor.
Notification: Garagentor:Move { GetHttpFile(„192.168.xxx.117“, „/control?cmd=event,startdoor“) } 1)
on PUMP#Key do
Event startdoor
endon
On startdoor do
if [Dummy#starttimer]=0
TaskValueSet 4,1,1// setze Sperre
gpio,12,1 //start doorswitch
timerSet,1,1 //timer 1 set for 1 sec
timerSet,2,15 // Schalte Sperre nach x Sek wieder aus
endif
endon
On Rules#Timer=1 do
gpio,12,0 //stop doorswitch
endOn
// schalte Sperrung wieder aus
On Rules#Timer=2 do
TaskValueSet 4,1,0
endOn
on PUMP#Relay=1 do
//Event startdoor
//gpio,12,1
// timerSet,1,1 //timer 1 set for 1 sec
endon
on Clock#Time=All,03:00 do
Reboot
endon
Das Dummy-Device muss #4 sein (weil das Skript darauf Bezug nimmt, sonst ändern: TaskValueSet 4,1,1 (4)