AUFZEICHNUNG
Webinar – Get your jobs done!
Vielen Dank für Ihre Teilnahme an unserem Webinar! Vielen Dank an alle, die beim Webinar „Get your jobs…
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.
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).
Ist dies erledigt finden wir im Punkt Overview die Start-URL zu unserem IoT Cockpit.
Mit einem Klick auf die URL starten wir nun das Cockpit.
Auf Deploy klicken, Popup bestätigen und die angezeigte URL klicken, damit wird das HCP Cockpit gestartet.
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.