mqtt: il protocollo che rende possibile l'internet of things

42
MQTT: il protocollo che rende possibile l’Internet Of Things Davide Pozza – Omnys (www.omnys.com) [email protected] http://it.linkedin.com/in/davidepozza 1

Upload: omnys

Post on 08-Jan-2017

3.193 views

Category:

Software


1 download

TRANSCRIPT

Page 1: MQTT: il protocollo che rende possibile l'Internet of Things

MQTT: il protocollo che rende possibile

l’Internet Of ThingsDavide Pozza – Omnys (www.omnys.com) [email protected] http://it.linkedin.com/in/davidepozza

1

Page 2: MQTT: il protocollo che rende possibile l'Internet of Things

/42

Davide Pozza▪ Mi occupo di progettazione e delivery di infrastrutture software

“mission critical”

▪ Negli anni ho avuto modo di affrontare tematiche funzionali e tecnologiche relative agli ambiti più svariati tra cui: ▪ Internet banking ▪ Ecommerce ed integrazione con sistemi di legacy ▪ ICT e telecomunicazioni ▪ Interazione con dispositivi “smart”

▪ Sono socio di Omnys, software house presente sul mercato dal 09/09/1999 che si occupa principalmente di: ▪ System Integration e Architetture Cloud ▪ Piattaforme web (ecommerce, turismo, infomobilità, editoria digitale) ▪ APP mobile ▪ Internet of Things (wearable, medical, home automation)

2

Page 3: MQTT: il protocollo che rende possibile l'Internet of Things

/42

The Internet of Things

3

▪ Smartphone & wearable ▪ Controllo veicoli, persone,

animali, … ▪ Dispositivi embedded ▪ Automazione industriale ▪ Monitoraggio consumi

energetici ▪ Impianti di sicurezza e

sorveglianza ▪ Smart Building/Home & City ▪ Telemedicina e Salute ▪ Everyday things…

Page 4: MQTT: il protocollo che rende possibile l'Internet of Things

/42

Verso l’interconnessione totale

“The Web is becoming more and more pervasive as an applications platform, and effective standards are crucial for reducing the costs of

deploying applications across a wide range of devices and environments, whether in the office, at home or on the move.

The Ubiquitous Web will provide people with access whenever and wherever they find themselves, with applications that dynamically

adapt to the user's needs, device capabilities and environmental conditions.”

Philipp Hoschka, Ubiquitous Web Domain Leader

Ubiquitous Web

Web 1.0 Web 2.0 Social WebMobile Web

4

Page 5: MQTT: il protocollo che rende possibile l'Internet of Things

/42

Una crescita esponenzialeA fine del 2014: 9 miliardi di dispositivi connessi

Entro il 2020:

• 57.000/secnuovi dispositivi che si connetteranno

• 212 miliardidi dispositivi in grado di connettersi

• 30 miliardidi dispositivi connessi

5

Page 6: MQTT: il protocollo che rende possibile l'Internet of Things

/42

Internet of Things: il problema

Persone + Oggetti + Sensori + Dispositivi =

tantissimi endpoint che emettono segnali

6

Page 7: MQTT: il protocollo che rende possibile l'Internet of Things

/42

Internet of Things: una nuova sfida▪ Richiede un modello di

comunicazione in real-time ed event-driven

▪ Le informazioni devono poter essere inviate in modalità one-to-many

▪ Capacità di recepire (“listening”) un evento non appena si verifica

▪ Necessità di ridurre al massimo la dimensione dei pacchetti dati scambiati

▪ Necessità di gestire l’invio di messaggi anche su reti degradate (reliability)

7

Page 8: MQTT: il protocollo che rende possibile l'Internet of Things

/42

L’HTTP è adatto per gestire SEGNALI?

▪ E’ “document-centric” (XML, ecc) e basato sul paradigma request/reply

▪ Ha un elevato overhead di rete ▪ E’ estremamente verboso: PUT/POST/GET/DELETE prevedono

comunque l’invio di molti bytes e non sono sempre la scelta migliore nello sviluppo di applicazioni dove la comunicazione deve essere “ultralight”

▪ Non prevede nessuna garanzia built-in sulla comunicazione

8

Page 9: MQTT: il protocollo che rende possibile l'Internet of Things

/42

Internet of Things: non è il WEB!▪ I firmware dei dispositivi

sono limitati (potenza, memoria, batteria)

▪ Possono essere necessari anche migliaia di dispositivi per monitorare un sistema industriale (es. gasdotti, piattaforme petrolifere,…)

▪ La connettività può essere molto degradata e/o estremamente costosa (GPRS, Satellite)

9

Page 10: MQTT: il protocollo che rende possibile l'Internet of Things

/42

L’alternativa

MQTT = MQ TELEMETRY TRANSPORT

“A light weight event and message oriented protocol allowing devices to asynchronously communicate efficiently across constrained

networks to remote systems”

10

Page 11: MQTT: il protocollo che rende possibile l'Internet of Things

/42

MQTT: i principali benefici▪ Rende semplice la connessione tra il

mondo degli oggetti e il mondo dell’ IT evitando il “polling” dei sensori

▪ Consente la trasmissione di dati su reti soggette a frequenti interruzioni

▪ Fornisce il massimo disaccoppiamento possibile garantendo comunque la trasmissione/ricezione dei dati (QoS)

▪ Riesce a gestire la comunicazione con un elevato numero di dispositivi

11

Page 12: MQTT: il protocollo che rende possibile l'Internet of Things

/42

Il protocollo MQTT in SINTESI• Semplice: solo 3 funzioni:

– connect + publish + subscribe (un client può funzionare su un controller a 8 bit e 256kb di RAM)

• Affidabile: QoS per supportare reti degradate

• Leggero: overhead minimo ed estrema efficenza: – no envelope, o headers; pacchetti anche da 2 bytes

• Aperto: standard definito e aperto (royalty-free)

12

Page 13: MQTT: il protocollo che rende possibile l'Internet of Things

/42

Il trend di interesse per l’MQTT

Google Trends evidenzia un interesse in forte crescita in relazione al termine “MQTT”

13

Page 14: MQTT: il protocollo che rende possibile l'Internet of Things

/42

Ambito dell’MQTT

Intelligence & AnalyticsTraditional Backend Systems BigData

Interconnection

Mobile & Web Embedded Controllers, Sensors, Actuators, …

Data/Alert

Respond

Control

Sense

14

Page 15: MQTT: il protocollo che rende possibile l'Internet of Things

/42

Il modello Publish/Subscribe▪ Il PUBLISHER invia (publish) un

messaggio su un TOPIC (subject)

▪ Il SUBSCRIBER è un consumer che si mette in ascolto (subscribe) sui messaggi pubblicati su un TOPIC specifico

▪ Il BROKER (server di smistamento messaggi) si occupa di effettuare il matching tra SUBSCRIBER e PUBLISHER con il conseguente dispatching del messaggio.

Subscriber

Broker

Publisher

Topic

Publisher

Topic Subscriber

Subscriber

15

Page 16: MQTT: il protocollo che rende possibile l'Internet of Things

/42

Comunicazione asincrona e bidirezionale

MQTT Broker

1. CONNECT to MQTT broker 2. PUBLISH on:

<house_id>/s/energyConsumption <house_id>/s/solarEnergy

3. SUBSCRIBE to: <house_id>/thermostat/setTemp

1. CONNECT to MQTT broker 2. SUBSCRIBE on:

<house_id>/s/* 3. PUBLISH to:

<house_id>/thermostat/setTemp

16

Page 17: MQTT: il protocollo che rende possibile l'Internet of Things

/42

Garanzia nella comunicazione

▪ Keep-Alive message (PINGREQ, PINGRESP): – il Broker riesce ad identificare una disconnessione non

esplicita del client

▪ Will message: – viene impostato nel messaggio di CONNECT con topic, QoS

e retain. In caso di disconnessione inaspettata il messaggio “Will” viene mandato ai subscribers registrati

▪ Retain message: – un messaggio pubblicato su un topic viene mantenuto sul

broker. Un successivo subscriber che si connette sullo stesso topic riceve il messaggio (last known good message)

▪ Persistent Session: – dopo la disconnessione del client, tutte le sottoscrizioni

vengono mantenute nel broker e recuperate alla connessione successiva

17

Page 18: MQTT: il protocollo che rende possibile l'Internet of Things

/42

Cos’è il livello di qualità del servizio (QoS) ?E’ un “agreement” tra il mittente ed il destinatario di un messaggio in

relazione alla garanzia di “delivery” del messaggio stesso.

Il QoS è una delle più potenti caratteristiche del protocollo MQTT in quanto rende molto più semplice lo scambio messaggi su reti degradate attraverso la gestione automatica della ri-trasmissione.

Ci sono tre livelli disponibili: ▪ QoS 0 – at most once: garantisce il “best effort delivery”; è detto anche

“fire & forget” e non contempla la conferma di ricezione che quindi è la medesima del trasporto TCP/IP

▪ QoS 1 – at least once: garantisce la consegna del messaggio almeno una volta verso un ricevente; il messaggio però può essere ricevuto anche più volte

▪ QoS 2 - exactly once: garantisce la consegna del messaggio una ed una sola volta verso un ricevente

18

Page 19: MQTT: il protocollo che rende possibile l'Internet of Things

/42

Come funziona il QoS

BrokerPublisher Subscriber

BrokerPublisher Subscriber

PUBLISH (QoS = 0)PUBLISH

Delete message

Store message

PUBLISH (QoS = 1)

Store message

Delete message

Delete message

PUBLISH

BrokerPublisher Subscriber

Store message

PUBLISH (QoS = 2)

Store message

Delete message

Delete message

PUBLISH

QoS 0: At most once (fire & forget)

QoS 1: At least once QoS 2: Exactly once

PUBREC

PUBREL

PUBCOMPPUBACK

19

Page 20: MQTT: il protocollo che rende possibile l'Internet of Things

/42

Sicurezza nella comunicazione3 livelli di sicurezza:

▪ PROTOCOLLO ▪ Username/Password in CONNECT ▪ Possibilità di criptare il Payload

▪ TRASPORTO ▪ MQTT over TLS (v1.2) ▪ Autenticazione del client con certificato

▪ BROKER ▪ Gestione dei permessi su Publish/Subscribe e Topic ▪ Possibilità di integrare altri sistemi di autenticazione/autorizzazione (es. LDAP, OAuth

2.0)

20

Page 21: MQTT: il protocollo che rende possibile l'Internet of Things

/42

MQTT vs HTTP (long polling): prestazioni

Test di spedizione (1024 messaggi con payload da 1 byte)

http://stephendnicholas.com/archives/121721

Page 22: MQTT: il protocollo che rende possibile l'Internet of Things

/42

MQTT vs HTTP: la struttura del messaggio

MQTT: dimensione header 2 byte

HTTP: dimensione headerREQ/RES > 300 byte

22

GET /service Host: www.endpointm2m.com Accept:text/xml Accept-Encoding:gzip, deflate, sdch Connection:keep-alive

HTTP/1.1 200 OK Connection:Keep-Alive Content-Length:33452 Content-Encoding:gzip Content-Type:text/xml Keep-Alive:timeout=15, max=100 Last-Modified:Fri, 17 May 2013 14:50:39 GMT Connection:close

Page 23: MQTT: il protocollo che rende possibile l'Internet of Things

/42

MQTT-SN▪ E’ un’evoluzione dello standard MQTT pensata per i dispositivi

embedded (SN = Sensor Networks) ▪ Non richiede lo stack TCP/IP: può essere utilizzato su seriale, UDP,

ZigBee, RF, …

23

Page 24: MQTT: il protocollo che rende possibile l'Internet of Things

/42

MQTT … in pratica

24

Page 25: MQTT: il protocollo che rende possibile l'Internet of Things

/42

I principali Broker MQTT

MOSQUITTO

25

Page 26: MQTT: il protocollo che rende possibile l'Internet of Things

/42

Soluzioni MQTT in Cloud

▪ Pagamento a consumo di risorse (“pay per usage”)

▪ Opzione “free tier”: sotto soglie ben definite il servizio è gratuito

▪ Soluzioni IaaS / PaaS ▪ Elevati QoS (99.9%) ▪ Elevata scalabilità ▪ Tempi di startup estremamente ridotti

26

Page 27: MQTT: il protocollo che rende possibile l'Internet of Things

/42

IBM Bluemix

▪ Sul fronte dei servizi Cloud MQTT/IoT sono i primi arrivati (GIU-14), nonché i principali promotori e ideatori dello standard MQTT

▪ Fornisce un soluzioni “full stack” (boilerplate), tra cui quella dedicata esclusivamente all’ IoT e basata su MQTT

▪ Basata su CloudFoundry con deploy in 3 step: ▪ Selezione di un Runtime (Node, Java, PHP, …) ▪ Selezione dei Servizi ▪ Installazione dell’applicazione

▪ Freemium plan: ▪ 20 dispositivi ▪ 100MB di traffico dati al mese ▪ 1GB di storage

27

Page 28: MQTT: il protocollo che rende possibile l'Internet of Things

/42

IBM Bluemix

28

Page 29: MQTT: il protocollo che rende possibile l'Internet of Things

/42

Amazon AWS IoT: overview

▪ Offre la più elevata quantità di servizi Cloud dislocati in ben 11 regioni geografiche e vanta la miglior offerta in termini di scalabilità e computazionalità

▪ AWS, nato nel 2006, solo pochi giorni fa (OTT-15) ha lanciato la soluzione “AWS IoT” (attualmente in “Beta”) che sfrutta il protocollo MQTT

▪ Free tier of 250K messages (IN/OUT) per month for 12 months. Therefore 5$ per million messages

29

Page 30: MQTT: il protocollo che rende possibile l'Internet of Things

/42

Amazon AWS IoT: caratteristiche

30

Page 31: MQTT: il protocollo che rende possibile l'Internet of Things

/42

Microsoft Azure IoT Suite

▪ La Suite IoT è stata lanciata molto recentemente (MAR-15) ▪ Microsoft ha dichiarato di puntare molto sull’IoT (Windows 10 for

Raspberry Pi) ▪ L’approccio è quello di mettere a disposizione “finished

applications to speed development of common scenarios” ▪ E’ possibile utilizzare il protocollo MQTT solo come layer

aggiuntivo in quanto non è incluso come soluzione nel “core” della Suite.

31

Page 32: MQTT: il protocollo che rende possibile l'Internet of Things

/42

Eurotech

▪ La suite EDC (Everywhere Device Cloud - iPaaS) fornisce una soluzione completa (HW & SW) che offre la connettività sicura e scalabile basata su MQTT

▪ La suite ESF (Everywhere Software Platform) è un framework finalizzato a rendere il più semplice possibile l’integrazione tra i dispositivi ed il cloud (EDC)

▪ Utilizza un’enhanced version del protocollo MQTT che ad esempio può gestire la “birth date” del dispositivo

▪ Modello di pricing basato su numero di dispositivi e/o numero di messaggi scambiati

▪ La suite può funzionare su AWS, Azure o anche in modalità standalone

32

Page 33: MQTT: il protocollo che rende possibile l'Internet of Things

/42

Eurotech EDC/ESF

33

Page 34: MQTT: il protocollo che rende possibile l'Internet of Things

/42

Client di riferimento MQTTDisponibile per i seguenti linguaggi: ▪ C++ ▪ C for embedded ▪ Go ▪ Java ▪ JavaScript ▪ Lua ▪ .Net ▪ Objective-C ▪ Python

Altri: https://github.com/mqtt/mqtt.github.io/wiki/libraries

• Client di riferimento per l’ecosistema MQTT

• Disponibile open-source

34

Page 35: MQTT: il protocollo che rende possibile l'Internet of Things

/42

Alcuni casi d’uso

35

Page 36: MQTT: il protocollo che rende possibile l'Internet of Things

/42

Monitoraggio oleodotti e piattaforme

36

Page 37: MQTT: il protocollo che rende possibile l'Internet of Things

/42

Facebook Messenger

▪ More than 850M Users ▪ Chat application ▪ Improved Battery ▪ Lower latency ▪ Less bandwidth

https://www.facebook.com/notes/facebook-engineering/building-facebook-messenger/10150259350998920

“By maintaining an MQTT connection and routing messages through our chat pipeline, we were able to often achieve phone-to-phone delivery

in the hundreds of milliseconds, rather than multiple seconds.”

37

Page 38: MQTT: il protocollo che rende possibile l'Internet of Things

/42

Una “smart home” open source

▪ Mosquitto MQTT + openHab su Raspberry Pi ▪ Arduino per la gestione dei sensori ▪ Monitoraggio e controllo remoto da tablet/

smartphone con app openHab

http://www.instructables.com/id/Uber-Home-Automation-w-Arduino-Pi

38

Page 39: MQTT: il protocollo che rende possibile l'Internet of Things

/42

Infomobilità e autotrasporti

▪ Ogni mezzo dispone di un device che raccoglie e invia i dati su posizione, velocità e consumi

▪ I dati raccolti vengono inviati “dove serve” ▪ Le informazioni sono analizzate e le decisioni sono prese in tempo reale da

un singolo backend

39

Page 40: MQTT: il protocollo che rende possibile l'Internet of Things

/42

Salute e medicina

▪ Ogni dispenser comunica con il server centrale in tempo reale inviando dati su mancate/errate assunzioni

▪ Le informazioni relative ad eventi di allarme scatenano delle azioni immediate (notifica telefonica, SMS, ecc)

1.ilpazientenon assumeilfarmaco

2.Ildispositivoinviaallarmealservercentrale(MQTToverGPRS)

3.Ilservercentrale(broker)invianotificaistantaneaalmedico

4.Ilmedicocontattailpaziente

40

Page 41: MQTT: il protocollo che rende possibile l'Internet of Things

/42

Credits▪ MQTT official web site : http://mqtt.org ▪ Mosquitto : http://mosquitto.org / https://www.eclipse.org/mosquitto ▪ Mosca: https://github.com/mcollina/mosca ▪ HiveMQ : http://www.hivemq.com ▪ M2Mqtt C# Client : http://m2mqtt.codeplex.com ▪ Eclipse Paho project : http://www.eclipse.org/paho/ ▪ MQTT-SN: http://mqtt.org/2013/12/mqtt-for-sensor-networks-mqtt-sn ▪ Amazon AWS IoT: https://aws.amazon.com/iot/ ▪ IBM Bluemix IoT: https://www.ibm.com/cloud-computing/bluemix/solutions/iot/ ▪ Microsof Azure IoT Suite: http://www.microsoft.com/en-us/server-cloud/internet-of-things/ ▪ Eurotech: http://www.eurotech.com/

41

Page 42: MQTT: il protocollo che rende possibile l'Internet of Things

/42

Grazie per l’attenzione!

DOMANDE ?

42

OMNYS-InformationTechnologywww.omnys.com

@SMAUMilano2015:PAD.1-STANDE11