Nuki Hub: Turn an ESP32 into a Smart Lock Bridge
- ESP32
- ESP32-S3
- ESP32-C3
- ESP32-C5
- ESP32-C6
- ESP32-C61
- ESP32-H2
- ESP32-P4
- Olimex ESP32-POE
- Olimex ESP32-POE-ISO
- WT32-ETH01
- M5Stack Atom POE
- M5Stack PoESP32 Unit
- LilyGO-T-ETH-POE
- LilyGO-T-ETH-Lite
- LilyGO-T-ETH-Lite-ESP32S3
- LilyGO-T-ETH ELite
- GL-S10
- Waveshare ESP32-S3-ETH
- Waveshare ESP32-S3-POE-ETH
- Waveshare ESP32-P4-NANO
- Nuki Smart Lock 1.0
- Nuki Smart Lock 2.0
- Nuki Smart Lock 3.0
- Nuki Smart Lock 3.0 Pro
- Nuki Smart Lock 4.0
- Nuki Smart Lock 4.0 Pro
- Nuki Smart Lock Go
- Nuki Smart Lock 5.0 Pro
- Nuki Smart Lock Ultra
- Nuki Opener
- Nuki Keypad 1.0
- Nuki Keypad 2.0
What You Will Build
Nuki Hub turns a low-cost ESP32 module into a local bridge between Nuki Smart Locks (or the Nuki Opener) and any MQTT-capable home automation system — Home Assistant, ioBroker, FHEM, and others.
The ESP32 speaks Bluetooth Low Energy (BLE) to the Nuki hardware and speaks MQTT over Wi-Fi (or wired Ethernet) to your smart home hub. Lock state, battery level, keypad events and dozens of other values appear as MQTT topics. Commands like lock, unlock, and configuration changes flow back the same way.
This matters because Nuki's official bridge is a separate purchase and ties you to Nuki's cloud. Nuki Hub keeps everything on your local network, gives you full MQTT control, supports every Nuki lock generation from 1.0 to the Ultra, and adds features the official bridge never had: wired PoE Ethernet, MQTT SSL, GPIO control, and hybrid mode that combines BLE with the lock's own Wi-Fi/Thread connection.
What You Need
Hardware
- An ESP32 module with both Wi-Fi and Bluetooth Low Energy. The ESP32-S2 is explicitly not supported because it has no BLE.
- For a new purchase in 2025 the project recommends an ESP32-S3 with PSRAM (look for the N≥4 R≥2 designation, e.g. N16R8) or the ESP32-P4 with an ESP32-C6 module. Both are dual-core, have ample RAM, and experience far fewer BLE-related crashes than the original ESP32.
- If you need wired Ethernet or Power-over-Ethernet, several boards are supported out of the box: Olimex ESP32-POE / ESP32-POE-ISO, WT32-ETH01, M5Stack Atom POE, LilyGO-T-ETH-Lite / T-ETH ELite, GL-S10 (rev 2.1 or 2.3), and Waveshare ESP32-S3-ETH among others.
- A supported Nuki device: Smart Lock 1.0 through 5.0 Pro, Smart Lock Ultra, Smart Lock Go, Nuki Opener, or Nuki Keypad 1.0 / 2.0.
Software / Services
- A Chrome, Opera, or Edge browser (for the web installer).
- A running MQTT broker on your local network (e.g. Mosquitto). Note the broker's IP address and port — the default MQTT port is 1883.
- A home automation platform configured to subscribe to MQTT topics (Home Assistant, ioBroker, FHEM, etc.).
- No soldering, no custom PCB, and no compiler toolchain are required for a standard install.
Typical use cases
Publish lock and unlock commands from any MQTT client — Home Assistant automations, Node-RED flows, or a custom script — without touching Nuki's cloud.
Deploy on an Olimex or LilyGO PoE board near the front door for a reliable wired connection that never drops off Wi-Fi and powers itself from a single Ethernet cable.
Change keypad codes, manage authorizations, and edit time-control entries remotely through MQTT — features the official Nuki MQTT API does not expose.
For Smart Lock 3.0 Pro and newer, combine the lock's own Wi-Fi/Thread MQTT feed with Nuki Hub's BLE fallback for instant state updates and rock-solid command delivery.
How It Works
Nuki Hub runs two CPU cores simultaneously (on dual-core boards). One side runs a BLE client that pairs with and polls the Nuki device, receiving lock state, battery reports, keypad events and door sensor data. The other side runs an MQTT client, an HTTP configuration server, and optionally a BLE scanner for presence detection.
All state is published to structured MQTT topics. Write to the command topic and Nuki Hub relays that instruction to the lock over BLE. The round-trip is local — no Nuki cloud account, no internet dependency.
Memory is the main constraint on older ESP32 chips. An ESP32-S3 with PSRAM has roughly 185 KB of free internal heap plus the full PSRAM, making it effectively impossible to run out of RAM. A plain ESP32 has around 105 KB free, which tightens noticeably when you enable MQTT SSL (costs ~20–30 KB), HTTP SSL (~30 KB), or connect both a lock and an Opener simultaneously. The info page of the built-in web interface shows live heap usage so you can monitor headroom.
Hybrid mode is available for Smart Lock 3.0 Pro, 4.0, 4.0 Pro, 5.0 Pro, Go, and Ultra. In hybrid mode Nuki Hub receives real-time events over the lock's native Wi-Fi or Thread MQTT connection and falls back to BLE for commands — giving faster state updates without sacrificing control.
Flash the Firmware
Option A — Web installer (recommended for beginners)
Connect the ESP32 to your computer via USB, then open a Chromium-based browser and navigate to:
https://technyon.github.io/nuki_hub/
Select your ESP32 model, click Install, and the browser handles everything — no drivers or command-line tools needed.
Option B — Manual flash from release archive
- Download the latest release zip for your specific ESP32 model from the GitHub releases page:
https://github.com/technyon/nuki_hub/releases - Unpack the archive.
- Open the included
how-to-flash.txtand follow the instructions for either Espressif Flash Download Tools (Windows GUI) oresptool(cross-platform CLI).
The release is currently at version 9.17. Always match the binary to your exact ESP32 variant — an ESP32-S3 binary will not run correctly on a plain ESP32.
Initial Setup: Network, MQTT, and Pairing
Step 1 — Connect to the setup access point
Power the ESP32. It will broadcast a Wi-Fi access point:
- SSID:
NukiHub - Password:
NukiHubESP32
Connect your phone or laptop to that network, then open a browser and go to http://192.168.4.1. Use this interface to enter your home Wi-Fi credentials and save.
Step 2 — Configure MQTT
After the ESP32 joins your Wi-Fi network, find its IP address (check your router's DHCP table or set a static IP). Open that address in a browser, click MQTT Configuration, and enter:
- MQTT broker IP address
- Port (default:
1883) - Username and password if your broker requires them
Optional: enable MQTT SSL by following the MQTT Encryption section in the project README.
Step 3 — Pair with your Nuki device
In the Nuki app go to Settings → Features & Configuration → Button and LED and enable Bluetooth pairing. Then press the button on the Nuki device for a few seconds.
Nuki Hub will detect the lock automatically at next boot and pair with it. When pairing succeeds the web interface shows Paired: Yes and MQTT topics begin publishing lock state and battery level.
For the Nuki Ultra, Lock Go, or 5th gen Pro, additional steps apply before pressing the button: enable both "Nuki Smartlock enabled" and "Nuki Smartlock Ultra/Go/5th gen enabled" in Basic Nuki Configuration, enter your 6-digit PIN on the Credentials page, and set up hybrid mode — the README strongly recommends hybrid mode for these newer models.
Important: Nuki Hub does not register as a Nuki Bridge in the official Nuki app and does not connect to Nuki's cloud. If you also use a Nuki Bridge on the same lock, enable Register as app before pairing to avoid accidentally unregistering the Bridge.
Ideas to Extend and Known Limitations
Extend the build
- Wired reliability: Swap Wi-Fi for wired Ethernet using one of the supported PoE boards (Olimex ESP32-POE-ISO, LilyGO-T-ETH ELite, M5Stack Atom POE, etc.) to eliminate wireless dropouts near a metal door frame.
- GPIO control: Nuki Hub exposes GPIO control so you can wire a physical button or relay directly to the ESP32 to trigger lock/unlock without going through MQTT.
- Multiple Nuki devices: Connect both a Nuki Lock and a Nuki Opener to the same Hub. Watch RAM usage on low-memory boards — an ESP32-S3 with PSRAM is the safe choice here.
- Presence detection: The built-in BLE scanner can detect Nuki Fobs or other BLE beacons and publish presence events to MQTT.
- Hybrid mode: For supported newer locks (3.0 Pro and above), enable hybrid mode to combine the low-latency Wi-Fi/Thread event feed with BLE command reliability.
Limitations to know
- The ESP32-S2 is not supported — it has no BLE hardware.
- The original ESP32 and ESP32-C3 are not recommended for new builds due to BLE stability issues in Espressif's closed-source BLE stack.
- The ESP32-P4 with ESP32-C6 build exists but is noted as having stability issues; the ESP32-P4 with ESP32-C5 module is untested.
- Nuki Hub cannot appear as a Bridge in the Nuki mobile app and has no path to Nuki's cloud — this is by design, but it means Nuki's remote access feature (outside your home network) must be handled by your home automation platform or a VPN.
- Running MQTT SSL, HTTP SSL, and WebSerial simultaneously on a plain ESP32 without PSRAM may exhaust available RAM.
Nuki Hub is a mature, actively maintained project — release 9.17 shipped in September 2026 — that delivers deeper Nuki integration than the official bridge or the native MQTT API, entirely on your local network. The web installer removes the flashing barrier, and the breadth of supported ESP32 variants and Nuki lock generations makes it easy to match hardware you already own. The main investment is a working MQTT broker and a few minutes of web-interface configuration; after that, your Nuki lock becomes a first-class citizen in any open home automation stack.
Sources
github.comtechnyon/nuki_hub — repository & READMEFacts in this article come from the project's public README and GitHub metadata at the time of writing. Images belong to their respective owners and link back to the original source.



