MQTT: qu'est-ce que la "QoS" (qualité de service) et comment ça marche?

3 minutes de lecture

Logo MQTT

La soi-disant qualité de service (en bref QoS) est parmi les caractéristiques les plus importantes de la proprotocole MQTT. la qualité de service fait référence au degré de précision dans la livraison des messages MQTT entre les expéditeurs et le courtier et le courtier et les abonnés, ou la précision qui définit la garantie d’une transmission efficace et réussie de ces messages.

Il est trois niveaux de service QoS:

  • Au plus une fois (Niveau 0)
  • Au moins une fois (Niveau 1)
  • Exactement une fois (Niveau 2)

QoS MQTT est fondamentalement concerné les deux phases de livraison d'un message envoyé par un client émetteur et reçu par un client abonné:

  • envoi de l'expéditeur au courtier;
  • envoi du courtier au destinataire final.

Dans la première phase, l'expéditeur décide du niveau de QoS associé au message et l'envoie au courtier; dans le second cas, le courtier transmet à son tour ce message à tous les clients disposant d'un abonnement à ce message utilisant le même niveau de qualité de service, à moins que les abonnés du client ne disposent pas provu l'enregistrement indiquant un niveau de QoS inférieur. Dans ce cas, le courtier transformera le message avec un niveau de QoS inférieur.

La qualité de service est très importante car elle permet à l'expéditeur de choisir le niveau de service en fonction de la qualité du réseau et de la logique. applicativa. Ci-dessous, nous voyons les différentes différences.

QoS 0

Le niveau minimum de QoS est zéro. C'est un niveau conçu pour une performance maximale avec un minimum d'effort: dans ce scénario, il n'y a aucune garantie de livraison. L'expéditeur envoie au courtier et oublie ça, n'attend pas de réponse non plus provoit un éventuel renvoi. Pour faire simple, comment ça va, ça va.

QoS 1

Dans ce scénario, l'expéditeur (qui est celui qui envoie le message initial au courtier ou le courtier lui-même qui transmet un message au destinataire final). garde le message en mémoire jusqu'à ce qu'il reçoive du destinataire le ok de la réception a eu lieu. S'il ne le reçoit pas dans un délai raisonnable, il l'envoie à nouveau, une deuxième fois, et attend à nouveau une réponse, etc. L'utilisation de QoS 1 pourrait donc se produire plusieurs livraisons du même message. Lorsque le courtier reçoit un message marqué QoS 1 provvede immédiatement pour le tourner vers les abonnés de ce message puis répond "fini"À l'expéditeur; si le délai entre l'envoi et la réception du paquet de confirmation est trop long (par exemple, dans des réseaux encombrés), l'expéditeur envoie à nouveau le message, ce qui déclenche à nouveau la totalité de la chaîne et provoque l'envoi en double.

QoS 2

C'est le mode plus lent mais aussi plus fiable: essentiellement la procela implique un double rebond entre l'expéditeur et le destinataire afin de confirmer à l'expéditeur la prise en charge effective du message et donc l'annulation d'un éventuel renvoi. Cela garantit que le message n'arrive qu'une seule fois, mais il est évidemment plus coûteux (au minimum) pour les systèmes, le réseau et la synchronisation.

Lequel est le meilleur?
Il n'y a évidemment pas de réponse unique. Comme cela arrive souvent, cela dépend du scénario de appde la protocollo MQTT, conçu pour les communications légères et rapides, mais sa configuration en termes de QoS doit être soigneusement calibré en fonction du domaine d'utilisation.

Nous recommandons QoS 0 lorsque:

  • la connexion réseau entre les clients et le courtier est fiable, rapide et stable. Trivial, lors de l'utilisation d'une connexion par câble;
  • n'est pas un proproblème si un message est perdu;
  • il n'est pas nécessaire d'utiliser la mise en file d'attente des messages et les sessions persistantes.

Nous recommandons QoS 1 lorsque:

  • la connexion réseau peut parfois être instable, comme dans le cas de Wi-Fi ménage;
  • n'est pas un proproblème pour éventuellement recevoir des messages en double;
  • il n'est pas possible de supporter la surcharge donnée par QoS 2.

Enfin, nous recommandons le QoS 2 lorsque è critique le fait de toujours garantir une et une seule livraison pour chaque message.

dans domotique personnelle - vous l'avez peut-être déjà compris vous-même - la QoS recommandée est 1comme d'habitude la réception (si rare soit-elle) de messages en double ne provoque généralement pas proproblèmes de toute nature. Imaginons un sujet comme celui-ci:

cmnd /Tasmota/ POWER 1

qui commande généralement un actionneur équipé d'un firmware Tasmota désactiver le relais. Ce serait peut-être un prosi l'actionneur a reçu le même message deux fois de suite? Certainement pas. Au lieu de cela, ce serait le fait de non recevez-le, ce qui pourrait arriver si vous utilisez QoS 0.

Il y a évidemment des exceptions: par exemple, dans le cas d'un Système d'alarme MQTT il est conseillé d’utiliser la QoS 2, car il est concevable qu’il soit plus approrecevoir des commandes unique et certain, toujours.

Comment configurer MQTT sur les périphériques du propremière domotique