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.

Produktempfehlungen und -suche in Verbindung mit dem Amazon Partnerprogramm:

¹ Angaben ohne Gewähr. Bei einem Kauf über den Link erhalten wir eine Provision.

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.

Produktempfehlungen und -suche in Verbindung mit dem Amazon Partnerprogramm:

¹ Angaben ohne Gewähr. Bei einem Kauf über den Link erhalten wir eine Provision.

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

cooper.bin Avatar

cooper.bin

Unterstütze mich und meine Arbeit, so kann ich weiter meiner Leidenschaft nachgehen. Ich lege viel Wert auf Qualität und stecke daher sehr viel Zeit in meine Beiträge. Wenn sie dir gefallen kannst du dir gerne auch meine anderen Artikel anschauen.

Mit PayPal unterstützen

Ich bin auf dem makesmart Discord-Server aktiv. Dort bin ich auch relativ gut erreichbar.

Teile diesen Beitrag



Diese Artikel könnten dich auch interessieren

Natives HomeKit Schloss im Eigenbau mit dem ESP8266

Das DIY HomeKit-Schloss mit einem ESP8266 kann über viele Wege erreicht werden. Heute machen wir das ganze nativ und ohne Bridge - direkt mit HomeKit kompatibel.

cooper.bin am 15.04.2024

Der ESP8266 als nativer HomeKit Kontaktsensor

Echtes natives HomeKit-Zubehör mit dem ESP8266? In diesem Tutorial erfährst du, wie die Smarthome Zubehör mit dem ESP8266 umsetzen kannst. Ganz ohne zusätzliche Bridge.

cooper.bin am 19.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

ESP32-Cam als HomeKit Kamera via RTSP-Stream & Homebridge

Mit einem RTSP-Stream von der ESP32-Cam lässt sich die Übertragung in vielen Plattformen einbinden. Unter anderem auch im eigenen Smarthome wie HomeKit.

cooper.bin am 08.04.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