Configuration example for Nuki 3.0 Pro Lock working with the MQTT API (no bridge)

got it :slight_smile: thank you, for your help

for other, who may be interested: here are my steps

//1. - configure NUKI Smartlock without NUKI bridge
install and configure Smartlock
activate MQTT
lookup ID for MQTT-channel (on your mqtt broker)
→ in my case on a RasPi
mosquitto_sub -v -h localhost -p 1883 -t 'nuki/#'
initiate a publish via APP or just press the button on your smartlock
mqtt result:

nuki/12A345B5/timestamp

→ 12A345B5 is your ID

//2. - create Thing (Web-UI)
openhab → Things → + → MQTT-Binding → Generic MQTT Thing

Unique ID:		<myNUKIlock>
Identifier:     mqtt:topic:<myNUKIlock>
Label:			<myNUKIlock>
Bridge:			MQTT Connection to local MQTT Broker (has to be configured already)

…Create Thing

//3. - configure Thing - set Channels (Web-UI)
openhab → Things → myNUKIlock → Code
paste following code:

channels:
  - id: connected
    channelTypeUID: mqtt:switch
    label: connected
    description: null
    configuration:
      stateTopic: nuki/12A345B5/connected
      off: "false"
      on: "true"
  - id: devicetype
    channelTypeUID: mqtt:number
    label: devicetype
    description: null
    configuration:
      stateTopic: nuki/12A345B5/deviceType
  - id: name
    channelTypeUID: mqtt:string
    label: name
    description: null
    configuration:
      stateTopic: nuki/12A345B5/name
  - id: serverconnected
    channelTypeUID: mqtt:switch
    label: serverconnected
    description: null
    configuration:
      stateTopic: nuki/12A345B5/serverConnected
      off: "false"
      on: "true"
  - id: state
    channelTypeUID: mqtt:number
    label: state
    description: null
    configuration:
      stateTopic: nuki/12A345B5/state
  - id: mode
    channelTypeUID: mqtt:number
    label: mode
    description: null
    configuration:
      stateTopic: nuki/12A345B5/mode
  - id: battcritic
    channelTypeUID: mqtt:switch
    label: battcritic
    description: null
    configuration:
      stateTopic: nuki/12A345B5/batteryCritical
      off: "false"
      on: "true"
  - id: battcharge
    channelTypeUID: mqtt:number
    label: battcharge
    description: null
    configuration:
      stateTopic: nuki/12A345B5/batteryChargeState
  - id: battcharging
    channelTypeUID: mqtt:switch
    label: battcharging
    description: null
    configuration:
      stateTopic: nuki/12A345B5/batteryCharging
      off: "false"
      on: "true"
  - id: lastseen
    channelTypeUID: mqtt:datetime
    label: lastseen
    description: null
    configuration:
      stateTopic: nuki/12A345B5/timestamp
  - id: lock
    channelTypeUID: mqtt:switch
    label: lock
    description: null
    configuration:
      commandTopic: nuki/12A345B5/lock
      off: "false"
      on: "true"
  - id: unlock
    channelTypeUID: mqtt:switch
    label: unlock
    description: null
    configuration:
      commandTopic: nuki/12A345B5/unlock
      off: "false"
      on: "true"
  - id: lockaction
    channelTypeUID: mqtt:string
    label: lockaction
    description: null
    configuration:
      commandTopic: nuki/12A345B5/lockAction
  - id: firmware
    channelTypeUID: mqtt:string
    label: firmware
    description: null
    configuration:
      stateTopic: nuki/12A345B5/firmware
  - id: actionevent
    channelTypeUID: mqtt:string
    label: actionevent
    description: null
    configuration:
      stateTopic: nuki/12A345B5/lockActionEvent
  - id: doorsensor
    channelTypeUID: mqtt:number
    label: doorsensor
    description: null
    configuration:
      stateTopic: nuki/12A345B5/doorsensorState

replace 12A345B5 with your ID from step 1

//4. - generate items (Web-UI/VSC)
method1 (VSC):
create NUKI.items in VSC
paste following code

method2: (Web-UI)
openhab → Things → myNUKIlock → Channels → Add Points to Model → Expert Mode
paste following code

Group    <myNUKIlock>                 "<myNUKIlock>"
Switch   <myNUKIlock>_connected       "connected"         (<myNUKIlock>) ["Point"]  { channel="<mqtt:topic:yourMQTTbroker:myNUKIlockUID>:connected" }       
Number   <myNUKIlock>_devicetype      "devicetype"        (<myNUKIlock>) ["Point"]  { channel="<mqtt:topic:yourMQTTbroker:myNUKIlockUID>:devicetype" }      
String   <myNUKIlock>_name            "name"              (<myNUKIlock>) ["Point"]  { channel="<mqtt:topic:yourMQTTbroker:myNUKIlockUID>:name" }            
Switch   <myNUKIlock>_serverconnected "serverconnected"   (<myNUKIlock>) ["Point"]  { channel="<mqtt:topic:yourMQTTbroker:myNUKIlockUID>:serverconnected" } 
Number   <myNUKIlock>_state           "state"             (<myNUKIlock>) ["Point"]  { channel="<mqtt:topic:yourMQTTbroker:myNUKIlockUID>:state" ,stateDescription=" "[options="0=nicht kalibriert,1=Verriegelt,2=schließt auf,3=Entriegelt,4=schließt ab,5=Offen,6=lock'n'go,7=kann geöffnet werden,254=Motor blockiert,255=Undefiniert"]}
Number   <myNUKIlock>_mode            "mode"              (<myNUKIlock>) ["Point"]  { channel="<mqtt:topic:yourMQTTbroker:myNUKIlockUID>:mode" }            
Switch   <myNUKIlock>_battcritic      "battcritic"        (<myNUKIlock>) ["Point"]  { channel="<mqtt:topic:yourMQTTbroker:myNUKIlockUID>:battcritic" }      
Number   <myNUKIlock>_battcharge      "battcharge"        (<myNUKIlock>) ["Point"]  { channel="<mqtt:topic:yourMQTTbroker:myNUKIlockUID>:battcharge" }      
Switch   <myNUKIlock>_battcharging    "battcharging"      (<myNUKIlock>) ["Point"]  { channel="<mqtt:topic:yourMQTTbroker:myNUKIlockUID>:battcharging" }    
DateTime <myNUKIlock>_lastseen        "lastseen"          (<myNUKIlock>) ["Point"]  { channel="<mqtt:topic:yourMQTTbroker:myNUKIlockUID>:lastseen" }        
Switch   <myNUKIlock>_lock            "lock"              (<myNUKIlock>) ["Point"]  { channel="<mqtt:topic:yourMQTTbroker:myNUKIlockUID>:lock" }            
Switch   <myNUKIlock>_unlock          "unlock"            (<myNUKIlock>) ["Point"]  { channel="<mqtt:topic:yourMQTTbroker:myNUKIlockUID>:unlock" }          
String   <myNUKIlock>_lockaction      "lockaction"        (<myNUKIlock>) ["Point"]  { channel="<mqtt:topic:yourMQTTbroker:myNUKIlockUID>:lockaction" ,stateDescription=" "[options="1=aufschließen,2=abschließen,3=öffnen,4=lock'n'go,5=lock'n'go mit öffnen,6=2 x abschließen,NULL=unbekannt"]}      
String   <myNUKIlock>_firmware        "firmware"          (<myNUKIlock>) ["Point"]  { channel="<mqtt:topic:yourMQTTbroker:myNUKIlockUID>:firmware" }        
//String   <myNUKIlock>_actionevent     "actionevent"       (<myNUKIlock>) ["Point"]  { channel="<mqtt:topic:yourMQTTbroker:myNUKIlockUID>:actionevent" }     
//Number   <myNUKIlock>_doorsensor      "doorsensor"        (<myNUKIlock>) ["Point"]  { channel="<mqtt:topic:yourMQTTbroker:myNUKIlockUID>:doorsensor" }
maybe replace <myNUKIlock> with your desired Name
maybe replace <mqtt:topic:yourMQTTbroker:myNUKIlockUID> with UID/Identifier from thing created in step 2
maybe translate the German stateDescription

//5. - Button Example (Web-UI)
openhab → Pages → + → Add Label-Card

component: oh-label-card
config:
  action: options
  actionItem: <myNUKIlock>_lockaction
  item: <myNUKIlock>_state
  title: <myNUKIlock>