Nuki Pro 5: Installation mit CH-Zylinder

Nuki Pro 5: Installation mit CH-Zylinder

Vorwort
Im Rahmen unseres Projektes Mosliboss SmartHome und in Anbetracht der Tatsache, dass die Kinder gelegentlich das Haus verlassen, ohne die Haustüre abzuschliessen, wurden Überlegungen in Richtung SmartLock gemacht und nach etlichen Recherchestunden fiel unsere Wahl auf ein Nuki Smart Lock Pro (5. Gen).
Gestaunt haben wir ob der Geschwindigkeit der Lieferung: Am Sonntag, 25. Mai 2025 wurde die Bestellung online aufgegeben und am Dienstag, 27. Mai 2025 lag das Paket bereits im Briefkasten!! Seltsamerweise wurde im Nuki-Club-Account die Bestellung bis am 27. Mai 2025 stets nur als 'In Bearbeitung' angezeigt und entsprechend gross war die Überraschung, als das Paket bereits weniger als 48 Stunden nach der Bestellung in Graz/Österreich bei uns in der Schweiz angekommen war...
Zwar ist dieses Schloss für EU-Zylinder offiziell nur bedingt geeignet für Schweizer Rund-Schloss-Zylinder, doch im folgenden Abschnitt wird erklärt, wie dies bei uns recht einfach erfolgreich realisiert worden ist.

Installation
Wir haben ein Keso2000-Schloss mit einem Zylinder, der einen Durchmesser von 22mm aufweist und auf der Türinnenseite vom Schild ca. 14mm übersteht. Die mit dem Nuki mitgelieferte Klebe-Platte weist eine Dicke von ca. 4mm auf. Somit benötigen wir ein Zwischenstück von ca. 10mm Dicke, damit das Zylinderende ungefähr bündig mit der Oberfläche der Klebeplatte ist. Da wir heute im Jumbo keine passende Scheibe in Metall oder Kunststoff gefunden haben, kauften wir ein kleines Stück beschichtete Spanplatte mit 10mm Dicke. Davon wurde ein 5x5 cm grosses Stück ausgesägt und in der Mitte mittels einem 25mm-Forstnerbohrer ein Loch gebohrt. Das Türschild und das Holzstück wurden jeweils mittels Brennsprit gereinigt und das Holzstück mittels dem sehr gut klebenden und dünnen "tesa Powerbond" (beidseitig klebend, transparent, 5mx19mm) verbunden, so, dass der Zylinder schön mittig im Loch platziert ist (Foto 1).
     
Anschliessend wurde die gelieferte selbstklebende Nuki-Platte mit der aussen befindlichen Kerbe nach oben auf das (mit Brennsprit gereinigte) Holzstück geklebt (Foto 2) und schliesslich das Nuki Pro gemäss Anleitung darauf aufgesteckt, leicht im Uhrzeigersinn gedreht und fixiert (Fotos 3 und 4, jeweils unten mit dem magnetischen Ladekabel angeschlossen).
Mit diesem Vorgehen konnte das Nuki Pro 5 problemlos in Betrieb genommen werden!

Voraussetzungen zur Steuerung des Nuki via API
Um das Nuki Pro mittels API von einem Linux-Rechner anzusteuern, muss zuerst ein Konto auf dem Nukiweb https://web.nuki.io eingerichtet werden. Dort kann unter API ein API-Token generiert werden. Dieser sehr lange String vom Typ (hier fiktiv) 87f095d9c2b390dbf5dbfd1e457848bc4bc4665315a34848 sollte irgendwo sicher abgespeichert werden, solange er noch angezeigt wird. Das Nuki-Gerät muss unbedingt via Nuki-App (Einstellungen - Funktionen&Konfiguration - NukiWeb) in der Nuki Web API angemeldet werden. Anschliessend muss noch der hexadezimale SmartLock-ID bestimmt werden. Dazu geht man in der Nuki-App zuerst in folgendes Menu:

Einstellungen - Funktionen&Konfiguration - Allgemein -
Dort findet man die Geräte ID: AB123CD
Für die API wird jedoch die dezimale ID benötigt, wobei (nach Recherchen im Web) folgendes gilt:
- Für Smart Locks Gen 1 und Gen 2 gilt ein Prefix=0
- Für Smart Locks Gen 3 und Gen 4 gilt ein Prefix=4
- Für Smart Locks Go/Pro/Ultra gilt ein Prefix=5
In unserem Fall (Pro) wird dem GeräteID somit eine '5' vorangestellt und damit der Hex-Wert zu 5AB123CD . Dieser lässt sich nun z.B. mittels dem Hexadecimal to Decimal converter in einen dezimalen GeräteID mit dem Wert 1521558477 umrechnen; nein, dieses Beispiel ist natürlich nicht unsere GeräteID... :-)

API-Befehle
In diesem Abschnitt sollen einige Beispiele von API-Steuer-Befehlen erklärt werden.

API_token="87f095d9c2b390dbf5dbfd1e457848bc4bc4665315a34848"
Nuki_ID="1521558477"
# Status abfragen:
curl --no-sessionid -X GET \
    --header "Accept: application/json" \
    --header "Authorization: Bearer $API_token" \
    "https://api.nuki.io/smartlock" \
    --output out.out 2>/dev/null

Falls der Output im File out.out eine Fehlermeldung der Form
{"detailMessage":"Your access token is not authorized","stackTrace":[],"suppressedExceptions":[]}
enthält, ist irgendetwas schief gelaufen. Insbesondere ist es wichtig, dass bei den curl-Parametern Gänsefüsschen (") und nicht Apostrophe (') verwendet werden, weil letztere die Variablen wie $API_token und $Nuki_ID nicht in die wahren Werte übersetzen!

Um nun z.B. den Status von zwei Nukis in entsprechenden Files zu listen und einige kritische Parameter in der Konsole darzustellen, kann folgendes Script namens get_nuki_status.sh verwendet werden:

#!/bin/bash
# get_nuki_status.sh 28May2025/uk
OUTFILE="out.out"
API_token="87f095d9c2b390dbf5dbfd1e457848bc4bc4665315a34848"
Nuki1="1521558477"
Nuki2="1521558488"

# Status abfragen
curl --no-sessionid -X GET \
    -H "Accept: application/json" \
    -H "Authorization: Bearer $API_token" \
    "https://api.nuki.io/smartlock" \
    --output $OUTFILE 2>/dev/null
if test $? -ne 0 ; then
   echo "Fehler bei der curl-Abfrage - exit!"
   exit
fi

# Die Daten der beiden Nukis extrahieren und jeweils in eine Datei speichern
jq '.[0]' "$OUTFILE" > Nuki1.status
jq '.[1]' "$OUTFILE" > Nuki2.status

#echo "Statusdateien erstellt: Nuki1.status und Nuki2.status"

# Kritische Parameter:
tuerstatus=$(jq '.[0].state.doorState' "$OUTFILE")
schlossstatus=$(jq '.[0].state.state' "$OUTFILE")
batteriestatus=$(jq '.[0].state.batteryCharge' "$OUTFILE")
echo "Nuki1:"
echo "Tuere: $tuerstatus   (2: geschlossen, 3: offen)"
echo "Schloss: $schlossstatus (1: zugesperrt, 3: entsperrt)"
echo "Akku: $batteriestatus%"
tuerstatus=$(jq '.[1].state.doorState' "$OUTFILE")
schlossstatus=$(jq '.[1].state.state' "$OUTFILE")
batteriestatus=$(jq '.[1].state.batteryCharge' "$OUTFILE")
echo " "
echo "Nuki2:"
echo "Tuere: $tuerstatus   (2: geschlossen, 3: offen)"
echo "Schloss: $schlossstatus (1: zugesperrt, 3: entsperrt)"
echo "Akku: $batteriestatus%"
#

Dies ergibt dann z.B. folgenden Output:

Nuki1:
Tuere: 2   (2: geschlossen, 3: offen)
Schloss: 1 (1: zugesperrt, 3: entsperrt)
Akku: 100%
 
Nuki2:
Tuere: 2   (2: geschlossen, 3: offen)
Schloss: 3 (1: zugesperrt, 3: entsperrt)
Akku: 80%
und die gesamten Statusinformationen der Nukis sind in recht gut lesbarer Form in den Files Nuki1.status und Nuki2.status enthalten.

~~~~~~~~~ Wird demnächst fortgesetzt ~~~~~~~~~~~~~~~~~


Last update: 12Jny2025 - Created: 27May2025/uk