Für die einfache Integrationen vom Nuki Smart Lock in eine Smart Home Steuerung wird die Nuki Bridge (Affiliate-Link) benötigt. Sie ermöglicht zudem die Steuerung vom Nuki Smart Lock über das Nuki Web Portal (Browser), mittels Amazon Alexa oder aus der Ferne über die Nuki App (Smartphone).
Nuki Bridge API
In diesem Beitrag geht es hauptsächlich um die von der Nuki Bridge bereitgestellte API und die Integration in eine Smart Home Steuerung. Diese ermöglicht direkt mit einem oder mehreren Nuki Smart Lock(s) zu kommunizieren.
Die Nuki Bridge API (Externer Link) ist an sich sehr gut dokumentiert, ich habe die wichtigsten Infos und Befehle aber nochmal zusammengefasst.
HTTP Fehler 503
Wichtige Info vorab, die Kommunikation mit der Nuki Bridge über einen Browser wie Chrome etc. funktioniert nicht bzw. nur teilweise. Es wird empfohlen z. B. mit dem Linux Tool Curl zu arbeiten, dazu einfach mit curl -s "<URL>"
den Befehl versenden.
Token
Um Befehle an die Nuki Bridge zu senden, ist ein Token notwendig. Um diesen zu erhalten, ist es notwendig, die folgende URL zu öffnen und danach den Button an der Nuki Bridge zu drücken.
http://<Nuki Bridge IP>:8080/auth
In der Antwort steht dann der Token in Klartext. Dieser verändert sich nicht, außer bei einem Reset oder wenn dieser manuell geändert wurde.
{"success": true, "token": "aCCwWt1m9e93cwWT"}
Status
Den Status der Geräte, die an der Nuki Bridge angelernt sind, erhält man mit dem folgende Befehl.
http://<Nuki Bridge IP>:8080/list?token=aCCwWt1m9e93cwWT
Die Antwort enthält alle wichtigen Informationen zum Status des Nuki Smart Lock.
[
{
"deviceType":0,
"nukiId":375738769,
"name":"Haustür",
"lastKnownState":{
"mode":2,
"state":1,
"stateName":"locked",
"batteryCritical":false,
"timestamp":"2019-10-08T13:31:10+00:00"
}
},
{
"deviceType":0,
"nukiId":371942281,
"name":"HWR",
"lastKnownState":{
"mode":2,
"state":1,
"stateName":"locked",
"batteryCritical":false,
"timestamp":"2019-10-08T16:02:18+00:00"
}
}
]
Die Rückgabe sieht natürlich etwas chaotischer aus. Im Netz gibt es ein paar Webseiten wie z. B. dem JSON Formatter & Validator (Externer Link) auf der ihr schnell und einfach den JSON Code wie oben “hübsch” machen könnt.
Callbacks
Damit nicht ständig der Status abgefragt werden muss, gibt es sogenannte Callbacks. Bei einer Änderung sendet die Nuki Bridge den Status an eine definierte URL.
Um z. B. die Zieladresse http://192.168.1.123/nuki/api.php
einzutragen, muss der Befehl richtig formatiert sein.
http://<Nuki Bridge IP>:8080/callback/add?url=http%3A%2F%2F192.168.1.123%2Fnuki%2Fapi.php&token=aCCwWt1m9e93cwWT
Die bereits eingetragenen Adressen (maximal 3) erhält man mit folgendem Befehl.
http://<Nuki Bridge IP>:8080/callback/list?&token=aCCwWt1m9e93cwWT
Befehle
Befehle wie die Tür aufschließen sind natürlich auch möglich. In der API Dokumentation die oben verlinkt ist, stehen alle Befehle. Die Türfalle wird z. B. mit dem folgenden Befehl (action=3) zurückgezogen und damit die Tür geöffnet.
http://<Nuki Bridge IP>:8080/lockAction?nukiId=375738769&action=3&token=aCCwWt1m9e93cwWT
Loxone Miniserver
Das Senden von Befehlen über den Loxone Miniserver ist ganz leicht. Dazu einfach einen “Virtuellen Ausgang” mit der URL der Nuki Bridge
(http://<Nuki Bridge IP>:8080
) anlegen. Als “Virtueller Ausgang Befehl” werden dann nur noch die Befehle wie z. B. für das abschließen der Tür (/lockAction?nukiId=375738769&action=2&token=aCCwWt1m9e93cwWT
) eingetragen.
Ein “Virtueller HTTP Eingang” kann den Status vom Nuki Smart Lock abfragen. Das passiert aber nur zyklisch und deshalb habe ich mir eine PHP API geschrieben. Diese setzt den Callback der Nuki Bridge in Loxone Miniserver Befehle um. Bei Interesse kann ich den Code gerne in einem Beitrag vorstellen.
Hallo und vielen Dank für den interessanten Beitrag!
Gerne würde ich über die PHP API etwas mehr erfahren.
Auch gut zu wissen wäre, ob es möglich ist bei Entriegelung über den Fob oder Keypad gleichzeitig einen Befehl an Loxone zu schicken um die Alarmanlage zu deaktivieren!
Viele Grüße
Interesse 🙂
Setze zur Zeit die Homematic Antriebe mit angelöteter Fernbedienung ein, nicht so super toll, aber funktional…
Hallo Michael und Nico,
Spoileralarm! 🙂
Das Skript ist bereits über den folgenden Link zu finden. Ein Beitrag dazu folgt noch.
https://github.com/nikolaus-lueneburg/NukiBridgeCallback2Loxone
Viele Grüße
Stefan
Hi,
mit den abgelegten Befehlen musst du dir aber auch Gedanken machen, wie die sie vor externen Zugriff schützt.
Nicht dass sich nachher win Einbrecher mit Hacker-Kebntnissen über deinen Raspi o.ä. selbst die Tür öffnet.
Ansonsten Danke für deine sauber beschriebenen Artikel !
Hallo Chris,
danke für deinen Hinweis, die Daten aus dem Beispiel sind anonymisiert und entsprechen nicht meiner Installation. Auf dem Raspberry Pi ist der API-Token für die Nuki Bridge nicht abgelegt, dieser liegt nur auf dem Loxone Miniserver.
Viele Grüße
Stefan
Hi,
kann ich den HTTP Befehl zum öffnen beliebig oft senden? Bei mir hat es einmal geklappt, aber danach nicht mehr.
Gruß
Peter
Hallo Peter,
wenn du die Befehle ganz normal im Browser probiert hast, ist das wie kurz im Absatz “HTTP Fehler 503” erwähnt, leider nur sehr eingeschränkt bis gar nicht möglich. Über den Loxone Miniserver oder über cURL funktioniert es auch mehrfach hintereinander. Wie hast du es denn probiert?
Viele Grüße
Stefan