🔐 Nuki SL mit Nuki-Hub ESP32
Diese Seite beschreibt die Einrichtung eines Nuki SmartLock 2/3/4 in Verbindung mit dem Nuki-Hub auf einem ESP32-S3.
- Fokus liegt auf einer vollständig lokalen Integration über MQTT – ohne Cloud, ohne Matter, ohne WLAN-Pro-Version.
- Alle gezeigten Namen, Ports und IP-Adressen dienen als Beispiele und müssen an die jeweilige eigene Netzwerkumgebung angepasst werden.
📦 Repository & Version
🔗 Projektlink: https://github.com/technyon/nuki_hub
🆕 Aktuelle Version zum Zeitpunkt dieses Wikis: Nuki Hub 9.13
🔧 Überblick
Sowohl das Nuki Smart Lock 2/3 als auch das Smart Lock 4 – egal ob Pro- oder Standardversion – lassen sich nahtlos über einen ESP32 mit dem Nuki-Hub betreiben.
Die Kommunikation erfolgt direkt über MQTT, also ohne externe Cloud.
💡 Vorteile:
- Keine Registrierung oder Cloudbindung
- MQTT-Kommunikation rein lokal
- Matter oder WLAN-Pro-Variante nicht erforderlich
- Deutlich geringerer Stromverbrauch im Vergleich zur WLAN-Version
🎯 Ziel
Einrichtung des M5Stamp ESP32-S3 mit Nuki-Hub 9.13 für die lokale MQTT-Integration des Nuki Smart Lock.
Auch baugleiche ESP32-Modelle mit BLE-Unterstützung sollten problemlos funktionieren.
Hardware:
M5Stamp ESP32S3 (Chip: ESP32-S3FN8)
→ Entwicklungsmodul mit WiFi-Kommunikation
→ M5Stack S007
Technische Daten:
- IEEE 802.11 b/g/n (2.4 GHz Wi-Fi)
- Bluetooth 5 (LE)
📘 Dokumentation
🔗 Herstellerdokumentation (M5Stack StampS3):
https://docs.m5stack.com/en/core/StampS3
🔧 Firmware flashen (M5Stamp ESP32-S3 mit Nuki Hub 9.13)
Der einfachste und betriebssystemunabhängige Weg zum Flashen des Nuki-Hub ist der integrierte WebFlasher im Chrome-, Edge- oder Brave-Browser. Damit kann die Firmware direkt über USB auf den M5Stamp ESP32-S3 (S007) geschrieben werden – ganz ohne esptool.py, Treiber oder zusätzliche Tools.
Wer bereits eine Version <9.10 nutzt, kann genauso vorgehen. Da ein direktes Upgrade von Versionen <9.10 nicht möglich ist, sollten die Settings zuvor per Import/Export Configuration gesichert und nach dem Upgrade wieder eingespielt werden.
💡 Voraussetzungen
-
Browser: Google Chrome, Microsoft Edge oder Brave (WebSerial-API erforderlich)
-
Betriebssystem: Linux, Windows 10/11 oder macOS
-
Verbindung: USB-C-Kabel direkt vom PC/Mac zum M5Stamp S3
-
Hinweis: Unter Linux kann es erforderlich sein, Schreibrechte für serielle Geräte zu aktivieren.
Die benötigte Gruppe hängt von der Distribution ab:# Arch / Manjaro / CachyOS sudo usermod -a -G uucp $USER # Debian / Ubuntu / Mint / RPi OS / Fedora / openSUSE sudo usermod -a -G dialout $USERDanach ab- und wieder anmelden, damit die Gruppenzugehörigkeit aktiv wird.
⚙️ Schritt-für-Schritt (WebFlasher, M5Stamp ESP32-S3)
-
ESP32 verbinden
M5Stamp ESP32-S3 per USB-C anstecken – kein Tastendruck nötig (Bootloader wird automatisch per DTR/RTS aktiviert). -
(Optional) Kontrolle unter Linux
sudo dmesg | tail -n 20Typisch:
usb ...: Product: USB JTAG/serial debug unit cdc_acm ...: ttyACM0: USB ACM deviceHinweis: Es kann auch ttyACM1/2 statt ttyACM0 sein.
Aktuellen Port prüfen:ls /dev/ttyACM* -
WebFlasher öffnen
🔗 https://technyon.github.io/nuki_hub
Die Variante „NukiHub Default (ESP32, …, ESP32-S3, …)“ für den S3 so belassen. -
Port koppeln
Connect klicken → im Dialog „USB JTAG/serial debug unit (ttyACMx)“ auswählen → Verbinden. -
Installer starten
Im Popup „Install NukiHub“ wählen.
-
Flash-Vorbereitung
Dialog „Erase device“ → Häkchen setzen → Next. -
Flashen
Fortschrittsanzeige abwarten → bei „Installation complete!“ mit Next bestätigen. -
Weiter
Der ESP startet neu. Danach taucht das Gerät wieder als ttyACMx auf und der Access Point
NukiHubsteht für die Erstkonfiguration bereit (http://192.168.4.1).
📶 Erststart & WLAN-Konfiguration
Nach dem Flashen startet der M5Stamp ESP32-S3 automatisch neu und erstellt einen eigenen Access Point:
SSID: NukiHub
Passwort: NukiHubESP32
- Mit diesem WLAN verbinden.
- Im Browser
http://192.168.4.1das Webinterface öffnen.
- Im Menü die eigenen WLAN-Daten (SSID und Passwort) eintragen.
- DHCP zunächst aktiv lassen (emfohlen), damit der Hub automatisch eine freie IP-Adresse erhält.
- Speichern → der ESP32 verbindet sich anschließend mit deinem WLAN und dem MQTT-Broker und zeigt die zugewiesene IP-Adresse für das Webinterface an, z.B.
http://192.168.0.188.
🌐 Network Configuration
Bei Bedarf diese Einstellungen prüfen/anpassen:
| Einstellung | Wert / Hinweis |
|---|---|
| Hostname (unique) | nukihub |
| Network hardware | WiFi |
| RSSI Publish interval (s; -1 = deaktiviert) | 60 |
| Restart on disconnect | an |
| Check for Firmware Updates every 24 h | aus |
| Find WiFi AP with strongest signal | an |
| Enable DHCP | aus |
| Static IP address | 192.168.0.188 |
| Subnet | 255.255.255.0 |
| Default gateway | 192.168.0.1 |
| DNS Server | leer lassen |
Speichern und nach der Anpassung „Reboot Nuki-Hub“ ausführen.
Optional: Im Router die IP-Adresse für den Nuki-Hub festlegen.
🔗 MQTT Configuration
| Einstellung | Wert / Hinweis |
|---|---|
| MQTT Broker | 192.168.0.164 (IP deines ioBroker) |
| MQTT Broker Port | 1883 |
| MQTT User | mqttUser |
| MQTT Password | dein-MQTT-Passwort |
| MQTT NukiHub Path | nuki |
| Advanced MQTT Configuration | leer lassen |
(MQTT Port, User und Password merken und später in ioBroker eintragen)
Access Level Control (Beispiel, alle anderen aus):
- Publish Nuki configuration information: an
- Nuki Lock Access Control → Lock: an
- Nuki Lock Config Control:
- Pairing enabled: an
- Button enabled: an
- LED flash enabled: an
- Single Lock: an
- Auto unlock disabled: an
- Auto lock enabled: an - GPIO Configuration: alle disabled
Speichern und nach der Anpassung „Reboot Nuki-Hub“ ausführen.
🔐 Nuki Configuration
- Alle Standardwerte beibehalten.
- Optional (bei Fritz!Box):
NTP Server:fritz.box - evtl. müsst ihr nach Speichern nochmals ein „Reboot Nuki-Hub“ ausführen.
🧩 Credentials
- Optional kann hier ein Benutzerpasswort für das Webinterface festgelegt werden.
- Nuki Lock PIN: erforderlich für die Bluetooth-Kopplung mit dem Smart Lock – identisch mit dem 4-stelligen Sicherheitscode in der Nuki App (Funktionen & Konfiguration → Allgemein → Sicherheitscode ändern).
💡 Hinweis:
Nach dem Neustart verbindet sich der Nuki-Hub zunächst nur mit dem WLAN.
Die Verbindung zu MQTT und zum Nuki Smart Lock (per BLE) erfolgt erst nach der jeweiligen Einrichtung in den folgenden Schritten.
Optional kann die Konfiguration per Import/Export Configuration gesichert werden.
🔗 Bluetooth-Verbindung zum Nuki Smart Lock
💡 Funktionsweise:
- Der ESP32-S3 nutzt sein integriertes Bluetooth-5-Modul zur direkten Kommunikation mit dem Smart Lock.
- Der Nuki-Hub emuliert die originale Nuki-Bridge und tauscht Daten lokal aus.
- Keine Internetverbindung oder Nuki-Cloud notwendig.
⚙️ Verbindung aufbauen
- Stelle sicher, dass sich das Smart Lock in Reichweite des Nuki-Hubs befindet (max. 5–10 m, freie Sicht empfohlen).
- Drücke ca. 5 Sekunden die Taste am Nuki Smart Lock, bis der LED-Ring dauerhaft leuchtet (Bluetooth-Pairing aktiv).
- Den Nuki-Hub kurz ausschalten und wieder einschalten – danach erkennt der Hub das Schloss automatisch und koppelt sich per BLE.
- Nach erfolgreicher Verbindung erscheint das Smart Lock im Webinterface des Hubs als
Nuki Lock paired: Yes (BLE Address xx:xx:xx:xx:xx:xx). - Ab diesem Zeitpunkt kann das Schloss über MQTT eingerichtet, gesteuert und überwacht werden.
⚠️ Hinweis:
Das Nuki Smart Lock erlaubt technisch immer nur eine aktive Bluetooth-Verbindung gleichzeitig.
Wird eine neue Verbindung hergestellt (z.B. durch den Nuki-Hub),
wird eine bestehende Verbindung – etwa zur Nuki-App oder zur offiziellen Bridge – automatisch getrennt.
🔍 Verbindung in ioBroker mit "MQTT Broker/Client" einrichten
Instanzeinstellungen:
- Adapter:
mqtt.0(Instanz) - Modus: Server/Broker
- Port:
1883(wie in der Hub-Konfiguration hinterlegt) - Benutzername: mqttUser (wie in der Hub-Konfiguration hinterlegt)
- Passwort: dein-MQTT-Passwort (wie in der Hub-Konfiguration hinterlegt)
- IP:
[IPv4] 0.0.0.0 – Zugriff von allen IPs zulassen - SSL: deaktiviert
- WebSockets benutzen: deaktivieren
Damit akzeptiert ioBroker MQTT-Verbindungen direkt vom Nuki-Hub.
🔧 Wichtig: MQTT-Einstellungen im Adapter
Nur folgende Optionen aktivieren:
- ✅ Publizieren/Aktualisieren nur im Falle einer Änderung
- ✅ Sende auch Zustände (ack=true)
Alle anderen Häkchen deaktivieren – insbesondere:
- „Eigene States beim Verbinden publizieren“
- „Zustandsobjekt als MQTT-Nachricht senden“
- „Keine neuen Zustände erstellen“
- „Alle neuen Topics werden binär verarbeitet“
- „Unterschiedliche Topic-Namen für setzen und lesen nutzen“
- „Ausgabe jeder Nachricht loggen (debug)“
Speichern und Schließen.
- Die Instanz sollte sich nach ein paar Sekunden verbinden und grün sein (Verbunden mit Host, Verbindung: nukihub).
- Nach erfolgreicher Kopplung erscheint auf der Infoseite des Nuki-Hub:
MQTT Connected: Yes
- ioBroker Blockly-Nutzung als Beispiel
🔄 Firmware-Update des Nuki Hub (ESP32-S3)
Der Update-Vorgang erfolgt wie beim Flashen über den integrierten WebFlasher,
jedoch ohne die Option „Erase device“ – so bleiben WLAN- und MQTT-Daten erhalten.
Sicherheitshalber sollte zuvor ein Backup der Konfiguration erstellt werden.
⚠️ Hinweise zu Access Points (APs)
Einige Access Points, z.B. FRITZ!Repeater, führen regelmäßig eine Sicherheitsaktualisierung durch:
🔒 Beispiel:
FRITZ!Repeater AVM-Dokument #3570 aktualisiert alle 12 Stunden die WPA3-Verschlüsselung.
Dabei kann es kurzzeitig zu Unterbrechungen kommen.
Der ESP32 mit Nuki-Hub stellt die Verbindung jedoch automatisch und schnell wieder her (Restart on disconnect).
🧠 Praxis-Erfahrung:
- Verbindung bleibt stabil, keine dauerhaften Ausfälle
- Direkte Verbindung des ESP32 mit der FRITZ!Box zeigte sich als stabil
- Getestet mit ESP32 StampS3 unter Nuki-Hub 8.35, 9.07 und 9.13





