HCP IoT Raspberry Demo

iotdemo0

Im Jahr 2015 ist mit dem  Begriff IoT ein neuer IT Trend vermehrt aufgetaucht. Gartner zählt IoT als einen der 10 wichtigsten IT Trends des Jahres 2016:

http://www.gartner.com/newsroom/id/3143521

Ich habe dies zum Anlass genommen und wollte die in der HCP zur Verfügung gestellten Services im IoT Bereich einem Praxistest unterziehen. Um den neuen IoT Service der HCP zu testen habe ich meinen RaspberryPi als Sensor Datenlieferant umfunktioniert.

Hierzu gibt es unzählige Guides und unterschiedliche Sensoren auf die ich hier nicht genauer eingehen möchte. Für mein Beispiel habe ich jedenfalls einen DHT22 (Temperatur/ Luftfeuchtigkeit) von AdaFruit verwendet. Er soll seine Daten später zum IoT-Service der HCP schicken.

 

Einrichten der HCP

Zuerst benötigen wir einen Account auf der HCP Trial. Dieser kann via https://account.hanatrial.ondemand.com erstellt werden. Haben wir unsere Zugangsdaten erhalten so aktivieren wir zuerst im Menüpunkt Services den „Internet of Things Service“:

iotdemo1

Die HCP generiert nun ein Schema und auch eine Java Applikation welche wir im über den Menüpunkt Subscriptions(iotcockpit) sehen können und auch starten wollen. Im IoT Cockpit ist es nun ganz wichtig im Menüpunkt Roles den eigenen User zuzuweisen. Da es hier bei mir immer zur Verwirrung gekommen ist habe ich kurzerhand beide User assigned die in der HCP immer wieder auftauchen(also s-User und s-User+trial).

iotdemo2

Ist dies erledigt finden wir im Punkt Overview die Start-URL zu unserem IoT Cockpit.

iotdemo3

Mit einem Klick auf die URL starten wir nun das Cockpit.

Devicekonfiguration

Im Cockpit müssen wir nun unsere Devices konfigurieren, damit unser IoT Service auch mitbekommt welche Geräte Sensordaten schicken dürfen.
Dazu bekommen wir pro registriertem Device einen Token, doch dazu später mehr. Im Device Management sehen wir nun die 3 Kacheln:

  • Device Types
  • Message Types
  • Devices

In dieser Reihenfolge werden wir nun auch vorgehen um unser IoT zu konfigurieren.

Device Types

Zuerst legen wir mit einem Klick auf die Kachel „Device Types“ den Device Type an. Am unteren Ende findet man einen Button mit einem Plus. Hier muss man sonst eigentlich nur einen Namen vergeben.

Message Types

Nun weiter zum Message Type. Hier definieren wir eine Struktur wie die Daten geliefert werden sollen. Mit dem Plus am unteren Ende können wir nun einen neuen Namen auswählen und im Folgeschritt die Struktur definieren. In meinem Fall habe ich hier den Namen temperatur gewählt mit 2 Feldern, temperatur(Temperatur) und humidity(Luftfeuchtigkeit).

iotdemo4

Device

Auch hier beim Device haben wir wieder ein ähnliches vorgehen. Mit dem Plus unten legen wir das neue Device an und wählen unseren Namen gemeinsam mit der Device Type die wir im Schritt 1 angelegt haben.

Ist das Device angelegt bekommen wir in einem Popup einen OAuth token angezeigt.

In der Registerkarte Information sehen wir nun eine generierte Device ID, diese gemeinsam mit dem OAuth token aus dem Poup im Anlegeprozess zuvor brauchen wir in einem späteren Schritt. Deshalb bitte Beides notieren.

Geschafft unser Device ist nun eingerichtet!

Zurück im Overview starten wir nun die Kachel „Deploy Message Management Service“.

iotdemo5

Auf Deploy klicken, Popup bestätigen und die angezeigte URL klicken, damit wird das HCP Cockpit gestartet.

iotdemo6

Hier sehen wir nun im Overview beim Punkt State, dass der Service am Starten ist. Es kann sein, dass es bis zu 5 Minuten dauert bis der Status auf Grün und gestartet ist.

Ist der Status einmal auf Grün so können wir von unserem Cockpit Daten zum IoT Service schicken.

Hierzu gibt es auf GitHub ein Starterkit(basierend auf PYTHON) welches man verwenden kann: https://github.com/SAP/iot-starterkit

Ich habe mich jedoch für PHP mit der cURL Extension entschieden, da ich bereits ein PHP Script hatte welches die Daten für einen anderen Service zur Verfügung stellte.

Die in eckige Klammern gesetzten Zeichen:

[USER]: HCP Trial User
[MessageTypeID]: Message Type ID aus dem Cockpit
[oAuth Token]: oAuth Token aus dem Cockpit des registrierten Device
[DeviceID]: DeviceID aus dem Cockpit des registrierten Device

Bitte mit den zuvor notierten Daten richtig versorgen:

function readSensor($sensor) {

 $output = array(); 
 $return_var = 0; 
 $i=1; 
 exec('sudo /usr/local/bin/loldht '.$sensor, $output, $return_var); 
 while (substr($output[$i],0,1)!="H") { 
           $i++; 
 } 
 $humid=substr($output[$i],11,5);
 $temp=substr($output[$i],33,5);

 $ch = curl_init();
 $url = 'https://iotmmss[USER].hanatrial.ondemand.com/com.sap.iotservices.mms/v1/api/http/data/[DeviceID]';

 // Build body
 $data_string = '{"mode":"async", "messageType":"[MessageTypeID]", "messages":[{"temperature":'.$temp.', "humidity":'.$humid.'}]}';

 // Build headers
 $headers = Array();
 $headers[0] = 'Authorization: Bearer ' . '[oAuth Token]';
 $headers[1] = 'Content-Type: ' . 'application/json;charset=utf-8';
 $headers[2] = 'Content-Length: ' . strlen($data_string);
 
 curl_setopt($ch, CURLOPT_URL, $url);
 curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
 curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string);
 curl_setopt($ch, CURLOPT_HEADER, 0);
 curl_exec($ch);
 curl_close($ch);

}

Dieses Script habe ich in der Crontab des auf Linux basierenden Raspbian Betriebssystem eingetragen und wird in meinem Fall alle 5 Minuten aufgerufen.

Das Ergebnis können wir nun in unserem MMS Cockpit betrachten, welches wir aus dem iot Cockpit heraus mit der Entsprechenden Kachel starten können.

iotdemo7

Weiterführende Links

https://de.wikipedia.org/wiki/Internet_der_Dinge

https://help.hana.ondemand.com/iot/frameset.htm

Über Harald Wiesinger

Im Jahr 2003 bekam ich als Schulabgänger der SDV ein Stellenangebot zugestellt. Es ging um SAP. Schnell mal googlen und dann schau ich mir das an, dachte ich und fuhr dorthin. Beim Bewerbungsgespräch wurde schnell klar, dass ich keine Ahnung davon hatte, trotzdem bekam ich die Chance. Seitdem wühle ich mich durch ABAP Code, Webdynpros oder andere SAP Web Technologien. In meiner Freizeit findet man mich entweder auf dem Tennisplatz oder ich spiele mit meinem 2 Jahre alten Sohn.

  • Posted by Harald Wiesinger
  • On November 8, 2015
Tags: HCP, IoT, Raspberry PI, SAP Hana

0 Comments