Scarica l`Hackaton Developers User Guide
Transcript
Scarica l`Hackaton Developers User Guide
Hackathon Developers User Guide Indice 1. Descrizione del Framework IoT ..........................................................................................................2 1.1 Informazioni fornite dalla filiera Alimentare ..............................................................................3 1.2 Interfaccia Applicativa ................................................................................................................6 1.2.1 Richiesta di Sottoscrizione dati ..........................................................................................7 1.2.2 Esempio di Cancellazione della sottoscrizione ................................................................ 11 1 1. Descrizione del Framework IoT La fase finale dell’Hackathon prevede una fase di implementazione sperimentale che contribuirà alla valutazione complessiva dell’idea. Per recuperare sperimentalmente le informazioni provenienti dalle sorgenti di informazioni dislocate sul territorio, i partecipanti dovranno interfacciarsi con una piattaforma denominata IoT Service Enablement Framework, fornita da Ericsson. Questo framework industriale consente di recuperare in maniera sicura, controllata e centralizzata, le informazioni provenienti dalla sensoristica e dai dispositivi remoti. Le informazioni vengono storicizzate in un database centralizzato e sono rese disponibili mediante interfacce di semplice invocazione (REST). La struttura del Service Enablement Framework è visibile nella figura seguente, che ne illustra le principali funzionalità. Figura 1 - Descrizione architetturale Applicazioni: Sono le applicazioni IoT alla base dell’evento Hackathon. L’applicazione può essere sviluppata in qualsiasi linguaggio e su qualsiasi piattaforma. L’applicazione esegue la logica di business necessaria all’esecuzione del caso di uso ed interagisce con la piattaforma di Service Enablement per recuperare le informazioni provenienti dai devices IoT o dalle basi dati. 2 Accesso da Public Internet: le Applicazioni possono entrare in contatto con la piattaforma di Service Enablement sul canale Public Internet. La piattaforma è raggiungibile mediante una specifica URL ed utilizza un protocollo di comunicazione REST. Maggiori dettagli nel capitolo “1.2 Interfaccia Applicativa”. Service Enablement Plaform: E’ la piattaforma che recupera le informazioni dai dispositivi interconnessi e le mette a disposizione delle Applicazioni in maniera sicura e strutturata, disaccoppiando l’ambito applicativo da quello dei dispositivi. La piattaforma consente anche l’invio di comandi ai dispositivi interconnessi (funzionalità non utilizzata nell’Hackathon). Servizi di Connettività: Consentono ai dispositivi interconnessi di collegarsi con la piattaforma di Service Enablement e fornire dati e/o ricevere comandi. I dispositivi sono normalmente interconnessi mediante Mobile Broadband (GPRS,3G,LTE) per consentire la raggiungibilità sul territorio in mobilità. In caso di dispositivi stazionari, la connettività utilizzabile può essere di tipo ethernet o wifi. Questo livello è al di fuori dello scopo dell’Hackathon e non è accessibile ai partecipanti. Sensoristica,Dati ed Attuatori: Sono i dispositivi che forniscono le informazioni alla piattaforma di Service Enablement. Le informazioni possono provenire da sensori, possono essere inserite manualmente o recuperate da una base dati esistente sul territorio. Nel caso dell’Hackathon queste informazioni vengono fornite dinamicamente. I sistemi che generano i dati sono al di fuori dello scopo applicativo dell’Hackathon. 1.1 Informazioni fornite dalla filiera Alimentare Ai fini della sperimentazione pratica, i partecipanti dovranno interagire esclusivamente, tra gli ambiti descritti, esclusivamente con quello Applicativo. I Dispositivi sono già interconnessi e forniscono informazioni relative alla filiera della distribuzione alimentare. Verranno fornite informazioni dinamiche relative all’offerta, e alla domanda di generi alimentari ridondanti, mentre le informazioni di dettaglio sui generi alimentari e il relativo packaging saranno recuperabili da una sorgente statica. Lo scopo principale dell’applicazione o del sistema proposto nell’Hackathon dai partecipanti è di utilizzare i flussi dinamici di informazioni e le sorgenti statiche di dettaglio al fine di ottimizzare la filiera e ridurre gli sprechi alimentari. Per poter comprendere la struttura delle informazioni recuperabili a livello applicativo , è necessario comprendere in che modo tali informazioni vengono fornite dai dispositivi e memorizzate in piattaforma. 3 La piattaforma di Service Enablement ha una struttura dati gerarchica che rispecchia la configurazione dei dispositivi interconnessi come di seguito descritto: Figura 2 - Gerarchia della struttura dati Il Livello gerarchico massimo è rappresentato dal Device Gateway Group. Un Device Gateway Group conterrà al suo interno una serie di Device Gateways. Il Device Gateway è demandato al recupero delle informazioni dalla sensoristica e a comandare eventuali attuatori interconnessi. Focalizzandoci sulla sensoristica, un Device Gateway può gestire uno o più Sensori (Sensor). Il Sensore rappresenta il dispositivo che trasduce le grandezze fisiche in dati comprensibili al Device Gateway (esempio: Temperatura in Gradi Centigradi, Umidità in % di acqua per unità di volume d’aria). Un Sensore può fornire varie grandezze fisiche. Ogni grandezza fisica recuperabile è definita Risorsa (Resource). Un esempio può essere quello di un modulo GPS (Sensor) che fornisce 3 grandezze fisiche (3 Resources): Latitudine, Longitudine, Altitudine. Figura 3 - Esempio di applicazione pratica Le informazioni relative alla filiera di distribuzione alimentari sono state organizzate secondo la medesima struttura gerarchica. Il flusso logico delle informazioni e la mappatura con il data model appena descritto è visibile in figura: 4 Figura 4 - Logica di funzionamento della Piattaforma IoT Di seguito vengono riportate in forma tabellare le informazioni presenti nei tre ambiti: Offerta, Richiesta, Dati statici. Per Gateway vengono riportati di seguito i valori delle variabili utilizzate nelle API che dovranno essere utilizzate dalle applicazioni. 5 Device Gateway ID sensorSpec resourceSpec Ericsson$Supermarket Ericsson$Canteen Ericsson$Food_Offer_LOT Ericsson$Offer_Food_ID Ericsson$Offer_Package_ID Ericsson$Offer_Quantity Ericsson$Available_from Ericsson$Available_to Ericsson$Expiry_Date Ericsson$LOCATION_Latitude Ericsson$LOCATION_Longitude Ericsson$Food_Description Ericsson$Calories Ericsson$Origin Ericsson$Seasonality Ericsson$Perishable Ericsson$Allergen Ericsson$Length Ericsson$Height Ericsson$Depth Ericsson$Weight Ericsson$Item_per_Package Ericsson$ONLUS1 Ericsson$ONLUS2 Ericsson$Food_Request_LOT Ericsson$Request_Food_ID Ericsson$Request_Quantity Ericsson$Delivery_Date_Request Ericsson$Delivery_Location_Latitude Ericsson$Delivery_Location_Longitude Tabella 1 - Nomenclatura dati 1.2 Interfaccia Applicativa L’interfaccia esposta a livello applicativo prevede una fase di Autorizzazione ed una fase di sottoscrizione dati o richiesta dati. La fase di Autorizzazione viene effettuata mediante lo scambio di token secondo il protocollo OAUTH 2.0. Nell’ottica di velocizzare l’integrazione con le Applicazioni sviluppate per l’Hackathon, l’implementazione di questa logica non sarà necessaria, e verrà fornito direttamente un Token da utilizzare nelle API il primo giorno dell’Hackathon. La URL pubblica da utilizzare per la fase di sottoscrizione dati o richiesta dati è la seguente: https://m2m-north.hsc.ericsson.net/rest/m2mData/ 6 1.2.1 Richiesta di Sottoscrizione dati Questo tipo di richiesta va utilizzata per sottoscriversi ai topics e richiedere informazioni relative ai Gateways che forniscono dati dinamici di Offerta e Richiesta Alimentare. La procedura di sottoscrizione rispetta il segente scambio di dati tra Applicazione e IoT Platform: Figura 5 - Sottoscrizione Dopodichè, non appena l’informazione viene pubblicata da uno dei devices che fornisce il tipo di informazione sottoscritta, la piattaforma SEP IoT la notifica all’Applicativo: 7 Figura 6 - Notifica (Push Data) Vengono di seguito riportati degli esempi reali di chiamate e risposte secondo la sequenza logica appena descritta. CREAZIONE SOTTOSCRIZIONE: POST https://m2mnorth.hsc.ericsson.net/rest/m2mData/subscription?protocol=http&hub.mode=subscribe&hub.call back=http%3A%2F%2F10.1.10.5:38080/notifications&daURN=Ericsson%24DispatcherSB&hub.topi cSensorSpec=Ericsson%24Food_Offer_LOT%2cEricsson%24Food_Request_LOT &responseFormat=application%2Fjson Authorization: Bearer UW02S0a5N7PGvPGbPEsv AccessKey: 8b1594f517a5d73f6749f503bd9779772554 Note: 1. Nella richiesta, il parametro hub.callback va popolato con il proprio IP address e porta in ascolto. 2. In questa richiesta, ci sono due argomenti sottoscritti: Ericsson$Food_Offer_LOT che appartiene al GW di offerta di Alimenti. Ericsson$Food_Request_LOT che appartiene GW di richiesta di Alimenti. In tal modo, con una singola richiesta di sottoscrizione è possibile sotoscriversi sia alle richieste che alle offerte, ottenendo tutti i dati necessari. 8 DI conseguenza, il Sistema IoT fornirà due differenti “Challenge” a cui si dovrà rispondere. 3. Il token OAUTH (nell’esempio “UW02S0a5N7PgvPGbPEsv”) e la Access Key (nell’esempio “8b1594f517a5d73f6749f503bd9779772554”) verranno forniti ad ogni team prima dell’inizio dell’Hackathon. CHALLENGE1 : GET /notifications ?X-RequesterId=Ericsson%24e670696b9d8d2767a0c2969766abeee0017c&hub.topicSensorSpec=e901673cee3b-4054-a4b77f7dba0b7a6&hub.mode=subscribe&hub.topicGatewaySpec=*&userId=*&ecId=*&hub.topicResou rceSpec=*&daURN=%23DispatcherSB9f3c&hub.lease_seconds=0&hub.challenge=51757551930 HTTP/1.1 Accept: text/plain Content-Type: application/x-www-form-urlencoded Host: 10.1.10.5:38080 CHALLENGE2: GET /notifications?X-RequesterId=Ericsson%24e670696b9d8d2767a0c2969766abeee0017c&hub.topicSensorSpec=bc0bee66a25a-4aef-973981f4d3958fd&hub.mode=subscribe&hub.topicGatewaySpec=*&userId=*&ecId=*&hub.topicResou rceSpec=*&daURN=%23DispatcherSB9f3c&hub.lease_seconds=0&hub.challenge=90576489603 HTTP/1.1 Accept: text/plain Content-Type: application/x-www-form-urlencoded Host: 10.1.10.5:38080 Note Importanti: 1. La piattaforma IoT invierà le “challenges” verso la callback URL indicata nella richiesta. 2. Il valore del parametro hub.challenge va memorizzato dall’Applicazione e riutilizzato nell’acknowledge verso la piattaforma IoT nel body della richiesta, come descritto nelle Challenge Acknowledge seguenti: 9 CHALLENGE ACK1: HTTP/1.1 200 OK Content-Type: text/plain;charset=UTF-8 51757551930 CHALLENGE ACK2: HTTP/1.1 200 OK Content-Type: text/plain;charset=UTF-8 90576489603 ACKNOWLEDGE SOTTOSCRIZIONE: HTTP/1.1 200 OK Content-Type: application/vnd.ericsson.m2m.subscription+json;version=1.2;charset=UTF-8 [{"addressingInfo":{"protocol":"http","address":"http://10.1.10.4:27030/rest/M2M_Data_Exposur e_Callback?endpoint=http%3A%2F%2F10.1.10.5%3A38080%2Fnotifications&capabilityAccess=8b 1594f517a5d73f6749f503bd9779772554&X-RequesterId=Ericsson%24e670696b9d8d2767a0c2969766abeee0017c","defaultAddressing":true,"m2mSupp ortedFormats":{"idFormat":"vnd.cybercom.m2m.output+json_1.0","externURN":"m2mSupportedF ormatUrnToJson"},"validFrom":1442402712360,"dateModified":1442402712897,"externURN":"5a 93c152-5725-4634-b75aaa947c26cc1d"},"operator":{"externURN":"*"},"domainApplication":{"externURN":"#DispatcherSB 9f3c"},"customer":{"externURN":"*"},"user":{"externURN":"*"},"deviceGroupSpec":{"externURN":" *"},"deviceGatewaySpec":{"externURN":"*"},"sensorSpec":{"externURN":"bc0bee66-a25a-4aef973981f4d3958fd"},"resourceSpec":{"externURN":"*"},"deviceGroup":{"externURN":"*"},"deviceGatew ay":{"externURN":"*"},"sensor":{"externURN":"*"},"resource":{"externURN":"*"},"createdByAccou nt":{},"modifiedByAccount":{},"validFrom":1442458952414,"dateModified":1442458952414,"exte rnURN":"a9dee612-4312-4f82-a3d2-53bd72"}, {"addressingInfo":{"protocol":"http","address":"http://10.1.10.4:27030/rest/M2M_Data_Exposur e_Callback?endpoint=http%3A%2F%2F10.1.10.5%3A38080%2Fnotifications&capabilityAccess=8b 1594f517a5d73f6749f503bd9779772554&X-RequesterId=Ericsson%24e670696b9d8d2767a0c2969766abeee0017c","defaultAddressing":true,"m2mSupp ortedFormats":{"idFormat":"vnd.cybercom.m2m.output+json_1.0","externURN":"m2mSupportedF ormatUrnToJson"},"validFrom":1442402712360,"dateModified":1442402712897,"externURN":"5a 93c152-5725-4634-b75aaa947c26cc1d"},"operator":{"externURN":"*"},"domainApplication":{"externURN":"#DispatcherSB 9f3c"},"customer":{"externURN":"*"},"user":{"externURN":"*"},"deviceGroupSpec":{"externURN":" *"},"deviceGatewaySpec":{"externURN":"*"},"sensorSpec":{"externURN":"e901673c-ee3b-4054a4b77f7dba0b7a6"},"resourceSpec":{"externURN":"*"},"deviceGroup":{"externURN":"*"},"deviceGatew ay":{"externURN":"*"},"sensor":{"externURN":"*"},"resource":{"externURN":"*"},"createdByAccou nt":{},"modifiedByAccount":{},"validFrom":1442458952293,"dateModified":1442458952293,"exte rnURN":"940c9a61-bbea-4b43-96fe-478d8d"}] 10 Note Importanti: il parametro “externURN” dovrà essere memorizzato dall’Applicazione per permettere poi la cancellazione eventuale della sottoscrizione, come descritto nel Paragrafo 1.2.2 PUSH DATA La piattaforma invierà spontaneamente i dati all’applicazione sottoscritta non appena le informazioni di interesse saranno fornite dai devices IoT, nel seguente formato (esempio): POST /notifications HTTP/1.1 Accept-Charset: UTF-8 Content-Type: application/json Accept: text/xml Content-Length: 125 Host: 10.1.10.5:38080 Connection: Keep-Alive User-Agent: Apache-HttpClient/4.3.3 (java 1.5) Accept-Encoding: gzip,deflate [{"resourceSpec":"Offer_Food_ID","timestamp":"Wed Sep 2015","value":"Food_ID_1","gatewayId":"Supermarket"}] 16 14:18:00 CEST PUSH DATA ACKNOWLEDGE L’Applicazione dovrà rispondere al Push con un semplice “HTTP 200 OK”. 1.2.2 Esempio di Cancellazione della sottoscrizione Come descritto in precedenza, la richiesta va corredata della URN fornita dalla piataforma all’atto della sottoscrizione (in rosso). DELETE https://m2m-north.hsc.ericsson.net/rest/m2mData/subscription/940c9a61-bbea-4b4396fe-478d8d Authorization: Bearer wojlSLFawsE4c3eatLjj AccessKey: c43a488af3f474f741cc48a46567aac5c6ac RISPOSTA: -- response -200 OK 11 Date: Fri, 26 Jun 2015 08:03:57 GMT Server: Jetty(7.6.8.v20121106) Content-Type: text/plain; charset=utf-8 X-Powered-By: Servlet/2.5 JSP/2.1 Content-Length: 0 Keep-Alive: timeout=5, max=100 Connection: Keep-Alive 12