EA2014ProtforIoT

= Présentation =


 * Enseignants : Georges-Pierre Bonneau, Didier Donsez (EA2014)
 * Sujet : Protocoles de communications pour l'IoT et le M2M
 * Date : 10 octobre 2014
 * Auteur : Rodolphe Fréby 
 * Télécharger les slides de la présentation : A venir

=Résumé=

L’Internet des objets représente la connexion à internet de la plupart des objets de notre vie courante, du monde réel, tels que des capteurs, des montres, ... 2 milliards. C’est le nombre approximatif de ces objets connectés aujourd’hui (en 2014). Certaines estimations placent ce chiffre à 8 milliards pour 2020, d’autres à beaucoup plus. Il est donc nécessaire de concevoir et standardiser des protocoles pour permettre à ces objets de communiquer entre eux, les anciens protocoles étant trop lourd pour ces petits appareils.

=Mots clefs= Protocole, Machine-to-Machine, Internet des Objets, Open-source, MQTT, CoAP, XMPP

=Abstract=

=Synthèse=

[...]les objets parlent réellement et vous préviennent quand il y a besoin de faire/savoir quelque chose. Par exemple, le frigo détecte un surplus de glace, il vous envoie donc un message pour vous dire quoi faire. orange

[...]the Internet of Things—what we view as the latest wave of the Internet -- connecting physical objects in ways that help us analyze and control our environment to provide better safety, comfort, and efficiency. cisco

Et si demain votre maison était équipée de capteurs de températures, d’humidités dans différentes pièces afin de régler automatiquement le chauffage? Et si ce types de données pouvaient être relevées dans une ville afin de notifier les citoyens à de nombreux sujet? Ces objets, de plus en plus nombreux, renvoie une grande quantité de données au travers des réseaux. Ces appareils ont besoin de protocoles de communication pouvant fonctionner sur des appareils avec une puissance de calcul limitée, et sur des réseaux avec une forte latence.

De nombreux protocoles de communication pour l’Internet des objets existent déjà : MQTT, COaP, XMPP… Chacun d’entre eux possède ces propres particularités. Quand MQTT utilisera le principe de publication et souscription, COaP s’inspirera plutôt du protocole HTTP avec des requêtes de type GET, PUT, …

Présentation
Message Queue Telemetry Transport. Il s’agit d’un protocole de communication pour l’internet des objets basés sur le principe de la plublication et souscription. Conçu en 1999 par IBM et Eurotech, il est actuellement dans sa version 3.1. Il a été conçu pour être utilisé comme protocole de communication de machine à machine (M2M : Machine to Machine) par des systèmes avec une puissance limitée sur des réseaux non fiables. il a été récemment proposé à OASIS (Organization for the Advancement of Structured Information Standards) comme standard de communication pour l’Internet des objets. Il a été choisi en 2012 pour être utilisé au sein du logiciel Facebook Messengercomme protocole pour l’envoie de message.

Principe de fonctionnement
Le fonctionnement du protocole MQTT est simple : les objets publient des messages sur des topics.Les clients intéréssés par un ou plusieurs topics en particulier s’inscrivent sur ceux-ci auprès d’un broker. A emission d’un message par un objet sur un topic donné, le broker aura pour tâche d’envoyer le message à tous les clients s’étant inscrits sur le topic en question. Il existe de nombreux broker pour MQTT, l'un d'eux est Mosquitto, un broker open source capable de supporter le protocole TLS.



L'image ci-dessus explique le principe de fonctionnement du protocole :
 * Dans un premier temps, des clients s'inscrivent pour différents topics auprès du broker.
 * Une machine décide de publier une information sur un topic donné. Ici, le capteur décide de publier la valeur 25 sur le topic nommé "Temp".
 * La valeur 25 va être envoyée aux machines A et B puisqu'elles ont toutes deux souscrit à ce topic.
 * Nous pouvons imaginer que par la suite, le capteur publie la valeur 10 sur le topic "Humi", dans ce cas, seule la machine B recevra la valeur 10, car elle est la seule à avoir souscrit à ce topic.

Fonctionnalités
MQTT possède plusieurs particularités :
 * Le protocole fonctionne au dessus de TCP/IP
 * La QoS est disponible, avec 3 options différentes, à savoir :
 * At least once : au moins un message arrivera à destination
 * At more once : au plus un message arrivera à destination
 * Exactly once : un et un seul message arrivera à destination
 * Des librairies disponibles dans plusieurs langages : Java, Arduino, C, Android…
 * La possibilité d’utiliser un système d’authentification avec nom d’utilisateur et un mot de passe. De plus, SSL peut être utilisé, mais de manière indépendante du protocole MQTT.

MQTT-SN
Anciennement MQTT-S, MQTT-SN (pour Message Queue Telemetry Transport for Sensor Networks) utilise UDP et non TCP, cela permettant de recevoir les messages dans n’importe quel ordre. Il a été conçu pour être utilisé dans réseaux sans fils de capteurs. L’une des différences entre MQTT et MQTT-SN est la prise en charge des clients se mettant en veille pour le second. Le serveur conserve les messages destinés aux appareils endormis, afin de les communiquer plus tard à leur réveil.

=COaP=

Histoire
CoAP (pour Constrained Application Protocol) est un protocole conçu pour la communication dans l'IoT et le M2M, basé sur le principe du protocole HTTP. La standardisation de ce protocole s'effectue avec l'IETF (The Internet Engineering Task Force). =Note et Références=

MQTT

 * Site officiel du protocole MQTT
 * OASIS à propos de MQTT
 * github d'un projet d'inclusion de MQTT avec Nagios
 * Page d'information pour MQTT-SN
 * Présentation de MQTT avec Mosquitto