# Standards

## Introduction

## MQTT

Message Queue Telemetry Transport
Protocole de transmission de télémesure en machine-to-machine léger.
Basé sur des files d'attentes avec un API basé sur le patron de Notification.

Commande
Notification

- créée en 1999 par IBM et Eurotech.
- adopté par OASIS (version actuelle 5.0)

### Exemple

```
   +----------+
   | Client A |-.
   +----------+ |               +---------------+
                |               | Application X |
   +----------+ `>+--------+<==>+---------------+
   | Client B |-->| Broker |
   +----------+ .>+--------+<==>+---------------+
                |            \  | Application Y |
   +----------+ |             \ +---------------+
   | Client C |-'              \__ abonnement / notification IP
   +----------+  \__ messages
```


- n Clients       (STM32, Aruino, Rapberry Pi)
- 1 Broker        (en ligne, serveur)
- m Appilications (PC, Smartphone)

### Modèles

Topic
- Des queues parallèlles de messages.
- Permet aux clients d'échanger des informations d'une sémantique spécifique.

Session
- Une session qui identifie l'ensemble des topics et la séquence des messages reçus.
- Toutes les communications client / serveur se feront par sessions.

Subscriptions
- Contrairement aux sessions, un abonnement attache un client à un topic.

```
   clients                            applications

+-----------+      +- broker -+      +------------+
|           |      |          +--1-->|            |
| publisher +--1-->| topic 1  |      | subscriber |
|           |      |          +--4-->|            |
+-----------+      | topic 2  |      +------------+
                   |          |
+-----------+      | topic 3  |      +------------+
|           +--1-->|          |      |            |
| publisher |      | topic 4  +--4-->| subscriber |
|           +--2-->|          |  ^\  |            |
+-----------+  ^\  +----------+    \ +------------+
                 \                  \_ subscription -> notifications
                  \_ publications
```

### Trame

```
+----+-+-+-+-----------+---------+-----------+
| 4  |1|2|1|     8     |    C    | remaining |
+----+-+-+-+-----------+---------+-----------+
|Type|D|Q|R| remaining | options |   DATA    |
+----+-+-+-+-----------+---------+-----------+
      ^\^\^\ ^^^^^^^^^\  ^^^^^^^\_ champ d'options
        \ \ \          \_ taille de DATA
         \ \ \_ RETAIN
          \ \__ QoS
           \___ DUPL
```

- type
	- 3: publish
	- .: ...
- DUPL : drapeau signifiant que le message est une duplication
- QoS  : Qualité de service
	- 0: envoyé
	- 2: une reception
	- 3: toute les réceptions
- 

## CoAP

## Comparaisons

## IoT pour la gestion d'appareils : LwM2M
