Although the nuki-bridge in ESPHome allows to use a keypad, I don’t think it’s possible to configure these kind of rules directly. This seems to be possible using an automation. I don’t have a keypad so this is purely theoretical:
If you are using v4, ignore the above paragraph.
Create an automation with different triggers, one time triggee, and one that gets the keypad input
Add conditions based on time if needed
Create a Choose action that will run when both of your triggers are triggered. Then call lock.unlatch service to open the door.
Not sure how the keypad will report to nuki-bridge the state, I suggest you to read the docs.
I tried the exact integration with Nuki Smart Lock 3.0. The lock is discovered and can be used normally but unfortunately with hue delays. Sometimes it instantly responds but usally it takes more then 20 seconds. I have connected Nuki with to a bluetooth proxy network. Switchbot devices work flawlessly but Nuki has delay problems.
It doesn’t have delay problems, it can be configured. Since the lock uses polling to communicate with the lock to save battery, it does in intervals of x seconds
Flashed the ESP32 with the software, got my lock connected to it all OK (Nuki 3.0) I have MQTT installed and the broker logs can see the “nuke hub” as I called it.
I installed the HACS for “Nuki Lock” and when I go to get this installed it asks me for my bridge IP which I have provided (that of the ESP32) however it also asks me for WebAPI or BridgeAPI… This is where I am stuck.
Nuki don’t allow me to add my device to WebAPI as I don’t have a bridge, and I have scrolled through the webpage on my ESP32 for an sort of API key in there but nothing?
I was under the impression this would allow me to add my lock to HA WITHOUT a bridge? Have I totally miss-read it or is there a way to get an API token?
If you are using NukiHub with an ESP32, which works through MQTT, you don’t need any extra integration. You can go to the MQTT integration to find there your lock (if everything is properly configured)
I’m trying to setup this Addon but keep on getting the same error:
-----------------------------------------------------------
Add-on: Nuki Bridge
Virtual Nuki Bridge to use instead of the physical device
-----------------------------------------------------------
Add-on version: 0.0.23
You are running the latest version of this add-on.
System: Home Assistant OS 15.2 (amd64 / qemux86-64)
Home Assistant Core: 2025.5.3
Home Assistant Supervisor: 2025.05.3
-----------------------------------------------------------
Please, share the above information when looking for help
or support in, e.g., GitHub, forums or the Discord chat.
-----------------------------------------------------------
[cont-init.d] 00-banner.sh: exited 0.
[cont-init.d] 01-log-level.sh: executing...
[cont-init.d] 01-log-level.sh: exited 0.
[cont-init.d] done.
[services.d] starting services
[services.d] done.
2025-05-27 17:32:08.192|I|config.py:144|Access Token: XXX
2025-05-27 17:32:08.192|I|config.py:145|app_id: 3583654526
2025-05-27 17:32:08.192|I|config.py:150|Generating new keys
2025-05-27 17:32:08.193|I|config.py:154|bridge_public_key: YYY
2025-05-27 17:32:08.193|I|config.py:155|bridge_private_key: ZZZ
Traceback (most recent call last):
File "/usr/lib/python3.9/runpy.py", line 197, in _run_module_as_main
return _run_code(code, main_globals, None,
File "/usr/lib/python3.9/runpy.py", line 87, in _run_code
exec(code, run_globals)
File "/opt/./__main__.py", line 66, in <module>
nuki_manager, data = init_config(config_file, addon_config_file)
File "/opt/./config.py", line 98, in init_config
if len(nuki_devices) > 1:
TypeError: object of type 'NoneType' has no len()
[cmd] python3 exited 1
[cont-finish.d] executing container finish scripts...
[cont-finish.d] 99-message.sh: executing...
-----------------------------------------------------------
Oops! Something went wrong.
We are so sorry, but something went terribly wrong when
starting or running this add-on.
Be sure to check the log above, line by line, for hints.
-----------------------------------------------------------
[cont-finish.d] 99-message.sh: exited 0.
[cont-finish.d] done.
[s6-finish] waiting for services.
[s6-finish] sending all processes the TERM signal.
[s6-init] making user provided files available at /var/run/s6/etc...exited 0.
[s6-init] ensuring user provided files have correct perms...exited 0.
[fix-attrs.d] applying ownership & permissions fixes...
[fix-attrs.d] done.
[cont-init.d] executing container initialization scripts...
[cont-init.d] 00-banner.sh: executing...