HomeKit Garagentor- und Drehtoröffner EPS8266 Arduino - Hörmann / Sommer Antriebe
37 Kommentare
In diesem Blogbeitrag geht es um ein HomeKit Garagentoröffner, gebaut mit einem Wemos D1 mini, Wemos D1 mini pro oder auch jedem anderen ESP8266. Sicher kann man sich solche Sachen einfach kaufen, aber das macht ja kein Spaß. Deswegen möchte ich euch an diesem Projekt teilhaben lassen.
Ziel ist es den ESP8266 mit dem HomeKit zu verbinden und steuern zu können. Das hört sich erst mal sehr kompliziert an, ist es aber nicht. Den es haben sich schon andere über das HomeKit Thema Gedanken gemacht. Aus diesem Grund gibt es hier schon fertige Librarys die wir hier nutzen können.
Der Aufbau
Wie können wir den ESP8266 dazu bringen das Garagentor zu öffnen und zu schließen? Hier haben die Hersteller der Antriebe, in dem Fall Hörmann und Sommer, ein Anschluss auf Ihren Platinen für externe Funksender (Hörmann) oder Schlüsseltaster (Sommer). Diesen können wir für unseren ESP8266 benutzen. (Sicher gibt es das auch für andere Antriebshersteller, habe ich aber nur für die beiden rausgesucht.)
Bei Welchem Antrieb welche Klemme benutzt werden kann, könnt Ihr in der List nachsehen.
Die Klemmenbezeichnung auf dern Platinen stimmen mit dem aktuellen Modellen überein, bei älteren Modellen kann es zu Abweichungen kommen. Daher bitte in die Liste gucken oder selber recherchieren. Ich habe die Angaben aus den Handbücher rausgesucht, übernehme aber keine Haftung dafür.
Hörmann
Sommer
Liste Hörmann Antriebe
Prinzipiell kann man sagen überall wo die Externen Funksender HE1, HE2, HE3, HEI1, HEI2 und HEI3 angeschlossen werden können, kann auch meine Platine angeschlossen werden.
Es gibt hier einmal die Version 1 mit den Bauteilen neben dem ESP8266 und die Version 2 mit den Bauteilen unter dem ESP8266.
Mit der Platine werden die entsprechenden Schalter via Optokoppler geschalten. Das hat den Vorteil das hier ein galvanische Trennung vorliegt. Sprich die beiden Stromkreise ESP8266 und der Schaltkontakt haben keine Verbindung. Sicher könnte man das auch über eine Transistorschaltung realisieren.
Version 1: 70,3mm x 50,3mm x 1,5mm Version 2: 48,2mm x 50,3mm x 1,5mm Stromverbrauch: ca. 40mA
Die 24 Volt von der Antriebssteuerung müss auf 5 Volt runtergeregelt werden. Dafür habe ich paar Bauteile rausgesucht, die dafür verwendet werdenkönnen.
Hier wird die Webansicht definiert und in der Datei handleHttp.ino ausgeführt.
server.on("/", handleRoot);
server.on("/reset", handleReset);
server.on("/reset_do", handleResetDo);
server.on("/wifi", handleWifi);
server.on("/wifisave", handleWifiSave);
server.on("/generate_204", handleRoot); //Android captive portal. Maybe not needed. Might be handled by notFound handler.
server.on("/fwlink", handleRoot); //Microsoft captive portal. Maybe not needed. Might be handled by notFound handler.
server.onNotFound(handleNotFound);
server.begin(); // Web server start
Definition der Schaltanweisung für das HomeKit.
// Diese Funktion wird aufgerufen, wenn der Schalter in HomeKit betätigt wird
void switch_S1_setter(const homekit_value_t value) {
digitalWrite(PIN_SWITCH_S1, HIGH);
delay(1000);
digitalWrite(PIN_SWITCH_S1, LOW);
}
void switch_S2_setter(const homekit_value_t value) {
digitalWrite(PIN_SWITCH_S2, HIGH);
delay(1000);
digitalWrite(PIN_SWITCH_S2, LOW);
}
void my_homekit_setup() {
pinMode(PIN_SWITCH_S1, OUTPUT);
digitalWrite(PIN_SWITCH_S1, LOW);
switch_S1.setter = switch_S1_setter;
pinMode(PIN_SWITCH_S2, OUTPUT);
digitalWrite(PIN_SWITCH_S2, LOW);
switch_S2.setter = switch_S2_setter;
arduino_homekit_setup(&config);
}
Datei my_accessory.c
Definition was im Homekit als Name für das Gerät angezeigt werden soll und was es ist. Zum Beispiel ein Schalter oder ein Sensor usw. Was es da für Möglichkeiten gibt findet Ihr in der Library.
Je nach Modell kann es sein das der Access Point nicht gleich startet, hier einfach das Modul nochmal aus und einstecken.
Update: vom 17.08.2021
Mit dem letzten IOS Update funktioniert das Garagenprogramm nicht mehr. Der Grund ist hier der lange Name in der my_accessory.c Datei "Garagentorteilöffnung" dieser muss gekürzt werden, dann geht es auch wieder. Scheinbar gibt es eine Begrenzung der Zeichen für die HomeKit Namen.
du braucht die Basisplatine für Hörmann und dann den D1 mini pro egal welche Version auch der Normale D1 Mini funktioniert.
Gruß Tobias
Hallo, sehr interessantes Projekt, ich würde den Garagentoröffner auch gerne nachbauen, kenne mich jedoch sehr wenig mit der Thematik aus. Brauche ich noch mehr als die 3 Platinen, für meinen Hörmann Rollmatic? Auf den Bilder sieht es so aus, als würde man sich entscheiden müssen, ob man auf dem „HomeKit Garagen- und Hoftüröffner für ESP8266“ nur eine der beiden Platinen montiert. Also entweder dem D1 Mini pro v1.1.0 oder dem Wemos. Brauche ich nur eine von beiden, oder muss man beide verbauen?
VG Matthias
Hallo Andy,
dir geht es darum das der Button nicht aktiv bleibt wenn du schaltest. Das hatte ich extra so gemacht, da am Tor keine Sensoren sind die bestätigen ob das Tor offen oder geschlossen ist. Wenn du über das Homekit das Tor auf machst und mit dem Sensor wieder zu merkt das Homekit das nicht. Man kann das natürlich auch so umsetzten wie du das willst. Schick mir mal eine Mail dann gucke ich das ich das umprogrammiere.
Gruß Tobias
Hallo nochmal,
danke, es funktioniert genau so wie beschrieben. Aber für mein Tor dennoch nicht brauchbar. Es ist ja so, das wenn ich Taster1 betätige , geht der Ausgang1 kurz HIGH, dann LOW. Der Button in Homekit wird als aktiv angezeigt. Damit er inaktiv wird, muss ich diesen Taster1 nochmal drücken. Bei Taster2 ist es ganz genauso.
Ich brauche aber diese Funktion: Es reicht ein Button in Homekit, welcher aktiv ist (Tor auf) oder inaktiv (Tor zu) und zwei Relaisausgänge. Ich drücke den Button in Home, der Ausgang1 geht kurz auf HIGH, dann wieder LOW und der Button in Homekit muss “aktiv (Tor auf)” anzeigen. Dann drücke ich den Button in Home noch einmal und Ausgang2 geht kurz auf HIGH, dann wieder LOW. Der Button muss jetzt “inaktiv (Tor zu)” anzeigen.
Wenn ich es könnte, würde ich es programmieren, aber leider erschließt sich mir das nicht. Bin schon etwas älter und mit "richtiger"🙃 Elektronik aufgewachsen. Nur damit ist eine Bedienung via Homekit schlicht nicht möglich.
Hast du dazu eine Idee, oder kannst mir helfen? Vielleicht kommt ja nochmal jemand, und braucht genau diese Funktion auch? Ich kann nur freundlich bitten, und Feedback geben, ob und wie es dann funktioniert.
Gruß, Andy
Hallo Andy, ja du kannst hier
digitalWrite(PIN_SWITCH_S1, HIGH); delay(1000); digitalWrite(PIN_SWITCH_S1, LOW); Einfach das Delay 1000 auf 250 setzten. Den Namen änderst du hier
homekit_characteristic_t nameS1 = HOMEKIT_CHARACTERISTIC_(NAME, "<b>Garagentor</b>"); homekit_characteristic_t nameS2 = HOMEKIT_CHARACTERISTIC_(NAME, "<b>Garagenteilöffnung</b>"); Und noch etwas weiter unten auf der Seite. Dann sollte es funktionieren.
37 Kommentare
Hallo Matthias,
du braucht die Basisplatine für Hörmann und dann den D1 mini pro egal welche Version auch der Normale D1 Mini funktioniert.
Gruß
Tobias
Hallo,
sehr interessantes Projekt, ich würde den Garagentoröffner auch gerne nachbauen, kenne mich jedoch sehr wenig mit der Thematik aus. Brauche ich noch mehr als die 3 Platinen, für meinen Hörmann Rollmatic? Auf den Bilder sieht es so aus, als würde man sich entscheiden müssen, ob man auf dem „HomeKit Garagen- und Hoftüröffner für ESP8266“ nur eine der beiden Platinen montiert. Also entweder dem D1 Mini pro v1.1.0 oder dem Wemos. Brauche ich nur eine von beiden, oder muss man beide verbauen?
VG
Matthias
Hallo Andy,
dir geht es darum das der Button nicht aktiv bleibt wenn du schaltest. Das hatte ich extra so gemacht, da am Tor keine Sensoren sind die bestätigen ob das Tor offen oder geschlossen ist. Wenn du über das Homekit das Tor auf machst und mit dem Sensor wieder zu merkt das Homekit das nicht.
Man kann das natürlich auch so umsetzten wie du das willst. Schick mir mal eine Mail dann gucke ich das ich das umprogrammiere.
Gruß
Tobias
Hallo nochmal,
danke, es funktioniert genau so wie beschrieben. Aber für mein Tor dennoch nicht brauchbar.
Es ist ja so, das wenn ich Taster1 betätige , geht der Ausgang1 kurz HIGH, dann LOW. Der Button in Homekit wird als aktiv angezeigt. Damit er inaktiv wird, muss ich diesen Taster1 nochmal drücken.
Bei Taster2 ist es ganz genauso.
Ich brauche aber diese Funktion: Es reicht ein Button in Homekit, welcher aktiv ist (Tor auf) oder inaktiv (Tor zu) und zwei Relaisausgänge. Ich drücke den Button in Home, der Ausgang1 geht kurz auf HIGH, dann wieder LOW und der Button in Homekit muss “aktiv (Tor auf)” anzeigen. Dann drücke ich den Button in Home noch einmal und Ausgang2 geht kurz auf HIGH, dann wieder LOW. Der Button muss jetzt “inaktiv (Tor zu)” anzeigen.
Wenn ich es könnte, würde ich es programmieren, aber leider erschließt sich mir das nicht. Bin schon etwas älter und mit "richtiger"🙃 Elektronik aufgewachsen. Nur damit ist eine Bedienung via Homekit schlicht nicht möglich.
Hast du dazu eine Idee, oder kannst mir helfen? Vielleicht kommt ja nochmal jemand, und braucht genau diese Funktion auch? Ich kann nur freundlich bitten, und Feedback geben, ob und wie es dann funktioniert.
Gruß,
Andy
digitalWrite(PIN_SWITCH_S1, HIGH); delay(1000); digitalWrite(PIN_SWITCH_S1, LOW);Hallo Andy,
ja du kannst hier
Einfach das Delay 1000 auf 250 setzten.
Den Namen änderst du hier
homekit_characteristic_t nameS1 = HOMEKIT_CHARACTERISTIC_(NAME, "<b>Garagentor</b>"); homekit_characteristic_t nameS2 = HOMEKIT_CHARACTERISTIC_(NAME, "<b>Garagenteilöffnung</b>");
Und noch etwas weiter unten auf der Seite.
Dann sollte es funktionieren.
Gruß
Tobias