MASTER UNIVERSITARIO DI II LIVELLO 'INTERNET OF THINGS AND BIG DATA'' - A.A. 2018-2019 - MASTER IOT AND BIG DATA
←
→
Trascrizione del contenuto della pagina
Se il tuo browser non visualizza correttamente la pagina, ti preghiamo di leggere il contenuto della pagina quaggiù
9/6/18 Per andare incontro alle esigenze dei sistemi IoT è in via di definizione uno stack di protocol standard che integra i protocolli web che tutti conosciamo (HTTP ecc), Nello Stack IoT alcuni fattori comuni a molte applicazioni (discovery, push notification ecc) sono state integrate a livello applicativo (e quindi vengono fornite come primitive di protocolli come MQTT, XMPP ed altri) 5555
9/6/18 Facciamo un confronto tra protocolli web tradizionali come Rest/HTTP e i nuovi standard per IoT. Nel protocollo REST si utilizzano i metodi HTTP (Get, Post, ecc) per accedere a risorse su server remoti identificati da indirizzi simbolici (URI). Indirizzi URI sono gestiti da database distribuiti (DNS) che fungono da yellowpage (mappano nomi simbolici in indirizzi IP) Il protocollo HTTP permette di accedere in maniera sincrona (request/response) ad una risorsa remota (pagina web) 5757
9/6/18 Ecco un altro esempio di uso di GET (per aggiornare info sul server e quindi con side-effect) e POST (con body del messaggio formattato con XML) 6161
9/6/18 I server REST sono tipicamente stateless cioè non mantengono informazioni di stato tra diverse sessioni HTTP. I Server stateless sono più semplici da implementare (ogni sessione è indipendente dall’altra). Le informazioni di stato si possono anche memorizzare nei dati scambiati attraverso i metodi GET/POST oppure usando cookie o altre estensioni fornite dai browser. 6262
9/6/18 Gli indirizzi URI hanno una struttura che ricorda i pathname del file system. 6363
9/6/18 Gli indirizzi URI hanno una struttura che ricorda i pathname del file system. 6464
9/6/18 Vediamo ora uno scenario semplice di interazione con un sensore attraverso REST. Supponiamo di voler leggere i dati di un sensore collegato (non ci interessa come) ad una macchina con un server web. Il client deve effettuare polling HTTP per chiedere il valore del sensore. Ogni lettura richiede una sessione HTTP (che ha diverse fasi di handshaking per stabilire la connessione tra endpoint seguite da invio della richiesta e ricezione dei dati). Questo tipo di interazione può generare un eccessivo consumo energetico sul controller del device (es. Raspberry alimentato a batteria collegato ad un sensore di temperatura). 6565
9/6/18 Il client deve effettuare polling HTTP per chiedere il valore del sensore. 6666
9/6/18 Ogni lettura richiede una sessione HTTP (che ha diverse fasi di handshaking per stabilire la connessione tra endpoint seguite da invio della richiesta e ricezione dei dati). Questo tipo di interazione può generare un eccessivo consumo energetico sul controller del device (es. Raspberry alimentato a batteria collegato ad un sensore di temperatura). 6767
68 68
9/6/18 Il protocollo CoAP (Constrained Application Protocol) è stato introdotto da IETF per situazioni in cui può essere utile interagire in maniera più flessibile con un server, 6969
9/6/18 CoAP può essere interpretato come un protocollo REST su UDP. Supporta operazioni di discovery di risorse su un server (richiesta di meta dati al server), sottoscrizione per ricezioni di update dei valori di risorse del server (ed dati di una variabile attraverso push notification), caching, e proxy HTTP 7070
9/6/18 CoAP può essere integrato con HTTP attraverso opportuni Proxy per costruire reti ibride. 7171
9/6/18 CoAP supporta transazioni asincrone, messaggi con e senza conferma (ack) e altre ottimizzazioni (es. trasferimento di blocchi, ecc) 7272
9/6/18 CoAP può essere integrato con HTTP attraverso opportuni Proxy per costruire reti ibride. 7373
9/6/18 CoAP può essere integrato con HTTP attraverso opportuni Proxy per costruire reti ibride. 7474
9/6/18 CoAP può essere integrato con HTTP attraverso opportuni Proxy per costruire reti ibride. 7575
9/6/18 Le richieste CoAP possono richiedere ACK ed essere gestite in maniera sincrona o asincrona 7676
9/6/18 Ecco un esempio di transazione asincrona con messaggio che richiede ACK. Assumiamo quindi che il server abbia bisogno di elaborare la richiesta Senza bloccare il client. In questo caso il client usa un token univoco per fare matching tra richiesta e ack. 7777
9/6/18 Stop and wait disciplina tentativi di ritrasmissione per messaggi con conferma per i quali non si riceve ACK dopo un certo tempo massimo (time-out) 7878
9/6/18 La modalità Observation viene usata per evitare polling e ricevere invece update di dati di risorse (es sensori) gestiti dal server CoAP 7979
9/6/18 La modalità Observation in azione con messaggi con conferma (ACK) 8080
9/6/18 La richiesta “wellknown” invia al client la lista di risorse gestite dal CoAP server (a partire dalla quale il client può inviare richieste specifiche). Ad esempio il server potrebbe inviare la lista di tutte le variabili che rappresentano dati di sensori collegati al server CoAP 8181
9/6/18 La richiesta “wellknown” invia al client la lista di risorse gestite dal CoAP server (a partire dalla quale il client può inviare richieste specifiche). Ad esempio il server potrebbe inviare la lista di tutte le variabili che rappresentano dati di sensori collegati al server CoAP 8282
9/6/18 La richiesta “wellknown” invia al client la lista di risorse gestite dal CoAP server (a partire dalla quale il client può inviare richieste specifiche). Ad esempio il server potrebbe inviare la lista di tutte le variabili che rappresentano dati di sensori collegati al server CoAP 8383
9/6/18 ì 8484
9/6/18 8585
86 86
9/6/18 8787
9/6/18 MQTT è un protocollo molto “leggero” (nel senso che richiede poche risorse sia per eseguire server sia per scambiare dati) pensato per comunicazione tra smart object (Machine to Machine, M2M) di basso costo e potenza. Il Broker MQTT funge da coordinatore per update su canali (topic) che vengono usati per inviare update a tutti i client interessati (notifiche push come nelle news/feed) 8888
9/6/18 MQTT è un protocollo molto “leggero” (nel senso che richiede poche risorse sia per eseguire server sia per scambiare dati) pensato per comunicazione tra smart object (Machine to Machine, M2M) di basso costo e potenza. Il Broker MQTT funge da coordinatore per update su canali (topic) che vengono usati per inviare update a tutti i client interessati (notifiche push come nelle news/feed) 8989
9/6/18 9090
9/6/18 9191
9/6/18 9292
9/6/18 MQTT ha 3 livelli di quality of service (QoS) 9393
9/6/18 Esistono diversi server MQTT pubblici sui quai fare prove. Ad esempio http://www.hivemq.com/demos/websocket-client/, http://test.mosquitto.org/ e plugin di chrome come mqqtlens https://chrome.google.com/webstore/detail/mqttlens /hemojaaeigabkbcookmlgmdigohjobjm 9494
9/6/18 I nomi delle topic hanno una struttura a directory come nel caso degli URI’s 9595
9/6/18 Per le subscription si possono usare wild card che individuano singoli livelli di un albero (insieme di pathnames) 9696
9/6/18 …oppure interi sottoalberi (insiemi di suffissi di cammini) 9797
9/6/18 9898
9/6/18 Websocket è un protocollo che combina REST (e quindi è supportato da browser) con connessioni TCP per scambiare flussi di dati in real-time 9999
9/6/18 Dopo una fase iniziale simile al protocollo REST/HTTP viene aperto un socket TCP attraverso il quale vengono scambiati dati in maniera bidirezionale tra client e server 100 100
9/6/18 Dopo una fase iniziale simile al protocollo REST/HTTP viene aperto un socket TCP attraverso il quale vengono scambiati dati in maniera bidirezionale tra client e server 101 101
9/6/18 Dopo una fase iniziale simile al protocollo REST/HTTP viene aperto un socket TCP attraverso il quale vengono scambiati dati in maniera bidirezionale tra client e server 102 102
9/6/18 Dopo una fase iniziale simile al protocollo REST/HTTP viene aperto un socket TCP attraverso il quale vengono scambiati dati in maniera bidirezionale tra client e server 103 103
9/6/18 Dopo una fase iniziale simile al protocollo REST/HTTP viene aperto un socket TCP attraverso il quale vengono scambiati dati in maniera bidirezionale tra client e server 104 104
9/6/18 105 105
9/6/18 Le piattaforme cloud forniscono servizi su Internet per storage (come Google Drive) accessibile da ogni dispositivo in ogni luogo, per rendere scalabili le applicazioni tramite macchine virtuali, per connettere dispositivi e applicazioni, per prendere decisioni in sistemi distribuiti geograficamente 106 106
9/6/18 Le piattaforme IoT hanno una struttura simile ad un sistema operativo distribuito su rete e si appoggiano al cloud per la gestione dei dati 107 107
9/6/18 Alcuni esempi di piattaforme IoT 108 108
9/6/18 Il sistema Node.js è n framework per la creazione di applicazioni IoT basate sul paradigma ad eventi 109 109
9/6/18 Esempio di server HTTP in Node.js. Vedremo nella parte pratica sia Javascript che Node.js oltre ad esempi di piattaforme IoT e altri strumenti di sviluppo come Node-red 110 110
Puoi anche leggere