HomeKit Garagentor- und Drehtoröffner EPS8266 Arduino – Hörmann / Sommer Antriebe
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.
Liste Hörmann Antriebe
Garagentor
Model | Klemme | Beschreibung | Max Strom | PDF Seite | Externer Sender |
---|---|---|---|---|---|
ProMatic 2 | 21 | Impulseingang | 100mA | 13, 3 | HE1 |
20 | 0V | ||||
5 | 24V |
Model | Klemme | Beschreibung | Max Strom | PDF Seite | Externer Sender |
---|---|---|---|---|---|
ProMatic 3 | 21 | Impulseingang | ??? | 25 | HE3 |
20 | 0V | ||||
5 | 24V | ||||
23 | Teilöffnung |
Model | Klemme | Beschreibung | Max Strom | PDF Seite | Externer Sender |
---|---|---|---|---|---|
ProMatic 4 | 21 | Impulseingang | 350mA | 26 | ??? |
20 | 0V | ||||
5 | 24V | ||||
23 | Teilöffnung |
Model | Klemme | Beschreibung | Max Strom | PDF Seite | Externer Sender |
---|---|---|---|---|---|
ProMatic/ProMatic P | 21a | Impulseingang | 100mA | 16, 22 | |
20 | 0V | ||||
5 | 24V |
Model | Klemme | Beschreibung | Max Strom | PDF Seite | Externer Sender |
---|---|---|---|---|---|
RollMatic BiSecur | 21 | Impulseingang | ??? | 21 | HE3 |
23 | Teilöffnung | ||||
5 | 24V | ||||
20 | 0V |
Model | Klemme | Beschreibung | Max Strom | PDF Seite | Externer Sender |
---|---|---|---|---|---|
ProMaticSupra Matic E P | 21 | Impulseingang | 100mA | 17, 18, 30 | HE1 |
20 | 0V | ||||
5 | 24V |
Model | Klemme | Beschreibung | Max Strom | PDF Seite | Externer Sender |
---|---|---|---|---|---|
SupraMatic E P | 21 | Impulseingang | ??? | 18 | HE1 |
20 | 0V | ||||
5 | 24V |
Model | Klemme | Beschreibung | Max Strom | PDF Seite | Externer Sender |
---|---|---|---|---|---|
SupraMatic E2 | 21 | Impulseingang | ??? | 13, 33 | HE2, HE3 |
23 | Teilöffnung | ||||
5 | 24V | ||||
20 | 0V |
Model | Klemme | Beschreibung | Max Strom | PDF Seite | Externer Sender |
---|---|---|---|---|---|
SupraMatic T | 21 | Impulseingang | 250mA | 12, 47 | HE2, HE3 |
20 | 0V | ||||
5 | 24V | ||||
23 | Teilöffnung |
Model | Klemme | Beschreibung | Max Strom | PDF Seite | Externer Sender |
---|---|---|---|---|---|
SupraMatic H Serie1 A | 21 | Impulseingang | ??? | 23, 34 | HE1 |
20 | 0V | ||||
5 | 24V |
Model | Klemme | Beschreibung | Max Strom | PDF Seite | Externer Sender |
---|---|---|---|---|---|
SupraMatic H b | 21 | Impulseingang | ??? | 23, 34 | HE1 |
20 | 0V | ||||
5 | 24V |
Model | Klemme | Beschreibung | Max Strom | PDF Seite | Externer Sender |
---|---|---|---|---|---|
SupraMatic H Serie1 C | 21 | Impulseingang | 100mA | 29, 30, 42 | HE1, HE2 |
20 | 0V | ||||
5 | 24V |
Model | Klemme | Beschreibung | Max Strom | PDF Seite | Externer Sender |
---|---|---|---|---|---|
SupraMatic HT | 21 | Impulseingang | 250mA | 24 | HE3 |
20 | 0V | ||||
5 | 24V | ||||
23 | Teilöffnung |
Model | Klemme | Beschreibung | Max Strom | PDF Seite | Externer Sender |
---|---|---|---|---|---|
SupraMatic 2 (E, P, H) | 21 | Impulseingang | 250mA | 10, 33 | HE2, HE3 |
23 | Teilöffnung | ||||
5 | 24V | ||||
20 | 0V |
Model | Klemme | Beschreibung | Max Strom | PDF Seite | Externer Sender |
---|---|---|---|---|---|
SupraMatic 3 | 21 | Impulseingang | 250mA | 24 | HE3 |
20 | 0V | ||||
5 | 24V | ||||
23 | Teilöffnung |
Model | Klemme | Beschreibung | Max Strom | PDF Seite | Externer Sender |
---|---|---|---|---|---|
SupraMatic 4 | 21 | Impulseingang | 350mA | 27 | ESE |
23 | Teilöffnung | ||||
5 | 24V | ||||
20 | 0V |
Drehtor
Model | Klemme | Beschreibung | Max Strom | PDF Seite | Externer Sender |
---|---|---|---|---|---|
Drehtorantrieb DTA | 21 | Impulseingang | ??? | 26, 51 | |
23 | Gehtür | ||||
5 | 24V | ||||
20 | 0V |
Model | Klemme | Beschreibung | Max Strom | PDF Seite | Externer Sender |
---|---|---|---|---|---|
Portronic D 5000 | 21 | Impulseingang | ??? | 16, 34 | |
23 | Gehtür | ||||
5 | 24V | ||||
20 | 0V |
Model | Klemme | Beschreibung | Max Strom | PDF Seite | Externer Sender |
---|---|---|---|---|---|
RotaMatic 12 DIL-Schalter | 21 | Impulseingang | 100mA | 13, 25 | |
23 | Gehtür | ||||
5 | 24V | ||||
20 | 0V |
Model | Klemme | Beschreibung | Max Strom | PDF Seite | Externer Sender |
---|---|---|---|---|---|
RotaMatic II | 21 | Impulseingang | ??? | 21, 44 | |
23 | Gehtür | ||||
5 | 24V | ||||
20 | 0V |
Model | Klemme | Beschreibung | Max Strom | PDF Seite | Externer Sender |
---|---|---|---|---|---|
RotaMatic II BiSecur | 21 | Impulseingang | 100mA | 17, 46 | HE3 |
23 | Gehtür | ||||
5 | 24V | ||||
20 | 0V |
Model | Klemme | Beschreibung | Max Strom | PDF Seite | Externer Sender |
---|---|---|---|---|---|
RotaMatic 2 | 21 | Impulseingang | 250mA | 21 | HEI3 |
23 | Gehtür | ||||
5 | 24V | ||||
20 | 0V |
Model | Klemme | Beschreibung | Max Strom | PDF Seite | Externer Sender |
---|---|---|---|---|---|
RotaMatic P-PL | 21 | Impulseingang | 100mA | 13, 27 | |
23 | Gehtür | ||||
5 | 24V | ||||
20 | 0V |
Model | Klemme | Beschreibung | Max Strom | PDF Seite | Externer Sender |
---|---|---|---|---|---|
VersaMatic | 21 | Impulseingang | 250mA | 26 | HEI3 |
23 | Gehtür | ||||
5 | 24V | ||||
20 | 0V |
Liste Sommer Antriebe
Garagentor
Model | Klemme | Beschreibung | Max Strom | PDF Seite | Info |
---|---|---|---|---|---|
twist 200 E | 100mA | 41, 42 |
Model | Klemme | Beschreibung | Max Strom | PDF Seite | Info |
---|---|---|---|---|---|
duo rapido 650+ | 7 + 8 | Taster | 100mA | 23 | DIP-Schalter 2 ON |
10 | 0V | ||||
9 | 24V |
Model | Klemme | Beschreibung | Max Strom | PDF Seite | Info |
---|---|---|---|---|---|
duo vision / duo rapido | 7 + 8 | Taster | 100mA | 23 | DIP-Schalter 2 ON |
10 | 0V | ||||
9 | 24V |
Model | Klemme | Beschreibung | Max Strom | PDF Seite | Info |
---|---|---|---|---|---|
marathon SL | 2 + 3 | Taster Innen | 100mA | 22, 23 | |
4 + 5 | Taster Außen | ||||
10 | 24V | ||||
11 | 0V |
Model | Klemme | Beschreibung | Max Strom | PDF Seite | Info |
---|---|---|---|---|---|
marathon tiga SL | 2 + 3 | Taster Innen | 100mA | 20, 21 | |
4 + 5 | Taster Außen | ||||
10 | 24V | ||||
11 | 0V |
Model | Klemme | Beschreibung | Max Strom | PDF Seite | Info |
---|---|---|---|---|---|
marathon tiga SLX | 2 + 3 | Taster Innen | 100mA | 25, 26 | |
4 + 5 | Taster Außen | ||||
10 | 24V | ||||
11 | 0V |
Model | Klemme | Beschreibung | Max Strom | PDF Seite | Info |
---|---|---|---|---|---|
pro / pro+ | 100mA | 46, 47 |
Model | Klemme | Beschreibung | Max Strom | PDF Seite | Info |
---|---|---|---|---|---|
sprint evolution | 7 + 8 | Taster | 100mA | 19 | DIP-Schalter 2 ON |
10 | 0V | ||||
9 | 24V |
Drehtor
Model | Klemme | Beschreibung | Max Strom | PDF Seite | Info |
---|---|---|---|---|---|
twist 200 E | 13 + 14 | Impulseingang | 1,25A | 26, 27, 28 | |
15 + 16 | Gehtür | ||||
10 | 24V | ||||
9 | 0V |
Model | Klemme | Beschreibung | Max Strom | PDF Seite | Info |
---|---|---|---|---|---|
twist 200 E L | 13 + 14 | Impulseingang | 1,25A | 30, 31 | |
15 + 16 | Gehtür | ||||
10 | 24V | ||||
9 | 0V |
Model | Klemme | Beschreibung | Max Strom | PDF Seite | Info |
---|---|---|---|---|---|
twist 350 / twist 350 rapido | 21 + 22 | Impulseingang | 100mA | 31, 34 | |
23 + 24 | Gehtür | ||||
35 | 24V | ||||
36 | 0V |
Model | Klemme | Beschreibung | Max Strom | PDF Seite | Info |
---|---|---|---|---|---|
twist UG / twist UG+ | 21 + 22 | Impulseingang | 100mA | 31, 33 | |
23 + 24 | Gehtür | ||||
35 | 24V | ||||
36 | 0V |
Die Platinen
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.
Hörman Platine
Sommer Platine
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.
Der Programmcode
Der Code kann hier runtergeladen werden.
Datei xx_homekit_AP.ino
#ifndef APSSID
#define APSSID "AP_HomeKit_GSwitch"
#define APPSK "ESP-HomeKit24"
#endif
/* hostname http://homekit.local */
const char *myHostname = "homekit";
IPAddress apIP(192, 168, 100, 1);
IPAddress netMsk(255, 255, 255, 0);
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
// 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.
C:\Users\EuerName\Documents\Arduino\libraries\HomeKit-ESP8266\src\homekit
In der Datei types.h und characteristics.h siehe auch das Video.
homekit_characteristic_t nameS1 = HOMEKIT_CHARACTERISTIC_(NAME, "Garagentor");
homekit_characteristic_t nameS2 = HOMEKIT_CHARACTERISTIC_(NAME, "Garagenteilöffnung");
homekit_accessory_t *accessories[] = {
HOMEKIT_ACCESSORY(.id = 1, .category = homekit_accessory_category_garage, .services = (homekit_service_t*[]) {
HOMEKIT_SERVICE(ACCESSORY_INFORMATION, .characteristics = (homekit_characteristic_t*[]) {
HOMEKIT_CHARACTERISTIC(NAME, "Garagentor"),
HOMEKIT_CHARACTERISTIC(MANUFACTURER, "arduino-projekte.info"),
HOMEKIT_CHARACTERISTIC(SERIAL_NUMBER, "SN081523"),
HOMEKIT_CHARACTERISTIC(MODEL, "ESP8266 D1 Mini"),
HOMEKIT_CHARACTERISTIC(FIRMWARE_REVISION, "1.0"),
HOMEKIT_CHARACTERISTIC(IDENTIFY, my_accessory_identify),
NULL
}),
homekit_server_config_t config = {
.accessories = accessories,
.password = "111-11-111"
};
Hinweis:
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.
homekit_characteristic_t nameS1 = HOMEKIT_CHARACTERISTIC_(NAME, "Garagentor");
homekit_characteristic_t nameS2 = HOMEKIT_CHARACTERISTIC_(NAME, "Garagenteilöffnung");
HOMEKIT_ACCESSORY(.id = 2, .category = homekit_accessory_category_garage, .services = (homekit_service_t*[]) {
HOMEKIT_SERVICE(ACCESSORY_INFORMATION, .characteristics = (homekit_characteristic_t*[]) {
HOMEKIT_CHARACTERISTIC(NAME, "Garagenteilöffnung"),
HOMEKIT_CHARACTERISTIC(MANUFACTURER, "arduino-projekte.info"),
HOMEKIT_CHARACTERISTIC(SERIAL_NUMBER, "SN081523"),
HOMEKIT_CHARACTERISTIC(MODEL, "ESP8266 D1 Mini"),
HOMEKIT_CHARACTERISTIC(FIRMWARE_REVISION, "1.0"),
HOMEKIT_CHARACTERISTIC(IDENTIFY, my_accessory_identify),
NULL
}),