iobroker.nuki-local
v0.1.2
Published
Local MQTT integration for Nuki Smart Locks
Readme
ioBroker.nuki-local
Local Nuki Smart Lock integration for ioBroker using an integrated MQTT broker.
The adapter is designed for direct local communication with compatible Nuki Smart Locks over MQTT. Optionally, the Nuki Web API can be enabled to enrich the local MQTT data with authorization names and activity information.
Features
- Integrated MQTT broker
- Local communication with Nuki Smart Locks
- No separate MQTT broker required
- MQTT authentication with username and password
- Persistent retained MQTT data using LevelDB
- Automatic restore of retained Nuki states after adapter restart
- Automatic device creation
- Lock status
- Door sensor status
- Battery information
- Firmware information
- Device type
- Online status
- Lock / unlock / unlatch commands
- Lock'n'Go commands
- Fingerprint detection
- Keypad code detection
- Configurable Code-ID to user-name mapping
- Optional Nuki Web API integration
- Activity information
- Dynamic status icons
- Local operation remains available even when the Nuki Web API is disabled
Installation
Install the adapter from the ioBroker Admin interface once it is available in the ioBroker repository.
MQTT configuration
Default MQTT port:
1883Default MQTT username:
nukiConfigure the same MQTT username and password in the Nuki app.
Use the IP address of the ioBroker server as MQTT broker.
Example:
Broker: 192.168.178.124
Port: 1883
Username: nuki
Password: your configured passwordMQTT persistence
Retained MQTT states are stored using LevelDB.
Example persistence directory:
/opt/iobroker/iobroker-data/nuki-local.0/mqtt-leveldbThe adapter restores retained Nuki states automatically after a restart.
Object structure
Each Nuki device is created below:
nuki-local.0.<NUKI-ID>Structure:
<NUKI-ID>
├── activity
├── advanced
├── battery
├── commands
├── device
├── keypad
├── status
└── rawStatus
Available states include:
status.lockState
status.lockStateText
status.locked
status.doorState
status.doorStateText
status.doorOpen
status.timestamp
status.iconState
status.iconBattery
battery.percent
battery.critical
battery.charging
battery.keypadCritical
battery.doorSensorCriticalDevice information
device.name
device.firmware
device.deviceType
device.mode
device.onlineCommands
Commands are available below:
nuki-local.0.<NUKI-ID>.commandsLock
commands.lockInternally:
lockAction = 2Unlock
commands.unlockInternally:
lockAction = 1This unlocks the lock without intentionally pulling the latch.
Unlatch
commands.unlatchInternally:
lockAction = 3Lock'n'Go
commands.lockNgoInternally:
lockAction = 4Lock'n'Go with unlatch
commands.lockNgoUnlatchInternally:
lockAction = 5Full lock
commands.fullLockInternally:
lockAction = 6Keypad and fingerprint
The adapter processes lockActionEvent messages.
Example:
3,0,195249,8193,2Fields:
action
trigger
authId
codeId
sourceKeypad source:
0 = Back button
1 = Keypad code
2 = FingerprintRelevant ioBroker states:
keypad.lastType
keypad.lastUser
keypad.lastTimestampConfigurable keypad users
Users can map a Nuki codeId to a custom name in the adapter configuration.
Example:
Code ID Name
8193 User 1
8192 User 2The names are not hard-coded into the adapter.
Resolution priority:
1. Configured Code-ID mapping
2. Nuki Web API authorization name
3. Technical fallbackActivity
activity.lastAction
activity.lastActionText
activity.lastUser
activity.lastDateAdvanced data
advanced.authId
advanced.codeId
advanced.source
advanced.trigger
advanced.smartlockId
advanced.serverState
advanced.authorizationsRaw MQTT data
Unknown MQTT topics are stored below:
rawThis helps with debugging and future topic support.
Nuki Web API
The Web API integration is optional.
MQTT remains the primary local communication method.
The Web API can provide additional information such as:
- authorization names
- activity logs
- cloud-side device information
The adapter continues operating locally if the Web API is unavailable.
Dynamic icons
Available states:
status.iconState
status.iconPossible values:
locked
unlocked
door_open
door_closed
charging
pairing
unknownIcon files are stored under:
admin/icons/Nuki_Vis/Files:
nuki_locked.png
nuki_unlocked.png
nuki_door_open.png
nuki_door_closed.png
nuki_charging.png
nuki_pairing.png
nuki_unknown.pngExample icon path:
/adapter/nuki-local/icons/Nuki_Vis/nuki_locked.pngSecurity
Use a strong MQTT password.
Do not expose the integrated MQTT broker directly to the public internet.
Treat the Nuki Web API token as a secret.
Keypad PIN codes are intentionally not stored by the adapter.
Troubleshooting
Show adapter logs:
iobroker logs nuki-local.0 --watchUpload adapter files:
iobroker upload nuki-localRestart:
iobroker restart nuki-local.0Version
Current development version:
0.1.0Changelog
0.1.0
Initial functional development version.
- Integrated MQTT broker
- MQTT authentication
- LevelDB persistence
- Retained state restore
- Smart Lock status
- Door sensor support
- Battery information
- Explicit lock actions
- Keypad code detection
- Fingerprint detection
- Configurable Code-ID user mapping
- Optional Nuki Web API
- Activity information
- Dynamic status icons
License
MIT License
Copyright (c) 2026 helfi9999
