Skip to main content

🔐 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 MQTTohne 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.

M5StampS3.png


📦 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 $USER
    

    Danach ab- und wieder anmelden, damit die Gruppenzugehörigkeit aktiv wird.


⚙️ Schritt-für-Schritt (WebFlasher, M5Stamp ESP32-S3)

  1. ESP32 verbinden
    M5Stamp ESP32-S3 per USB-C anstecken – kein Tastendruck nötig (Bootloader wird automatisch per DTR/RTS aktiviert).

  2. (Optional) Kontrolle unter Linux

    sudo dmesg | tail -n 20
    

    Typisch:

    usb ...: Product: USB JTAG/serial debug unit
    cdc_acm ...: ttyACM0: USB ACM device
    

    Hinweis: Es kann auch ttyACM1/2 statt ttyACM0 sein.
    Aktuellen Port prüfen:

    ls /dev/ttyACM*
    
  3. WebFlasher öffnen
    🔗 https://technyon.github.io/nuki_hub
    Die VarianteNukiHub Default (ESP32, …, ESP32-S3, …)“ für den S3 so belassen.

  4. Port koppeln
    Connect klicken → im Dialog „USB JTAG/serial debug unit (ttyACMx)“ auswählen → Verbinden.

  5. Installer starten
    Im Popup „Install NukiHub“ wählen.

Nuki-Hub_Instal.jpg

  1. Flash-Vorbereitung
    Dialog „Erase device“ → Häkchen setzenNext.

  2. Flashen
    Fortschrittsanzeige abwarten → bei „Installation complete!“ mit Next bestätigen.

  3. Weiter
    Der ESP startet neu. Danach taucht das Gerät wieder als ttyACMx auf und der Access Point
    NukiHub steht 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
  1. Mit diesem WLAN verbinden.
  2. Im Browser http://192.168.4.1 das Webinterface öffnen.

Nuki-Hub_192-168-4-1.jpg

  1. Im Menü die eigenen WLAN-Daten (SSID und Passwort) eintragen.
  2. DHCP zunächst aktiv lassen (emfohlen), damit der Hub automatisch eine freie IP-Adresse erhält.
  3. 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

  1. Stelle sicher, dass sich das Smart Lock in Reichweite des Nuki-Hubs befindet (max. 5–10 m, freie Sicht empfohlen).
  2. Drücke ca. 5 Sekunden die Taste am Nuki Smart Lock, bis der LED-Ring dauerhaft leuchtet (Bluetooth-Pairing aktiv).
  3. Den Nuki-Hub kurz ausschalten und wieder einschalten – danach erkennt der Hub das Schloss automatisch und koppelt sich per BLE.
  4. Nach erfolgreicher Verbindung erscheint das Smart Lock im Webinterface des Hubs als
    Nuki Lock paired: Yes (BLE Address xx:xx:xx:xx:xx:xx).
  5. 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).

ioBroker_mqtt.jpg

  • Nach erfolgreicher Kopplung erscheint auf der Infoseite des Nuki-Hub: MQTT Connected: Yes

nukiHub_Info.jpg

  • ioBroker Blockly-Nutzung als Beispiel

ioBroker_nukiBlockly.jpg


🔄 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