
Switchbot lokal -Wer die Produkte von Switchbot kennt, weiß, dass diese leider über Bluetooth gesteuert werden. Das hat den Nachteil, dass die Geräte nicht ohne Umwege in das Smarthome-System ioBroker oder HomeAssistant eingebunden werden können.
Hierfür gibt es zwei Möglichkeiten. Zum einen verfügt der Switchbot-Hub über eine API-Schnittstelle, über die die Geräte eingebunden werden können. Hier laufen die Anfragen leider nicht lokal und es ist immer eine Cloudanbindung notwendig.
Wer mich kennt weiß, dass ich Cloudanbindungen gerne vermeide. Zu oft gibt es Änderungen, Verbindungsprobleme oder die Cloud wird sogar abgeschaltet. Die Überschritt verspricht ja eine Lösung, welche lokal läuft. Welche ist das nun?
Das ganze Projekt heißt SwitchBot-MQTT-BLE-ESP32 von devWaves auf Github. Hier kann man sich quasi einen eigenen Switchbot-Hub auf Basis des ESP32 bauen, die von jedem mit etwas technischem Verständnis umgesetzt werden kann.
Allerdings kann es auch Nachteile geben. Manchmal muss die Verbindung zwischen dem ESP32 Mikrocontroller und den SwitchBot Geräten länger aufgebaut werden, was zu Verzögerungen führen kann. Dadurch kann es 10-20 Sekunden dauern, bis die SwitchBot-Geräte die gewünschte Aktion ausführen. Dies tritt bei mir ab und zu auf. Woran dies liegt konnte ich noch nicht identifizieren.
Nichtsdestotrotz ist das SwitchBot-MQTT-BLE-ESP32-Projekt eine interessante Alternative zum Hub von SwitchBot, die mehr Flexibilität bietet. Durch die Verwendung von MQTT und BLE wird eine schnelle und sichere Verbindung zwischen den Geräten hergestellt, die von jedem mit etwas technischem Verständnis implementiert werden kann.
Inhalt
2. Februar 2026 20:04
Switchbot lokal – Was wir benötigen
- ESP32 * – Board, welches mit dem Skript die Kommunikation durchführt
- Switchbot-Gerät – In diesem Beispiel Switchbot-Curtains *
- MQTT Broker – Nachrichtenprotokoll im SmartHome-Netzwerk
- Arduino IDE – Zum flashen des ESP32
- Github-Projekt – SwitchBot-MQTT-BLE-ESP32
Schritt 1 – Vorbereitung
Als erstes laden wir uns das Github-Projekt herunter. Als nächstes, wenn noch nicht vorhanden, das Programm Arduino IDE. Mit diesem Programm können wir den Code anpassen und auf dem ESP flashen.
Zuerst laden wir das Github-Projekt herunter. Danach, falls noch nicht vorhanden, das Programm Arduino IDE. Mit diesem Programm können wir den Code anpassen und auf das ESP flashen.
Schritt 2 – Board- und Bibilothekverwaltung
Nun können wir im heruntergeladenen Projekt im Ordner „Arduino IDE Files“ die Datei „SwitchBot-BLE2MQTT-ESP32.ino“ öffnen. Danach müssen wir einige Pakete in der Arduino IDE installieren
Um mit dem ESP32 sprechen zu können, fügen wir zunächst in den Einstellungen unter „Zusätzliche Boardverwalter-URLs“ folgende URL ein und bestätigen mit OK:
https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json
Wenn bereits ein Eintrag vorhanden ist, kann der neue Eintrag nach einem Komma erfolgen.
Anschließend installieren wir das ESP32 Board
Sobald dies geschehen ist, gehen wir zur Bibliotheksverwaltung und installieren die folgenden Bibliotheken:
NimBLE-Arduino library (Tested working with version 1.4.0)
EspMQTTClient library (Tested working with version 1.13.3)
ArduinoJson library (Tested working with version 6.19.4)
CRC32 library (by Christopher Baker) (Tested working with version 2.0.0)
ArduinoQueue library (Tested working with version 1.2.5)
Schritt 3 – Anpassung am Code
Super! Alle Vorbereitungen sind abgeschlossen. Jetzt können wir den Code anpassen:
Wlan
/* Wifi Settings */
static const char* host = "esp32"; // Unique name for ESP32. The name detected by your router and MQTT. If you are using more then 1 ESPs to control different switchbots be sure to use unique hostnames. Host is the MQTT Client name and is used in MQTT topics
static const char* ssid = "WLAN-NAME"; // WIFI SSID
static const char* password = "WLAN-PASSWORT"; // WIFI PasswordHier gibst du deinen Wlan-Namen und dein Wlan-Passwort ein.
MQTT
/* MQTT Settings */
/* MQTT Client name is set to WIFI host from Wifi Settings*/
static const char* mqtt_host = "MQTT-BROKER-IP"; // MQTT Broker server ip
static const char* mqtt_user = "MQTT-USERNAME"; // MQTT Broker username. If empty or NULL, no authentication will be used
static const char* mqtt_pass = "MQTT-PASSWORT"; // MQTT Broker password
static const int mqtt_port = 1883; // MQTT Port
static const std::string mqtt_main_topic = "esp-switchbot"; // MQTT main topicIn diesem Segment wird der MQTT Broker eingetragen. Falls dieser mit einem Passwort versehen ist, kann dieses ebenfalls angepasst werden. Achte darauf, dass der richtige Port angegeben ist, da sonst keine Verbindung aufgebaut werden kann.
Im Bereich Topic kann der Pfad angegeben werden, in dem der ESP senden soll. Dieser kann im Zweifelsfall wie voreingestellt belassen werden.
Mac-Adressen
/* Switchbot Curtain Settings */
static const int curtainClosedPosition = 10; // When 2 curtains are controlled (left -> right and right -> left) it's possible one of the curtains pushes one of the switchbots more open. Change this value to set a position where a curtain is still considered closed
static std::map allCurtains = {
{ "curtainone", "C1:39:13:XX:XX:XX" },
{ "curtaintwo", "CD:A6:17:XX:XX:XX" }Nun müssen wir dem ESP noch mitteilen, auf welche Bluetooth-Geräte es hören soll. Dazu müssen wir die MAC Adresse der Switchbot Produkte angeben.
Wenn du sie nicht kennst, kannst du sie in der Switchbot App nachschauen:

Anschließend wird der Code entsprechend angepasst.
In diesem Beispiel füge ich meine Switchbot-Curtains * unter „Switchbot Curtain Settings“ hinzu.
Solltest du ein Switchbot-Switch * verwenden musst du die Mac-Adressen in dem Bereich „Switchbot Bot Settings“ eingeben.
Bei Bedarf kann in der Switchbot App noch ein Gerätepasswort eingegeben werden. So kann verhindert werden, dass Externe deine Geräte steuern können. Dies muss ggf. im Bereich Passwort hinterlegt werden -Switchbot lokal.
2. Februar 2026 20:04
Schritt 4 – ESP32 flashen
Sind alle Einstellungen vorgenommen, kann der Code auf das ESP32 geflasht werden. Dazu wird das ESP mit einem Micro-USB-Kabel an den Computer angeschlossen. Anschließend wählen wir unter Werkzeuge die richtigen Einstellungen des Boards aus.
Diese erfahrt ihr von dem Händler, bei dem ihr das ESP32 gekauft habt.
Anschließend kann der Code mit dem Button Hochladen übertragen werden.
Tritt während des Flashens ein Problem auf, wird dies auf der Konsole angezeigt. Mit Hilfe der Fehlercodes und einer Suchmaschine kann das Problem schnell identifiziert und behoben werden.
Schritt 5 – Daten werden per MQTT übertragen
Wenn der Flashvorgang erfolgreich war, sollte sich der ESP32 nun mit dem SwitchBot-MQTT-BLE-ESP32 in das Netzwerk einwählen. Wenn die IP im Browser geöffnet ist, kann hier ein Update für die Zukunft eingespielt werden.
In deiner Smarthome Zentrale sollte das ESP nun die Daten des Switchbot gerätes ausgeben. (In meinem Fall im Ordner MQTT im ioBroker im angegebenen Topic)
Mit dem Objekt state können die Vorhänge entweder mit einer Zahl (Prozentsatz) oder mit CLOSE bzw. OPEN bewegt werden Switchbot lokal.
Beispiele für Automationen
- Vorhänge werden mit dem Switchbot-Curtain * je nach Anwesenheit und Helligkeitswert geschlossen
- Mit einem Switchbot-Switch * lässt sich die Haustür öffnen nach dem erkannten klingen öffnen, indem der Bot auf die Öffnungstaste drückt
2. Februar 2026 20:04








Schreibe einen Kommentar