EA2014ProtforIoT: Difference between revisions
(→XMPP) |
|||
Line 86: | Line 86: | ||
Les ressources sont accessibles au travers d'URI comme pour HTTP. Un exemple d'URI CoAP (possible d'y accéder si vous possédez le plugin [https://addons.mozilla.org/fr/firefox/addon/copper-270430/ Copper] pour Firefox) : coap://iot.eclipse.org:5683/. Un exemple est proposé ci-dessous. |
Les ressources sont accessibles au travers d'URI comme pour HTTP. Un exemple d'URI CoAP (possible d'y accéder si vous possédez le plugin [https://addons.mozilla.org/fr/firefox/addon/copper-270430/ Copper] pour Firefox) : coap://iot.eclipse.org:5683/. Un exemple est proposé ci-dessous. |
||
[[Image:ExempleCopper.png|300px|thumb| |
[[Image:ExempleCopper.png|300px|thumb|right|exemple d'un résultat d'une requête GET sur l'un des objets de l'URI coap://iot.eclipse.org:5683/ avec le plugin pour Firefox Copper.]] |
||
Revision as of 16:49, 8 October 2014
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 <rodolphe.freby@e.ujf-grenoble.fr>
- 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
The Internet of Things (IoT) is the Internet connection of most objects in our everyday life, the real world, such as sensors, watches, ...
2 Billion. this is an approximate number of these connected Devices nowadays (2014).
Some estimates put this figure at $ 8 billion for 2020, others much later. It is therefore necessary to develop and standardize the protocols to allow these objects to communicate with each other the old protocols are too heavy for these small devices.
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.
[...]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.
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, …
MQTT
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.
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, à savoir le transfert de documents. La standardisation de ce protocole s'est majoritairement faite par l'IETF (The Internet Engineering Task Force). La différence réside dans le faite que CoAP a été conçu pour être utilisé par des petits équipements embarqués et sur des réseaux contraints.
Fonctionnement
CoAP repose sur le principe de requêtes et de réponses entre un client et un serveur. Ce qui est appelé serveur est général l'objet (le capteur, la carte embarquée) qui récolte les données, auquel le client vient demander des informations. Le client peut effectuer plusieurs types de requêtes, similaires au protocole HTTP :
- GET : permet de récupérer une ressource.
- PUT : pour créer une nouvelle ressource sur le serveur à l'URI demandée.
- POST : permet de créer ou modifier une ressource sur le serveur à l'URI demandée.
- DELETE : pour supprimer une ressource sur le serveur à l'URI demandée.
Les ressources sont accessibles au travers d'URI comme pour HTTP. Un exemple d'URI CoAP (possible d'y accéder si vous possédez le plugin Copper pour Firefox) : coap://iot.eclipse.org:5683/. Un exemple est proposé ci-dessous.
Il est possible pour le serveur d'autoriser une souscription afin de notifier le client de manière récurrente sur l'état d'une valeur. Le client peut également se désinscrire s'il le souhaite. La valeur envoyée par le serveur peut avoir une durée de validité ou non. Tout comme le protocole HTTP, CoAP utilise des codes dans les réponses renvoyées à la suite de requêtes. Ceux-ci sont issus du protocole HTTP, avec certains en plus créés pour CoAP. Ce protocole utilise UDP et non TCP.
Un principe de QoS est possible, en demandant ou non l'acquittement des messages à l'aide d'un flag pour le type de message :
- CON : le message doit recevoir un acquittement.
- NON : le message n'a pas besoin d'acquittement.
- ACK : cela identifie un message d'acquittement.
- RST : il s'agit d'un message "reset". Envoyé à réception d'un message typé CON pour lequel des informations seraient manquantes.
Une autre particularité de CoAP par rapport à HTTP est d'avoir des messages plus petit. La taille minimum possible est ainsi de 4 octets.
XMPP
Contexte
XMPP (Extensible Messaging and Presence Protocol) est à la base utilisé comme protocole utilisant TCP pour l'envoie de messages instantanés, en utilisant XML. Créer en 1998 sous le nom de Jabber, celui-ci est utilisé par de nombreux logiciels tels que Facebook, Skype, Google Talk, IChat, MSN, ...
Notes 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