Introduction à
MQTT
Agenda
Internet of Things ? M2M?
Les protocoles de l’IoT
MQTT
C’est quoi MQTT?
Fonctionnalités
Briques
Démo
Questions
Machine-to-Machine?
Internet of Things?
Technology that supports
wired or wireless
communication
between devices
❝
IoT protocols
… les objets sont limités
… les réseaux sont limités
… les applications sont différentes
Des besoins différents
Device Management
Statistiques interface radio, configuration de l’objet, mise à
jour du logiciel (Firmware et application)…
OMA-DM, TR-069, LWM2M…
Réseau local de capteurs
Transmettre des données, souvent sans-fil ou courant porteur
Zigbee, X10, Bluetooth Smart, …
Interface homme-machine
Afficher des données sur une application mobile, dashboards,
HTTP, Websockets, ...
MQTT?
MQTT?
MQ Telemetry Transport
MQTT?
M is for Messaging… (mmmmaybe!)
Q is not for Queue ☺
Publish/Subscribe
Léger (bande passante, batterie, …)
PUB
/
e
e232/
emp
SUB
/
e
e232/
/
e
e232/
emp
21.3
21.3
MQTT history
… c’est pas neuf
Inventé en 1999 (Andy Stanford-Clark, Arlen Nipper)
Royalty-free depuis 2010
En cours de standardisation à l’OASIS depuis 2013
Principales fonctionnalités
Wildcards
Quality of Service
Last Will & Testament
Retained Messages
Web sockets
MQTT Wildcards
● Le signe (#) remplace n’importe quel nombre
de niveau de topic.
● Le signe (+) remplace seulement un niveau de
topic.
Exemples
mygreenhouse/sensors/#
+/sensors/temperature
MQTT Topics : bonnes pratiques
Photo Credit:oskay
● La bonne organisation des topics vous permet
d’utiliser les wildcards
Ex: sensorID/temp plutôt que
temp/sensorID
● Pas besoin de commencer par un ‘/’
● Persistez vos topics si vous le pouvez
MQTT Quality-of-Service
L’option QoS permet de contrôler le niveau de
qualité de l’acheminement du message par le
broker.
MQTT QoS 0
Un message publié avec QoS=0 sera reçu, par les
client souscrits au topic, au mieux une fois (“fire &
forget”).
MQTT QoS 1
Un message publié avec QoS=1 sera reçu au
moins une fois. (simple accusé de réception)
MQTT QoS 2
Un message publié avec QoS=2 sera reçu
exactement une fois par les clients (double
accusé).
MQTT Last will & Testament
Les client peuvent se connecter et se déconnecter
du réseau fréquemment de façon inattendue.
Last Will & Testament permet de notifier une
déconnexion anormale.
Last Will & Testament défini lors de la connexion.
MQTT Retained messages
L’option de publication Retained permet à un
message publié d’être stocké par le broker.
Lors d’une souscription tardive le message est
publié de nouveau.
MQTT
Sécurité: TLS (PSK ou non).
Transport sur websockets
Photo Credit:oskay
Boîte à outils!
MQTT @ Eclipse IoT
Eclipse Paho
Clients MQTT Open-source.
Choisissez votre langage !
Java, JavaScript, C/C++, Go, Obj C, Lua, Python …
http://eclipse.org/paho
https://dev.eclipse.org/mailman/listinfo/paho-dev
Eclipse Mosquitto
Implementation serveur de MQTT (MQTT-SN à
venir), écrit en C
Léger?
Le binaire fait ~120kB
~3MB RAM pour 1000 clients connectés
http://eclipse.org/mosquitto
https://dev.eclipse.org/mailman/listinfo/mosquitto-dev
MQTT pour Arduino!
● Supporte seulement QoS 0
● Taille max d’un message limité
Code: https://github.
com/knolleary/pubsubclient
Plus d’info sur Nick O’Leary’s blog.
Node-RED
Outil visuel pour “cabler” l’IoT
Supporte MQTT
http://nodered.org
Questions?
N’oubliez pas..
Eclipsecon France 18-19 Juin
Centre des congrès Pierre Baudis
MQTT et plus encore! CoAP, LWM2M, Lua,
Espruino, people counter …
Merci!
Questions supplémentaires?
Julien Vermillard
Twitter @vrmvrm
jvermillard@sierrawireless.com

IoT Toulouse : introduction à mqtt