MQTT: il protocollo che rende possibile l'Internet of Things
Transcript of MQTT: il protocollo che rende possibile l'Internet of Things
![Page 1: MQTT: il protocollo che rende possibile l'Internet of Things](https://reader034.fdocuments.net/reader034/viewer/2022042907/587185c31a28ab2c198b4ded/html5/thumbnails/1.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022042907/587185c31a28ab2c198b4ded/html5/thumbnails/2.jpg)
/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](https://reader034.fdocuments.net/reader034/viewer/2022042907/587185c31a28ab2c198b4ded/html5/thumbnails/3.jpg)
/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](https://reader034.fdocuments.net/reader034/viewer/2022042907/587185c31a28ab2c198b4ded/html5/thumbnails/4.jpg)
/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](https://reader034.fdocuments.net/reader034/viewer/2022042907/587185c31a28ab2c198b4ded/html5/thumbnails/5.jpg)
/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](https://reader034.fdocuments.net/reader034/viewer/2022042907/587185c31a28ab2c198b4ded/html5/thumbnails/6.jpg)
/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](https://reader034.fdocuments.net/reader034/viewer/2022042907/587185c31a28ab2c198b4ded/html5/thumbnails/7.jpg)
/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](https://reader034.fdocuments.net/reader034/viewer/2022042907/587185c31a28ab2c198b4ded/html5/thumbnails/8.jpg)
/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](https://reader034.fdocuments.net/reader034/viewer/2022042907/587185c31a28ab2c198b4ded/html5/thumbnails/9.jpg)
/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](https://reader034.fdocuments.net/reader034/viewer/2022042907/587185c31a28ab2c198b4ded/html5/thumbnails/10.jpg)
/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](https://reader034.fdocuments.net/reader034/viewer/2022042907/587185c31a28ab2c198b4ded/html5/thumbnails/11.jpg)
/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](https://reader034.fdocuments.net/reader034/viewer/2022042907/587185c31a28ab2c198b4ded/html5/thumbnails/12.jpg)
/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](https://reader034.fdocuments.net/reader034/viewer/2022042907/587185c31a28ab2c198b4ded/html5/thumbnails/13.jpg)
/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](https://reader034.fdocuments.net/reader034/viewer/2022042907/587185c31a28ab2c198b4ded/html5/thumbnails/14.jpg)
/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](https://reader034.fdocuments.net/reader034/viewer/2022042907/587185c31a28ab2c198b4ded/html5/thumbnails/15.jpg)
/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](https://reader034.fdocuments.net/reader034/viewer/2022042907/587185c31a28ab2c198b4ded/html5/thumbnails/16.jpg)
/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](https://reader034.fdocuments.net/reader034/viewer/2022042907/587185c31a28ab2c198b4ded/html5/thumbnails/17.jpg)
/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](https://reader034.fdocuments.net/reader034/viewer/2022042907/587185c31a28ab2c198b4ded/html5/thumbnails/18.jpg)
/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](https://reader034.fdocuments.net/reader034/viewer/2022042907/587185c31a28ab2c198b4ded/html5/thumbnails/19.jpg)
/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](https://reader034.fdocuments.net/reader034/viewer/2022042907/587185c31a28ab2c198b4ded/html5/thumbnails/20.jpg)
/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](https://reader034.fdocuments.net/reader034/viewer/2022042907/587185c31a28ab2c198b4ded/html5/thumbnails/21.jpg)
/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](https://reader034.fdocuments.net/reader034/viewer/2022042907/587185c31a28ab2c198b4ded/html5/thumbnails/22.jpg)
/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](https://reader034.fdocuments.net/reader034/viewer/2022042907/587185c31a28ab2c198b4ded/html5/thumbnails/23.jpg)
/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](https://reader034.fdocuments.net/reader034/viewer/2022042907/587185c31a28ab2c198b4ded/html5/thumbnails/24.jpg)
/42
MQTT … in pratica
24
![Page 25: MQTT: il protocollo che rende possibile l'Internet of Things](https://reader034.fdocuments.net/reader034/viewer/2022042907/587185c31a28ab2c198b4ded/html5/thumbnails/25.jpg)
/42
I principali Broker MQTT
MOSQUITTO
25
![Page 26: MQTT: il protocollo che rende possibile l'Internet of Things](https://reader034.fdocuments.net/reader034/viewer/2022042907/587185c31a28ab2c198b4ded/html5/thumbnails/26.jpg)
/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](https://reader034.fdocuments.net/reader034/viewer/2022042907/587185c31a28ab2c198b4ded/html5/thumbnails/27.jpg)
/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](https://reader034.fdocuments.net/reader034/viewer/2022042907/587185c31a28ab2c198b4ded/html5/thumbnails/28.jpg)
/42
IBM Bluemix
28
![Page 29: MQTT: il protocollo che rende possibile l'Internet of Things](https://reader034.fdocuments.net/reader034/viewer/2022042907/587185c31a28ab2c198b4ded/html5/thumbnails/29.jpg)
/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](https://reader034.fdocuments.net/reader034/viewer/2022042907/587185c31a28ab2c198b4ded/html5/thumbnails/30.jpg)
/42
Amazon AWS IoT: caratteristiche
30
![Page 31: MQTT: il protocollo che rende possibile l'Internet of Things](https://reader034.fdocuments.net/reader034/viewer/2022042907/587185c31a28ab2c198b4ded/html5/thumbnails/31.jpg)
/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](https://reader034.fdocuments.net/reader034/viewer/2022042907/587185c31a28ab2c198b4ded/html5/thumbnails/32.jpg)
/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](https://reader034.fdocuments.net/reader034/viewer/2022042907/587185c31a28ab2c198b4ded/html5/thumbnails/33.jpg)
/42
Eurotech EDC/ESF
33
![Page 34: MQTT: il protocollo che rende possibile l'Internet of Things](https://reader034.fdocuments.net/reader034/viewer/2022042907/587185c31a28ab2c198b4ded/html5/thumbnails/34.jpg)
/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](https://reader034.fdocuments.net/reader034/viewer/2022042907/587185c31a28ab2c198b4ded/html5/thumbnails/35.jpg)
/42
Alcuni casi d’uso
35
![Page 36: MQTT: il protocollo che rende possibile l'Internet of Things](https://reader034.fdocuments.net/reader034/viewer/2022042907/587185c31a28ab2c198b4ded/html5/thumbnails/36.jpg)
/42
Monitoraggio oleodotti e piattaforme
36
![Page 37: MQTT: il protocollo che rende possibile l'Internet of Things](https://reader034.fdocuments.net/reader034/viewer/2022042907/587185c31a28ab2c198b4ded/html5/thumbnails/37.jpg)
/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](https://reader034.fdocuments.net/reader034/viewer/2022042907/587185c31a28ab2c198b4ded/html5/thumbnails/38.jpg)
/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](https://reader034.fdocuments.net/reader034/viewer/2022042907/587185c31a28ab2c198b4ded/html5/thumbnails/39.jpg)
/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](https://reader034.fdocuments.net/reader034/viewer/2022042907/587185c31a28ab2c198b4ded/html5/thumbnails/40.jpg)
/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](https://reader034.fdocuments.net/reader034/viewer/2022042907/587185c31a28ab2c198b4ded/html5/thumbnails/41.jpg)
/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](https://reader034.fdocuments.net/reader034/viewer/2022042907/587185c31a28ab2c198b4ded/html5/thumbnails/42.jpg)
/42
Grazie per l’attenzione!
DOMANDE ?
42
OMNYS-InformationTechnologywww.omnys.com
@SMAUMilano2015:PAD.1-STANDE11