Vous êtes sur la page 1sur 19

Protocole MQTT-SN

MQTT for Sensor Networks

Réalisé par:
HADJ SADEK Nouha
YAMANI Mehdia 1

ZBAKH Douae
Plan

Introduction
- MQTT VS MQTT-SN
- Architecture de MQTT-SN

Format de message
- Entêtedu message
- Message variable Part
- Procédure de connexion

Simulation
2
Introduction

Dans le monde des protocoles M2M et IoT, il existe de nombreux protocoles


concurrents en quête d’attention.

3
Les réseaux de capteurs ont généralement un nœud avec un processeur de faible
puissance, et la mémoire flash sera de quelques KB.
Pour que le nœud du capteur communique, il a besoin d'au moins une puce Ethernet ou
un modem GPRS.

Complexes en fonctionnement
Le coût de l'ensemble
Consommation d'énergie

La complexité de la conception augmente et chaque noeud doit avoir une sous-unité


basée sur la pile TCP-IP pour fonctionner efficacement. Ceci est illustré dans le
diagramme ci-dessous

4
MQTT vs MQTT-SN

MQTT MQTT-SN

Protocole léger Il a spécifiquement été crée


pour les réseaux de capteurs

Besoin de TCP-IP Ne dépend pas de TCP-IP


5
Architecture de MQTT-SN

6
Format des messages

7
Format général des messages

Message Header Message Variable Part


(2 ou 4 octets) (n octets)

Le format général d'un message MQTT-SN est indiqué dans le tableau:


Un message MQTT-SN se compose de deux parties:
• Un en-tête de 2 ou 4 octets et qui est toujours présent et contient les mêmes champs
• Une partie variable facultative, son contenu dépendent du type de message considéré.

8
1. En-tête du message
Length MsgType
(1 ou 3 octets) (1 octet)

Longueur: Spécifie le nombre total d'octets contenus dans le message (Y compris le champ
Longueur lui-même).
• Si le premier octet du champ Longueur est codé "0x01" alors le champ est de 3 octets; Dans ce
cas, les deux octets suivants spécifient le nombre total d'octets du message (l'octet le plus
significatif en premier).
• Sinon, la longueur du champ est seulement 1 octet et il spécifie lui même le nombre total
d'octets contenus dans le message.
Le format de 3 octets permet le codage de messages allant jusqu’à 65535 octets.
Les messages avec des longueurs plus petites que 256 octets peuvent utiliser le format le plus
court de 1 octet. 9
Type du message: Doit être fixé à l'une des valeurs suivantes.

MsgType Field Value MsgType MsgType Field Value MsgType


0x00 ADVERTISE 0x10 PUBREL
0x01 SEARCHGW 0x11 reserved
0x02 GWINFO 0x12 SUBSCRIBE
0x03 Reserved 0x13 SUBACK
0x04 CONNECT 0x14 UNSUBSCRIBE
0x05 CONNACK 0x15 UNSUBACK
0x06 WILLTOPICREQ 0x16 PINGREQ
0x07 WILLTOPIC 0x17 PINGRESP
0x08 WILLMSGREQ 0x18 DISCONNECT
0x09 WILLMSG 0x19 reserved
0x0A REGISTER 0x1A WILLTOPICUPD
0x0B REGACK 0x1B WILLTOPICRESP
0x0C PUBLISH 0x1C WILLMSGUPD
0x0D PUBACK 0x1D WILLMSGRESP
0x0E PUBCOMP 0x1E-0xFD reserved
0x0F PUBREC 0xFE Encapsulated message
0xFF reserved

10
2. Message Variable Part
Le contenu de la partie variable du message dépend du type de message.
Les champs suivants sont définis pour cette partie:

 ClientId: Comme avec MQTT, le champ ClientId a une longueur variable et contient une
chaîne longue de 1 à 23 caractères qui identifie le client sur le serveur.
 Data: Le champ Données correspond à la charge utile d'un message MQTT PUBLISH. Il a une
longueur variable et contient les données d'application qui sont publiées
 Duration: Le champ Durée est de 2 octets et spécifie la durée d'une période en secondes. La
valeur maximale qui peut être codée est d'environ 18 heures.
 Flags: Le champ Flags est d’un octet et contient les drapeaux suivants:

DUP QoS Retain Will CleanSession TopicId Type


7 6,5 4 3 2 1,0
11
2. Message Variable Part

 GwAdd: Le champ GwAdd a une longueur variable et contient l'adresse d'un GW. Il dépend
du réseau sur lequel MQTT-SN fonctionne. Par exemple, dans un réseau ZigBee, le réseau
l'adresse est de 2 octets.
 GwId: Le champ GwId est de 1 octet de long et identifie une passerelle de façon unique.
 MsgAdd: Le champ MsgId est de 2 octets et correspond au paramètre MQTT ‘Message Id'. Il
permet à l'expéditeur de faire correspondre un message avec son accusé de réception.
 ProtocoId: Le ProtocolId est de 1 octet. Il est seulement présent dans un message CONNECT
et correspond au ‘protocol name‘ et ‘protocol version'. Il est codé 0x01. Toutes les autres
valeurs sont réservées.

12
2. Message Variable Part
 Radius: Le champ Radius est de 1 octet et indique la valeur du rayon de diffusion. La valeur
0x00 signifie "diffusion à tous les noeuds du réseau ".
 ReturnCode: de 1 octet.
ReturnCode Value Meaning
0x00 Accepted
0x01,0x02,0x03 Rejected
0x04-0x0F reserved

 TopicId: Le champ TopicId est de 2 octets et contient la valeur de l'ID de rubrique. Les valeurs
"0x0000" et "0xFFFF" sont réservées et ne doivent donc pas être utilisées.
 TopicName: Le champ TopicName a une longueur variable et contient une chaîne codée en
UTF8 qui spécifie le nom de la rubrique

13
3. Procédure de connexion
Configuration de la connexion du client :
 Un client MQTT-SN doit configurer une connexion à un GW avant qu'il puisse échanger des
informations avec lui. La procédure pour établir une connexion avec un GW est illustrée à la
Fig. 3, dans laquelle il est supposé que le client demande à la passerelle de demander le
transfert du WILLTOPIC et du WILLMSG. Cette demande est indiquée en définissant le Will
Flag du message CONNECT.
 Le client envoie ensuite ces deux informations au GW à la réception des messages de
demande correspondants WILLTOPICREQ et WILLMSGREQ. La procédure est terminée par le
message CONNACK envoyé par le GW.
 Si l'indicateur Will Flag n'est pas défini, le GW répond directement par un message
CONNACK.

14
3. Procédure de connexion

15
Simulation

16
Serveur
Démarrage de serveur

17
Client
tcp://192.168.43.39:789

18
19

Vous aimerez peut-être aussi