Courte introduction à MQTT (MQ Telemetry Transport), protocole pour l'internet des objets.
Protocole publish subscribe léger, à utiliser au dessus de TCP et de SSL/TLS.
Il permet de connecter facilement des objets où la légèreté du code et du protocole est primordiale.
5. IoT protocols
… les objets sont limités
… les réseaux sont limités
… les applications sont différentes
6. 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, ...
12. 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
14. 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
15. 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
17. MQTT QoS 0
Un message publié avec QoS=0 sera reçu, par les
client souscrits au topic, au mieux une fois (“fire &
forget”).
18. MQTT QoS 1
Un message publié avec QoS=1 sera reçu au
moins une fois. (simple accusé de réception)
19. MQTT QoS 2
Un message publié avec QoS=2 sera reçu
exactement une fois par les clients (double
accusé).
20. 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.
21. 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.
26. 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
27. 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.