Intelligentes Schließsystem mithilfe der Thingworx-IoT-Plattform

© Sergey Eremin, 123RF

Türwächter

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 I2C-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

16x2-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.

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.

Der Nachteil: Die REST-API bietet keinen direkten Rückkanal. Zwar lassen sich Änderungen auf dem Client der Plattform mitteilen, aber nicht Änderungen in der Plattform an die Things publizieren. Diese müssen also regelmäßig den Status abfragen, um auf einem aktuellen Stand zu bleiben (Polling).

Für Endgeräte, die über simple Skripte etwa lediglich Sensordaten in die Cloud schreiben, eignet sich REST gut. Wollen Sie hingegen den Client in der Cloud abbilden und soll er autonom mit der Plattform kommunizieren und sich synchronisieren, greifen Sie besser zu einem der mächtigeren SDKs. Hier finden Sie sämtliche Funktionen der Plattform in Quellcode abgebildet. Zusätzlich lassen sich Endgeräte teilweise oder komplett in der Plattform abbilden.

Aufrufe auf das Abbild in der Plattform reicht diese an das reale Endgerät weiter, die Ausführung geschieht lokal auf dem Endgerät und nicht in der Plattform. Hierfür benötigen Sie spezielle Anmerkungen im Quellcode. Listing 2 und Listing 3 zeigen Beispiele für ein Property (die Anzahl der verbundenen Clients) und einen Service (die Abfrage der verbundenen Clients) des Servers.

Listing 2

 

@ThingworxPropertyDefinitions(properties = {
  @ThingworxPropertyDefinition(
    name="ClientsConnected",
    description="Number of connected Clients",
    baseType="NUMBER",
    aspects={"dataChangeType:VALUE",
             "dataChangeThreshold:0",
             "cacheTime:0",
             "isPersistent:FALSE",
             "isReadOnly:FALSE",
             "pushType:ALWAYS",
             "defaultValue:0"})
})

Listing 3

 

@ThingworxServiceDefinition(
  name="getConnectedClients",
  description="Returns a Infotable of all connected clients."
)
@ThingworxServiceResult(
  name="result",
  description="List of connected Clients.",
  baseType="INFOTABLE"
)
public InfoTable getConnectedClients(){
  return ConnectedClientsInfo;
}

Zusätzlich ermöglicht das SDK einen Datenabgleich über das komplette System. Änderungen von Werten in der Plattform oder auf einem der Endgeräte werden automatisch synchronisiert, über eben jenen Rückkanal, der der REST-API fehlt. Das ermöglicht eine umfangreiche Kommunikation mit dem Server und dadurch vielfältige Funktionen auf dem entsprechenden Client. Der Nachteil: Die Komplexität des SDKs verlangt, dass Sie die Vorgaben genau erfüllen. Thingworx bietet innerhalb einer Testphase eine 30-Tage-Probeversion des Entwicklerkits, für die Sie sich lediglich im Entwicklerbereich der Webseite registrieren müssen [4].

Diesen Artikel als PDF kaufen

Express-Kauf als PDF

Umfang: 6 Heftseiten

Preis € 0,99
(inkl. 19% MwSt.)

Raspberry Pi Geek kaufen

Einzelne Ausgabe
 
Abonnements
 
TABLET & SMARTPHONE APPS
Bald erhältlich
Get it on Google Play

Deutschland

Ähnliche Artikel

Aktuelle Ausgabe

10/2019
Raspberry Pi 4B

Diese Ausgabe als PDF kaufen

Preis € 9,99
(inkl. 19% MwSt.)

Stellenmarkt

Neuigkeiten

  • Sonnige Zeiten

    UV-Strahlung ist für das menschliche Auge unsichtbar, was sie umso gefährlicher macht. Die Höhe der tatsächlichen Belastung verrät Ihnen das Selbstbauprojekt UV-Sensor.

  • Gut verpackt

    Für das Ansteuern kleiner Displays gibt es keine Programme von der Stange. Mit Python und einer Pygame-Bibliothek erstellen Sie trotzdem im Handumdrehen Anwendungen.

  • Macro-Mini-Micro-Bit

    Was dem Raspberry Pi für die Computerwelt gelungen ist, versucht der BBC Micro:bit für Mikrocontroller zu wiederholen. Das für Schüler entwickelte Kit hilft beim Einstieg in die hardwarenahe Programmierung.

  • Vorhang auf

    Mit dem modernen Video-Codec HEVC (H.265) erstellte Filme spielen bisherige RasPi-Modelle oft nur ruckelnd ab. Wir testen, ob der neue Raspberry Pi 4B das besser kann.

  • Überraschung!

    Eine optimierte Architektur und mehr RAM beschleunigen den RasPi 4B deutlich. Wir prüfen, wie gut sich der Neuling als Desktop-Rechner schlägt.

  • Durchgestartet

    Ein Stresstest zeigt, wie sich der neue Raspberry Pi 4 Modell B gegenüber den älteren Modellen abhebt.

  • Vierte Generation

    Eine schnellere CPU, USB 3.0 und Gigabit-Ethernet sind nur die Highlights des Raspberry Pi 4B: Das Board bringt viele weitere Neuerungen mit.

  • Tiefenmesser

    Um die Pumpe in einem Brunnenschacht möglichst genau zu positionieren, brauchen Sie dessen Tiefe. Die ermitteln Sie mithilfe eines präzisen Messgeräts aus einem Luftdrucksensor und einem Mikrocontroller.

  • Faktencheck

    Das via DVB-T2 ausgestrahlte Digital-TV liefert Bilder in HD-Qualität. Der dabei eingesetzte H.265-Standard überfordert allerdings kleine Mini-Rechner wie den Raspberry Pi – oder geht es doch?

  • Zugriff von außen

    React Native erlaubt es, Apps mit wenigen Zeilen Code zu programmieren. Mit einem entsprechenden Server sprechen Sie so den RasPi vom Smartphone aus an.