kdw
Joined: 05 May 2006 Posts: 1485
|
Posted: 04.10.2014, 19:59 Post subject: Cloud REST APIs … |
|
|
Hallo Forum.
Wenn Sie einen eSOM/3517 mit einer Cloud- bzw. IoT-Serviceplattform verbinden wollen, müssen Sie sich zunächst einmal das jeweilige API (Application Programming Interface) genau anschauen. Die meisten Plattformen bieten ein REST-API (REST = REpresentational State Transfer, siehe zum Beispiel http://www.restapitutorial.com/lessons/whatisrest.html#).
REST folgt dem Create-Read-Update-Delete-(CRUD)-Gedanken aus der Datenbankwelt. D. h., es gibt jeweils separate (API-) Funktionen, um ein Datenobjekt zu erzeugen, den aktuellen Wert zu lesen, einen neuen Wert zu schreiben und das Objekt wieder zu löschen. In einem REST-API werden die einzelnen CRUD-Funktionen durch HTTP-Request/Response-Paare realisiert. Hierzu zwei Beispiele:
Der folgende HTTP-POST-Request ermöglicht zum Beispiel einen Variablen-Update auf der EXOSITE-IoT-Plattform (http://exosite.com/). In diesem Fall wird in die Variable Tengine der neue Wert 12.34 geschrieben. Das EXOSITE-REST-API erfordert dafür einen HTTP-POST-Request. Beachten Sie bitte, dass innerhalb des EXOSITE-REST-API-HTTP-Requests ein API-Key als Zugriffsberechtigungsschlüssel erforderlich ist (siehe HTTP-Header-Element X-Exosite-CIK). Diesen Code erhält man durch die Registrierung auf der EXOSITE-IoT-Plattform.
Code: | POST /onep:v1/stack/alias HTTP/1.1\r\n
User-Agent: curl/7.37.0\r\n
Host: m2.exosite.com\r\n
X-Exosite-CIK: 88caf201140928b632a32c33a94762f93fb16438\r\n
Accept: application/x-www-form-urlencoded; charset=utf-8\r\n
Content-Length: 13\r\n
Content-Type: application/x-www-form-urlencoded\r\n
\r\n
Tengine=12.34 |
Der gesamte Request wurde auf einem PC mit cURL (http://curl.haxx.se/) erzeugt. Die Zeichenfolge „Tengine=12.34“ transportiert die Daten für den Update. Ist der Update erfolgreich, antwortet der EXOSITE-Server mit dem HTTP-Statuscode „204 No Content“:
Code: | HTTP/1.1 204 No Content\r\n
Date: Fri, 03 Oct 2014 04:58:37 GMT\r\n
Content-Length: 0\r\n
Connection: keep-alive\r\n
Server: nginx\r\n
\r\n |
Ein zweites Beispiel zeigt den HTTP-Request für einen Variablen-Update mit dem SSV Real Time Data Channel (SSV/RTDC) API. Dieses API erfordert einen PUT-Request mit einem JSON-Objekt, um einen Werte-Update auszuführen. Im RTDC-REST-API sind zwei API-Key als Zugriffsberechtigungsschlüssel für eine Update-Operation erforderlich (siehe HTTP-Header-Elemente X-RTDC-Access-Key und X-RTDC-Auth-Key). Der X-RTDC-Auth-Key ist ein allgemeiner Zugriffsschlüssel, der in jedem einzelnen REST-Request erforderlich ist. Bei allen „Schreiboperation“ (Create, Update, Delete) ist zusätzlich ein X-RTDC-Access-Key als zweiter Schlüssel erforderlich.
Code: | PUT /rtdc/v0/ HTTP/1.1\r\n
Host: 192.168.0.54\r\n
Connection: keep-alive\r\n
Content-Length: 91\r\n
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64)\r\n
Cache-Control: no-cache\r\n
Origin: chrome-extension://fdmmgilgnpjigdojojpjoooidkmcomcm\r\n
X-RTDC-Access-Key: ad698900-2546-11e3-95ef-e3081976e170\r\n
X-RTDC-Auth-Key: 2f3113d0-2796-11e3-87fb-c560cb0ca47b\r\n
Content-Type: application/json; charset=UTF-8\r\n
Accept: */*\r\n
Accept-Encoding: gzip,deflate,sdch\r\n
Accept-Language: de-DE,de;q=0.8,en-US;q=0.6,en;q=0.4\r\n
\r\n
{"do": [{"name":"BAT1","item":[{"name":"SI_PowerL1","data":209.8}]}]} |
Die Zeichenfolge
Code: | {"do": [{"name":"BAT1","item":[{"name":"SI_PowerL1","data":209.8}]}]} |
ist ein RTDC-JSON-Objekt, um in dem Datenobjekt “BAT1” das Daten-Item „SI_PowerL1“ auf den neuen Wert „209.8“ zu setzen. Ist der Update erfolgreich, antwortet der RTDC-Server mit dem HTTP-Statuscode „200 OK“ und einem zusätzlichen JSON-Objekt:
Code: | HTTP/1.1 200 OK\r\n
Date: Mon, 29 Sep 2014 16:20:14 GMT\r\n
Server: Apache/2.2.22 (Debian)\r\n
X-Powered-By: PHP/5.4.4-14+deb7u14\r\n
Content-Length: 48\r\n
Keep-Alive: timeout=5, max=100\r\n
Connection: Keep-Alive\r\n
Content-Type: application/json\r\n
\r\n
{"status":{"code":0,"info":"Update successful"}} |
Der PUT-Request für das RTDC-API wurde mit dem POSTMAN-Extension unter Chrome ausgeführt.
Gruß KDW |
|