Startseite>Intelligentes Schließsystem mithilfe der Thingworx-IoT-Plattform
Aus Raspberry Pi Geek 08/2018

Intelligentes Schließsystem mithilfe der Thingworx-IoT-Plattform

© Sergey Eremin, 123RF

Türwächter

Kevin Haves

Der RasPi beteiligt sich am Internet der Dinge und wacht als smartes Schließsystem autonom über den Zugang zum Eigentum.

Den Einkauf für die komplette Woche haben Sie soeben erledigt, und jetzt stehen Sie mit schwer bepackten Tüten vor Ihrer Tür. Niemand ist zu Hause, beim Griff nach dem Schlüssel fällt Ihnen eine Tüte aus der Hand und der Inhalt verteilt sich am Boden. Das muss nicht sein: Eine intelligente Tür hilft, solche Missgeschicke zu vermeiden, indem sie Bewohner erkennt und ihnen selbstständig entriegelt.

Auf dem Markt offerieren bislang nur wenige Anbieter solche Systeme, zu Kosten ab rund 1000 Euro aufwärts. Mit etwas Eigeninitiative und einem Raspberry Pi 3 bauen Sie Ihr eigenes intelligentes Schließsystem mit Gesichtserkennung zu einem deutlich niedrigeren Kostenpunkt auf.

Um das System autonom zu gestalten, lagern Sie dessen Logik in eine IoT-Plattform aus. Sie steuert ereignisgetrieben die jeweiligen Endgeräte und deren Peripherie. Die Firma PTC benutzt innerhalb ihrer Plattform eine eigene Terminologie, die in diesem Artikel zum Einsatz kommt. Auf der entsprechenden Github-Seite zum Projekt finden Sie den kommentierten Quellcode für Server [1] und Client [2] sowie alle weiteren Dateien für den Nachbau.

Prototyp

Der Prototyp des Schlosses beinhaltet verschiedene Sensoren und Aktoren (Abbildung 1). Dabei kommt kein elektrisches Schloss zum Einsatz, sondern lediglich eine Simulation. Dazu enthält das System eine Lichtschranke, die das Öffnen einer Tür nachempfindet. Ein Neopixel-LED von Adafruit zeigt den Zustand des Schlosses an: grün für eine geöffnete oder rot für eine geschlossene virtuelle Tür.

Abbildung 1: Der Client-Aufbau ist auf einem Prototyping-HAT verlötet. Die freien Pins über dem Pegelwandler bedienen das I»2«C-Display. Ein Schaltplan für den Client findet sich im Github-Projekt.

Abbildung 1: Der Client-Aufbau ist auf einem Prototyping-HAT verlötet. Die freien Pins über dem Pegelwandler bedienen das I»2«C-Display. Ein Schaltplan für den Client findet sich im Github-Projekt.

Ein dritter Zustand zeigt an, dass das System gerade arbeitet und demnächst ein Ergebnis liefert. Für diesen sogenannten Pending-Zustand schaltet die LED auf Blau. Statt der LED ließen sich auch Aktoren ansteuern, wie eben Schlösser oder Motoren. Dafür bearbeiten Sie einfach den entsprechenden Teil des Quellcodes.

Zusätzlich verwendet das System den Ultraschall-Abstandssensor HC-SR04, um zu erkennen, ob jemand vor dem System steht. Über ein LC-Display mit 16 x 2 Segmenten erhält der Benutzer ein visuelles Feedback. Zusätzlich bekommt der RasPi eine Kamera, die Sie über den entsprechenden Port anschließen.

Da Teile der Peripherie 5 Volt benötigen, gesellt sich zusätzlich ein Pegelwandler zum Aufbau, um die Teile entsprechend zu versorgen und die GPIOs des RasPi nicht zu beschädigen. Die Tabelle “Bauteile IoT-Client” nennt alle Komponenten und deren Preis.

Bauteile IoT-Client

Bauteil

Preis

Prototyping-HAT(1)

4,95 Euro

16×2-I2C-LCD

8,40 Euro

Abstandssensor

3,65 Euro

Neopixel-LED(1)

1 Euro

Lichtschranke

1,50 Euro

Pegelwandler(1)

4,70 Euro

Widerstand 180 Ohm

0,10 Euro

Widerstand 1,2 kOhm

0,10 Euro

(1) Bezugsquelle: Adafruit

IoT-Plattform Thingworx

Die genutzte IoT-Cloud-Plattform gehört zur Firma PTC [3]. Sie ermöglicht es, eine Vielzahl an Geräten – im Kontext der Plattform heißen Sie Things – zu verbinden oder virtuell abzubilden. So lassen sich alle Endgeräte komfortabel an einer Stelle verwalten. Außerdem sammeln Sie hier Daten, speichern sie ab, zeigen sie in einer grafischen Oberfläche an oder lösen damit Aktionen innerhalb der Plattform aus.

Zur Kommunikation mit der Plattform stehen eine REST-API (siehe Kasten “HTTP und REST”) und Entwicklungswerkzeuge (englisch: Software Development Kits, kurz SDKs) für verschiedene Plattformen bereit, unter anderem für C, Java, .NET, Android und iOS [4]. In diesem Projekt kommen die REST-API und das Java-SDK zum Einsatz.

HTTP und REST

Als Basis für die Kommunikation im Internet dient HTTP, das nach dem Anfrage-Antwort-Verfahren arbeitet: Der Client sendet einen Request an den Server, der gibt als Reaktion eine Response zurück. Als Client dient etwa ein Webbrowser, der bei einem Server eine Webseite anfragt. Dazu sendet er einen Request für eine bestimmte Seite an den Server, der Server gibt die Page als Response zurück.

Jede Nachricht, ob Request oder Response, unterteilt sich in den Nachrichtenkopf (Header) und den Rumpf (Body). Letzterer enthält die angefragten Nutzdaten, in diesem Fall den Quellcode der Webseite. Im Header finden sich zusätzliche Informationen über den Body, damit der Webbrowser diesen richtig interpretiert.

Representational State Transfer (REST) stellt ein Muster für verteilte Anwendungen dar. Im größten verteilten System, dem WWW, dient REST als ein Modell, wie Clients mittels HTTP kommunizieren. REST spezifiziert mehrere HTTP-Befehle für bestimmte Aufgaben. So weiß jeder Teilnehmer, was er bei einer Anfrage zu tun hat. Mit dem Befehl GET etwa fragen Sie Ressourcen von einem Server ab, mit dem Befehl PUT legen Sie eine neue Ressource an.

Für den Aufruf der API benötigen Sie eine entsprechende Gegenstelle im Client. Die Thingworx-Schnittstelle unterstützt die HTTP-Requests POST, GET, PUT und DELETE. Die Plattform orientiert sich hier an der Konvention, mit POST eine neue Entität anzulegen und mit PUT einen Wert zu ändern. Mit GET fragen Sie Properties von Things ab, und mit DELETE löschen Sie Things aus dem Framework. Der POST-Request dient zusätzlich zum Ausführen von Services.

Um die verschiedenen Funktionen aufzurufen, benötigen Sie neben dem richtigen Request die entsprechende URL. Deren Aufbau folgt bestimmten Regeln (Listing 1). Mit einem Prüfwerkzeug wie etwa Postman [5] testen Sie bei Bedarf diese Schnittstelle. Abbildung 2 zeigt einen entsprechenden Aufruf mit GET in Postman.

Listing 1

 

https://Host:Port/Thingworx/Entity-Collection/Entity/Characteristic-Collection/Characteristic?Parameter
Abbildung 2: Nach dem Aufruf des Zustands eines Clients erhalten Sie neben weiteren Beschreibungen des Parameters den Status »Closed«.

Abbildung 2: Nach dem Aufruf des Zustands eines Clients erhalten Sie neben weiteren Beschreibungen des Parameters den Status »Closed«.

Die REST-API bietet den Vorteil einer simplen Implementation eines entsprechenden Clients. Alle gängigen Programmiersprachen stellen mittlerweile entsprechende Funktionen und Klassen bereit, um einen REST-Client in wenigen Zeilen Code zu realisieren.

DIESEN ARTIKEL ALS PDF KAUFEN
EXPRESS-KAUF ALS PDFUmfang: 6 HeftseitenPreis €0,99
(inkl. 19% MwSt.)
€0,99 – Kaufen
RASPBERRY PI GEEK KAUFEN
EINZELNE AUSGABE Print-Ausgaben Digitale Ausgaben
ABONNEMENTS Print-Abos Digitales Abo
TABLET & SMARTPHONE APPS
Deutschland