• Hallo miteinander! Heute habe ich mal wieder ein natives ESP8266 HomeKit Zubehör für euch - diesmal ist es ein Kontaktsensor. Der Kontaktsensor lässt sich direkt und ohne weitere Hardware und Software in HomeKit integrieren. Umsetzen werden wir den Kontaktsensor wie immer mit einem ESP8266 D1 Mini. Aber auch ein ESP-01s wäre hier eine noch kleiner Option die gut funktioniert.

    Der Kontaktsensor besteht in erster Linie nur aus einem einzigen Taster. Wie auch in meinen anderen nativen HomeKit Tutorials mit dem ESP8266 lässt sich der Taster aber durch alles ersetzen, was man in der Arduino IDE eben implementieren kann. Euch sind wie immer keine Grenzen gesetzt.

    Kontaktsensor, was genau?

    Ein Kontaktsensor in HomeKit kann verschiedene Formen annehmen, dazu zählen:

    1. Fenster
    2. Garagentor
    3. Jalousien
    4. Kontaktsensor
    5. Tür

    Ein Kontaktsensor kennt nur zwei Zustände true oder false, an oder aus oder 1 oder 0. Man kann mit dem Sensor also repräsentieren, ob eines der von Punkt 1. - 5. genannten Dinge geöffnet oder geschlossen ist. Ich persönlich habe einen solchen Sensor am Schwebetüren-Kleiderschrank. Sobald die Tür aufgeschoben wird, wird die Türe als geöffnet erkannt und die Spots die auf den Kleiderschrank gerichtet sind gehen an.

    ¹Produktempfehlungen

    Produkte zum Warenkorb hinzufügen


    Während ein nativer HomeKit Kontaktsensor ab ca. 30€ losgeht, könnt ihr das ganze mit dieser Variante schon für nur rund 6€ umsetzen. Aber natürlich geht es hier wie immer nicht primär um den Preis sondern um die individuelle und flexible Lösung mit nahezu unbegrenzten Möglichkeiten. :heh: Einfach immer wieder nice!

    Ein paar passende Produkte für dieses Projekt findet ihr hier.

    Vorbereitungen

    Eigentlich ist das Snippet was ich euch hier vorstelle Plug & Play, jedoch können, wie bereits erwähnt, beliebig viele weitere Abläufe oder Bedingungen im Programm eingefügt werden, dazu benötigt man aber Kenntnisse beim Programmieren des ESP8266 D1 Mini. Solltest du das nicht haben ist es auch kein Problem - du musst lediglich wissen, wie man die Arduino IDE zum Programmieren der ESP8266 Module einrichtet.

    HomeKit-ESP8266 - Arduino IDE Library hinzufügen

    Um den bereitgestellten Programmcode verwenden zu können, muss eine Library innerhalb der Arduino IDE installiert werden. Das geht mithilfe des Bibliotheksverwalter. Öffnen könnt ihr ihn über das Menü der Arduino IDE. Die Library trägt den Namen HomeKit-ESP8266 und ist von Mixiaoxiao

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

    HomeKit-ESP8266 Arduino IDE Library

    Der native Kontaktsensor - der Code

    Der Code besteht aus drei Dateien, diese drei Dateien habe ich euch in ein zip-Archiv gepackt. Das Archiv könnt ihr direkt hier downloaden:

    Die Ordnerstruktur sieht wie folgt aus:

    /
    ├── makesmart_homekit_contact_sensor.ino
    ├── my_accessory.c
    └── wifi_info.h
    

    Ihr müsst nur die Datei makesmart_homekit_contact_sensor.ino öffnen. Die anderen beiden Dateien werden dann automatisch mit in der Arduino IDE geladen.

    makesmart_homekit_contact_sensor.ino

    • enthält den eigentlichen Code - was passiert wann?

    my_accessory.c

    • in dieser Datei wird der Kontaktsensor für HomeKit definiert

    wifi_info.h

    • enthält Daten zur Verbindung mit dem WLAN

    Anpassungen im Code

    Was ihr auf jeden Fall machen müsst ist, die WLAN Daten zu ändern. Dazu benötigt ihr nur die folgenden beiden Zeilen in der Datei wifi_info.h

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

    Solltet ihr den Code 1:1 übernehmen, müsst ihr noch folgende Zeile im setup() in der Datei makesmart_homekit_contact_sensor.ino auskommentieren oder löschen, da ihr sonst mit jedem Reset das Pairing verliert.

    void setup() {
      Serial.begin(115200);
      wifi_connect();
      //homekit_storage_reset();
      my_homekit_setup();
      pinMode(inputPin, INPUT); 
    }
    

    Solltet ihr den Code anpassen oder modifizieren wollen, empfehle ich die Zeile erst nach dem ersten Pairing auszukommentieren. So könnt ihr das Programm immer wieder Überschreiben aber das Pairing bleibt bestehen - nur mit aktualisiertem Programmcode. 👍

    Weitere Informationen

    Hier in meinem vorbereiteten Programmcode funktioniert der Kontaktsensor mit nur einem Taster. Der Taster ist an GPIO0 also Pin D3 angeschlossen.

    // GPIO0 D3; GPIO2 = D4;
    byte inputPin = 0; // GPIO0 = D3
    

    Es könnte auch der Pin D4 verwendet werden. Nur dann leuchtet bei Betätigung (also immer wenn die Tür zu ist) auch die blaue LED am D1 Mini.

    Wichtig zu wissen ist, dass die Kontaktsensoren meisten NC-Schalter sind, also sind sie im Ruhezustand immer geschlossen und öffnen bei Betätigung. Das ist auch der Grund warum wir einen GPIO mit Pull-Up Widerstand verwenden - weswegen auch nur zwei und nicht drei Drähte benötigt werden.

    esp8266-homekit-kontaktsensor-schaltplan.png
    Sollte z.B der Pin D8 verwendet werden wird die Türe standardmäßig immer als geöffnet angezeigt und bei Betätigung des Tasters ist sie demnach geschlossen.

    Hier hilft auch ein Blick in das Datenblatt des D1 Mini.

    Das Hochladen des Programms

    Nach diesen Informationen könnt ihr das Programm schon auf den ESP8266 hochladen. Die einzige Änderung die ihr machen solltet ist, die Taktrate des ESP8266 von 80MHz auf 160MHz zu stellen, das sonst immer wieder Verbindungsunterbrechungen auftreten können.

    Das geht über die Einstellungen

    Werkzeuge -> CPU Taktrate: 160MHz

    Nach dem Upload kann das Gerät wie gewohnt zu HomeKit hinzufügen. (Gerät hinzufügen / + oben rechts in der Home App)
    Sollte das Pairing nicht auf Anhieb klappen, reicht es meistens, den ESP einmal zu resetten und es anschließend erneut zu versuchen.

    esp8266-homekit-kontaktsensor-pairing.JPEG

    Danach habt ihr euren DIY Kontaktsensor nativ in HomeKit eingebunden und könnt ihr für Automationen verwenden! 🙂

    Als Taster muss natürlich nicht zwingend ein Tactile Switch verwendet werden. Am Kleiderschrank z.B habe ich einen Mikroschalter mit Schaltfahne verbaut. 👍

    Suchst du noch anderes flexibles DIY HomeKit-Zubehör mit unbegrenzten Möglichkeiten? Dann schau dir gerne die anderen Tutorials zu dieser Library an! :programmingparrot:

    Suchst du gezielt nach weiteren Inhalten mit dieser Library? Dann schau doch mal in der Community unter dem Tag homekit-esp8266 vorbei. :programmingparrot:

    ¹Affiliate Link. Affiliate Links sind Referenzen des Autors. Bei Kauf wird eine Provision ausgeschüttet. Mehr Informationen.

Ähnliche Themen

  • 1
  • 7
  • 1
  • 1
  • 14