MASTER UNIVERSITARIO DI II LIVELLO 'INTERNET OF THINGS AND BIG DATA'' - A.A. 2018-2019 - MASTER IOT AND BIG DATA

Pagina creata da Arianna Di Stefano
 
CONTINUA A LEGGERE
MASTER UNIVERSITARIO DI II LIVELLO 'INTERNET OF THINGS AND BIG DATA'' - A.A. 2018-2019 - MASTER IOT AND BIG DATA
Master Universitario di II Livello ’Internet of Things and Big Data’’ – A.A. 2018-2019

                                                                                         1
MASTER UNIVERSITARIO DI II LIVELLO 'INTERNET OF THINGS AND BIG DATA'' - A.A. 2018-2019 - MASTER IOT AND BIG DATA
9/6/18

   5454
MASTER UNIVERSITARIO DI II LIVELLO 'INTERNET OF THINGS AND BIG DATA'' - A.A. 2018-2019 - MASTER IOT AND BIG DATA
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
MASTER UNIVERSITARIO DI II LIVELLO 'INTERNET OF THINGS AND BIG DATA'' - A.A. 2018-2019 - MASTER IOT AND BIG DATA
9/6/18

   5656
MASTER UNIVERSITARIO DI II LIVELLO 'INTERNET OF THINGS AND BIG DATA'' - A.A. 2018-2019 - MASTER IOT AND BIG DATA
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
MASTER UNIVERSITARIO DI II LIVELLO 'INTERNET OF THINGS AND BIG DATA'' - A.A. 2018-2019 - MASTER IOT AND BIG DATA
9/6/18

Il formato dei dati usati da HTTP è principalmente
   XML e JSON.

                                                        5858
MASTER UNIVERSITARIO DI II LIVELLO 'INTERNET OF THINGS AND BIG DATA'' - A.A. 2018-2019 - MASTER IOT AND BIG DATA
9/6/18

REST è basato sui metodi HTTP

                                   5959
MASTER UNIVERSITARIO DI II LIVELLO 'INTERNET OF THINGS AND BIG DATA'' - A.A. 2018-2019 - MASTER IOT AND BIG DATA
9/6/18

Ecco alcuni esempi di metodi GET e POST

                                             6060
MASTER UNIVERSITARIO DI II LIVELLO 'INTERNET OF THINGS AND BIG DATA'' - A.A. 2018-2019 - MASTER IOT AND BIG DATA
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
MASTER UNIVERSITARIO DI II LIVELLO 'INTERNET OF THINGS AND BIG DATA'' - A.A. 2018-2019 - MASTER IOT AND BIG DATA
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