Zum Inhalt

PS Locks secured by BlueID

PS Locks secured by BlueID

Dieses Dokument soll einen Überblick darüber geben, wie BlueID an sich funktioniert, wie das BlueID Paket für die Nordic nRF52 Plattform zu kompilieren und benutzen ist und schließlich, welche Funktionen für den Port auf die Schlösser von PS Lock noch integriert werden müssen.

Zugangsdaten

Ihre Zugangsdaten werden Ihnen separat per e-Mail mitgeteilt.

Benötigte externe Pakete
Ablegen der Initialisierungs- und Customizationdaten

Bevor ein Schloss BlueID-fähig wird, braucht es seine Identität. Diese wird durch den Initializer generiert.

Der Initializer muss wie folgt aufgerufen werden, um sowohl Bluetooth als auch NFC zu aktivieren:

java sdkforc-initializer-4.0.jar -a XL86VQKFSQV5ZV05IU4X -e PROD --channel-btlespp --channel-nfcpki

Dies generiert mehrere Artefakte, unter anderem ein .info.json File, die rein informativ ist, sowie ein .bcf File, das im Flash des nRF52 abgelegt werden muss.

Die komplette Dokumentation für den Initializer finden Sie unter hier

Wir bieten im Lieferumfang drei verschiedene CustomizationData Profile an, die sich hauptsächlich im Advertising Interval und damit im Stromverbrauch unterscheiden. Sie finden Sie im Verzeichnis config.

Geflasht werden die Daten mit dem Buildtool SCons.

Typische SCons Aufrufe
Projekt mit Debuginformationen bauen

scons --dbg

Logging

Standardmäßig loggt die Implementierung per UART. Um stattdessen RTT zu verwenden reicht der folgende Switch:

scons --dbg --rtt-logger

Die Logausgaben lassen sich etwa mit Segger Ozone betrachten oder man startet den JLink Server mittels

scons jlinkserver

und sieht anschließend die Logausgaben mittels

scons rtt

Bauen und Flashen

Um alle Daten mit einem Aufruf zu flashen, starten Sie SCons wie folgt:

scons --dbg --rtt-logger --init-bcf=LockServerConfiguration_XXXX.bcf --cust-bcf=config/CustomizationData_highSpeedProfile.bcf flash_all

Die Initialisierungs- und Customizationdaten müssen allerdings nur einmal pro Schloss abgelegt werden. Soll nur die Firmware geflasht werden reicht

scons --dbg --rtt-logger flash

Implementierung
Testen der blanken nRF52-Implementierung

Sind alle notwendigen Daten auf das Schloss geflasht, sollte der BlueID nRF52 Code direkt auf dem Schloss lauffähig sein.

Nach der Erstellung der Initialisierungsdaten sollte das Schloss im Bereich "Schlösser" unter access.blueid.net mit seiner Zylinder ID gelistet werden. Ist dies nicht der Fall, muss mit Klick auf das Icon rechts oben die Synchronisierung angestoßen werden.

Nun können Sie einen neuen Benutzer anlegen (wichtig: es ist am einfachsten, wenn die Mails der angegebenen E-Mail-Adresse auf dem Smartphone verfügbar ist) und eine neue Berechtigung für das Schloss erteilen.

Nach Installation der BlueID Keys App (Android, iOS) kann diese mit dem verschickten Link aktiviert werden.

Ist noch keine Uhrzeit auf einem Schloss gesetzt, wird die Uhrzeit auf den 1/1/2016 00:00 UTC gesetzt und verbleibt auch dort. D.h., auch das Startdatum der Berechtigung muss vor dieser Zeit sein, sonst wird diese abgewiesen.

Zur Administration der Schlösser gibt es unsere BlueID Lock Admin App (nur iOS), mit der Sie etwa die Zeit setzen können, aber auch Schlösser öffnen können.

Sobald Sie die NFC Karten von uns erhalten haben, können Sie sie mit der BlueID Token Writer App (nur Android) beschreiben.

Zu implementierende Schnittstellen

Hauptsächlich gibt es die Provider für NFC und Systeminformationen zu implementieren.

vcs_deps/blueid_sdk/src/main/include/blueid/provider/NfcProvider.h
Implementierung der NFC-Schnittstelle. Wird in main.c verwendet

In vcs_deps/blueid_sdk/src/main/c/modules/nfc gibt es Beispielimplementierungen für den PN512 und den PN532.

Die NFC-Implementierung kann entweder mit passenden Karten von BlueID getestet werden, die wir Ihnen per Post zuschicken oder mit der Keys App und einem Android Smartphone.

vcs_deps/blueid_sdk/src/main/include/blueid/provider/SystemInformationProvider.h
Liefert Informationen über Systemeigenschaften wie etwa den Batteriestand.

In vcs_deps/blueid_sdk/src/main/c/blueid/provider/nRF52SystemProvider.c ist das meiste schon implementiert.

Persistenz der Daten, Uhrzeit, Crypto, etc. ist schon fertig implementiert für nRF52 und sollte out-of-the-box verwendbar sein.

Zu implementierende Kommandos

BlueID arbeitet auf Kommandobasis. Jede Interaktion mit dem Schloss bedeutet eine Kommandoausführung.

Die wichtigsten zu implementierenden Kommandos (da sie eine Interaktion mit dem Motor darstellen) sind:

  • tokn: Öffnet das Schloss für 5s (token)
  • enof: Öffnet das Schloss permanent (enable office mode)
  • diof: Schließt das Schloss permanent (disable office mode)

Der Schlossstatus von enof/diof muss nach einem Reset erhalten bleiben.

Signalling

Das Signalling für den Benutzer mittels Buzzer und LEDs soll ähnlich wie U&Z gestaltet werden. Bisher haben wir 1x grün blinken bei erfolgreicher Kommandoausführung, im Fehlerfall 1x rot blinken. Bei NFC Karten ist es sinnvoll zusätzlich noch kurz zu piepsen.

Generell ist das Signalling aber natürlich stark davon abhängig, welche Möglichkeiten das jeweilige Schloss bietet.

Uhrzeit

Eine zentrale Voraussetzung für ein funktionierendes Berechtigungsmanagement ist eine Uhr, die möglichst präzise läuft. Die Abweichung soll höchstens 30 Minuten pro Jahr betragen. Sofern vorhanden kann dafür ein externer Quartz verwendet werden und ist so auch im geleiferten Projekt konfiguriert. Andernfalls muss auf den internen Quartz zurückgegriffen werden.

Ändern des Namens in DFU mode

Befindet sich das Schloss im DFU Modus, dann advertised es einen Hardware Identifier, der von unserer Lock Admin App verwendet wird um das passende Firmwareupdate auszuwählen.

Deshalb muss dieser Wert so eindeutig sein, dass kein inkompatibles Update aufgespielt wird.

Der Wert ist im Buildscript SConscriptBootloader im Feld NRF_DFU_HW_VERSION definiert.

Ausstellen anderer Kommandos

Mit access.blueid.net können nur BLE und NFC Tokens für das Kommando 'tokn' ausgestellt werden. Um etwa Berechtigungen "enof" oder "diof" verwenden zu können, benötigt es etwas Aufwand.

Denn beliebige Kommandos kann man nicht mit der BlueID Keys App ausführen, sondern nur mit der BlueID SDK App, die ebenfalls in den App Stores verfügbar ist.

Zum Start benötigt die App den eingangs erwähnten IDaaS API Key und die PROD Umgebung. Nach erfolgreicher Initialisierung erhält man eine Mobile Device ID.

Nun loggt man sich am Token Creator mit IDaaS Operator Username und Password ein.

Dort gibt man nun die Mobile Device ID und die Secured Object ID (aka Zylinder ID) ein, drückt auf "get channels" und wählt dann bei Channels "btlespp" aus.

Jetzt braucht man noch ein Start- und Enddatum für die Berechtigung, fügt die benötigten Kommandos hinzu und klickt auf "Create Token NOW".

Als letzten Schritt muss man nun noch die BlueID SDK App synchronisieren und kann anschließend die Kommandos ausführen.