ESP8266 D1 Mini Relais als HomeKit Schalter ohne Bridge

von cooper.bin
veröffentlicht am 26.03.2024 aktualisiert am 26.03.2024

Wenn es bisher darum ging den ESP8266 D1 Mini in HomeKit einzubinden, bin ich immer den Weg über meine Homebridge auf dem Raspberry Pi gegangen. Mittlerweile gibt es aber nicht mehr nur eine Lösung das auch ohne zusätzliche Bridge zu erreichen. Wir werden heute einen D1 Mini ohne Bridge oder andere weitere Software oder Hardware direkt und nativ in HomeKit einbinden. Es handelt sich dabei um einen einfachen HomeKit Schalter der ein Relaismodul betätigt.

Zum Kapitel springen Schalter? Was genau?

Der Schalter, den wir in diesem Tutorial implementieren, kann in HomeKit verschiedene Formen annehmen:

  1. Schalter
  2. Lampe
  3. Ventilator

Diese drei Varianten kennen allesamt nur zwei Zustände: True und False. Bei einem Schalter mag das in erster Linie logisch klingen. Bei dem Ventilator und der Lampe eher nicht. Das liegt an der Art und Weise, wie wir den Schalter implementieren. Auch wenn es HomeKit Lampen gibt bei denen man die Farbe ändern oder die Helligkeit dimmen kann, so ist ein Schalter, der eine Lampe darstellt, ohne diese Funktionen. Das gleiche gilt für einen Ventilator. Bei diesem gibt es auch nur an oder aus. Es gibt eine Menge Zubehör für Homekit, unter anderem auch eben genannte Schalter und Lampen.

Zum Kapitel springen Funktionen

Neben der nativen Unterstützung verschiedender Aktoren ( Schalter, Lampe, Ventilator ) habe ich noch ein paar zusätzliche Funktionen eingebaut. Allgemein sind mit dem Programmcode also folgende Features enthalten:

  • direktes Schalten über die Home App oder über Siri
  • Optional: Auto-Toggler um den Schalter nach x Millisekunden wieder zurück in seinen Ausgangspunkt zu schalten
  • Optional: Schaltung per Hardware-Button; Man kann einen Hardware-Taster auslesen, der dann ebenfalls die Schaltaktion ausführt und den Status an HomeKit zurückmeldet

Zum Kapitel springen Hardware

Primär braucht man natürlich erstmal ein ESP8266 Board, auf dem die passende Software läuft. Hier mal einige Boards, die für dieses Tutorial in Frage kommen würden:

Grundätzlich lässt sich sagen, dass im Grunde genommen jedes ESP8266 basierte Board genutzt werden kann. In diesem Tutorial verwende ich einen ESP8266 D1 Mini.

Zu dem Microcontroller braucht man natürlich noch einen passenden Aktor. In meinem Fall ist der Aktor ein High-Trigger Relais. Da der ESP8266 direkt mit dem HomeKit Interface kommuniziert, weiß HomeKit im Grunde genommen gar nicht, was am Ende bei einem Schaltvorgang passiert. HomeKit übermittelt lediglich die Schaltbefehle oder nimmt neue Zustände entgegen.

Zum Kapitel springen Bibliotheken installieren

Bevor wir damit beginnen unseren eigenen HomeKit-Schalter einzubinden, muss eine Bibliothek in der Arduino IDE installiert werden. Das geht über den Bibliotheksverwalter. Ihr erreicht ihn über das Menü der Arduino IDE. Die Bibliothek heißt "HomeKit-ESP8266" ist von Mixiaoxiao auf Github und kann über die Suche des Bibliotheksverwalters gefunden werden.

Arduino IDE
    └───Werkzeuge
        └───Bibliotheken verwalten ...

Arduino IDE HomeKit-ESP8266 Mixiaoxiao Bibliothek ><

Zum Kapitel springen Die Verdrahtung

Solltest du eine eigene Logik ohne Relais implementieren brauchst du die Verdrahtung natürlich nicht durchführen. Anderenfalls kannst du dein Relais folgendermaßen verdrahten um direkt loszulegen:

ESP8266 D1 Mini Relais D8 Verdrahtung ><

KY-19 Relaismodul ESP8266 D1 Mini
S D8
+ 5V
- G

Zum Kapitel springen Programmcode

Um den ESP8266 in HomeKit einzubinden ist mehr als nur eine Datei notwendig. Insgesamt sind es drei Dateien. Diese Dateien habe ich in einem ZIP-Archiv vorberitet. Das Archiv könnt ihr direkt über makesmart downloaden:

Die Dateistruktur innerhalb des Archivs sieht wie folgt aus:

/esp8266-native-homekit-switch.zip
├── esp8266-native-homekit-switch.ino
├── my_accessory.c
└── wifi_info.h

Ihr müsst lediglich die Datei mit dem Namen esp8266-native-homekit-switch.ino mit einem Doppelklick öffnen. Die anderen zwei Dateien werden dann automatisch innerhalb der Arduino IDE geladen.

Zum Kapitel springen esp8266-native-homekit-switch.ino

Diese Datei enthhält die eigentliche Logik was beim Schalten über HomeKit passieren soll oder wann welcher Status an HomeKit zurückgemeldet werden soll.

void setup() {
  Serial.begin(115200);
  pinMode(switchPin, OUTPUT);
  wifi_connect();
  homekit_storage_reset();
  my_homekit_setup();
}

Das Relais wird über die folgende Zeile angesteuert:

void setPinState(bool currentSwitchState){
  digitalWrite(switchPin, currentSwitchState ? HIGH : LOW);
}

Diese Methode kann verwendet werden eine komplett eigene Logik zu implementieren. Diese Methode wird aufgerufen aufgerufen, wenn der Zustand über HomeKit geändert wird. Die Variable currentSwitchState enthält dabei immer den Target-State. Neben der Funktion benötigt ihr für eine grundlegene Basis nur die folgenden Zeilen:

byte switchPin              = 15;


// Optionale Parameter
bool autoToggle             = false; 
int autoToggleDelay         = 5000;

bool enableHardwareButton   = false;
byte hardwareButton         = 0;

Zum Kapitel springen wifi_info.h

Diese Datei enthält die Daten für die WLAN-Verbindung innerhalb eures Netzwerkes. Was ihr auf jeden Fall anpassen müsst, sind die WLAN Daten. Dazu benötigt ihr nur die folgenden beiden Zeilen in der Datei wifi_info.h:

const char *ssid      = "WIFI-SSID";
const char *password  = "WIFI-PSK";

Zum Kapitel springen my_accessory.c

Diese Datei enthält die Definitionen des Schalters für HomeKit. Solltet ihr genau diesen Schalter benötigen, müsst ihr diese Datei eigentlich nicht anpassen.

Zum Kapitel springen Programm hochladen

Nach diesen Informationen könnt ihr das Programm schon kompilieren und auf den ESP8266 laden. Die einzige Änderung die ihr machen solltet ist, die Taktrate des ESP8266 von 80MHz auf 160MHz zu stellen.

Die Taktrate kann einfach über die Einstellungen geändert werden. Geht dazu innerhalb der Arduino IDE auf den folgenden Pfad und passt die Taktrate dementsprechend an:

Arduino IDE
    └───Werkzeuge
        └───CPU Frequency: 160MHz

Zum Kapitel springen Pairing mit Apple Home

ESP8266 HomeKit Schalter Pairing ><

  1. Nach dem erfolgreichen Upload kann der ESP8266 wie gewohnt zu HomeKit hinzugefügt werden. ( Gerät hinzufügen / + oben rechts )
  2. Gehe auf den Punkt Weitere Optionen ... und warte, bis dein ESP8266 gefunden wird
  3. Der Pairing-Code lautet: 123-45-678
  4. Das Pairing wird anschließend durchgeführt

Die Themen smarthome und arduino-ide gibt es auch auf dem makesmart Discord-Server! Trete bei, um dich auszutauschen.

mehr erfahren

Teile diesen Beitrag



Diese Artikel könnten dich auch interessieren

ESP8266 D1 Mini programmieren - Der Start mit der Arduino IDE

Erfahre, wie du den ESP8266 D1 Mini mit der Arduino IDE programmierst. Dank den kostenlosen Entwicklungswerkzeugen und der microUSB-Buchse ist das für jeden ein Kinderspiel.

cooper.bin am 10.02.2024

Der DS18B20 Temperatursensor am ESP8266 D1 Mini - Einfache Temperaturmessung

Lerne, wie du mit der Arduino IDE, dem ESP8266 und einem DS18B20 Temperatursensor einfache und schnelle Temperaturmessungen durchführen kannst.

cooper.bin am 05.03.2024

HC-SR04 und JSN-SR04T - Entfernungen messen mit Ultraschallsensoren am ESP8266

Lerne in diesem Tutorial, wie die Ultraschallsensoren HC-SR04 und JSN-SR04T mit ESP8266 D1 Mini für Distanzmessungen eingesetzt werden, die Grundlagen, Anwendungen und mehr.

cooper.bin am 09.03.2024

Der DHT22 am ESP8266 - Wie man die Temperatur und Luftfeuchtigkeit misst

In diesem Tutorial lernst du, wie du mit einem DHT22 und einem ESP8266 D1 Mini die Luftfeuchtigkeit und die Temperatur einfach messen kannst.

cooper.bin am 12.03.2024

ESP8266 - Ein einfacher Webserver mit mDNS

Während Webserver wie Apache2 oder NGNIX auf Rechnern laufen, kann man auch auf einem ESP8266 einen Webserver verwenden. In diesem Tutorial werden wir ein Grundgerüst implementieren.

cooper.bin am 13.02.2024