Hermetry parle MQTT 3.1.1. Cette page est la référence de connexion pour les développeurs de dispositifs : comment atteindre le broker, comment se connecter, comment les sessions se comportent, ce qui est acquitté et quand, et que faire lorsqu’une connexion est refusée. Les topics et les charges utiles sont décrits dans la référence des topics et charges utiles MQTT.
Connexion
| Élément | Valeur |
|---|---|
| Protocole | MQTT 3.1.1 (niveau de protocole 4). Un CONNECT pour MQTT 5 est refusé avec CONNACK 1. |
| Port, TLS | 8883 |
| Port, sans chiffrement | 1883, uniquement pour les dispositifs d’un profil qui autorise le MQTT sans chiffrement |
| Hôte | L’hôte du broker indiqué sur la carte Détails de connexion du dispositif. Utilisez l’hôte de la région de votre organisation. |
| Session propre | Envoyez true. Un CONNECT avec false est traité comme une session propre. |
| Keepalive | Utilisez le keepalive MQTT. Un keepalive de 0, ou supérieur au maximum du broker (300 secondes sur une installation par défaut), est appliqué au maximum. |
| Message de dernière volonté | Autorisé, mais ignoré. Hermetry détermine lui-même l’état de la connexion. |
| Indicateur retain | Ignoré. Le message est traité, pas conservé. |
| Délai de connexion | À partir de la connexion TCP jusqu’à un CONNECT accepté (handshake TLS et authentification inclus), le dispositif dispose de quelques secondes (5 par défaut). |
Rien n’est mis en file d’attente pour un dispositif hors ligne, sauf les commandes marquées persistantes. Après chaque connexion, le dispositif s’abonne à nouveau et demande ses attributs partagés, ce qui lui fournit les valeurs actuelles.
TLS
- TLS 1.2 minimum, TLS 1.3 recommandé.
- Suites TLS 1.2 :
ECDHE-ECDSA-AES128-GCM-SHA256,ECDHE-RSA-AES128-GCM-SHA256,ECDHE-ECDSA-CHACHA20-POLY1305. Pas d’échange de clés RSA, pas de CBC. - Le SNI est obligatoire. Connectez-vous par nom d’hôte, et non par adresse IP.
- Pour les dispositifs tiers, le certificat serveur est un certificat public. Vérifiez-le avec votre bundle d’autorités de certification habituel et le nom d’hôte.
- Le serveur demande un certificat client sans l’exiger, afin qu’un seul port serve tous les types d’authentification.
- Les petits dispositifs peuvent demander des enregistrements TLS de 4 Ko (
max_fragment_length).
Un profil décide si ses dispositifs peuvent utiliser le port sans chiffrement (MQTT sans chiffrement dans l’onglet Transport et authentification du profil). TLS uniquement est la valeur par défaut. Voir Sécurité du transport des dispositifs.
Authentification
| Identifiant | Client ID | Nom d’utilisateur | Mot de passe |
|---|---|---|---|
| Jeton d’accès | tout ID valide | le jeton d’accès | vide |
| MQTT de base | au choix, ou le client ID épinglé | le nom d’utilisateur | le mot de passe |
| Certificat X.509 | le numéro de série du dispositif (doit être égal au CN du certificat) | le numéro de série (ignoré) | vide |
- Un client ID comporte de 1 à 64 caractères parmi
A–Z a–z 0–9 . _ : -. Tout autre caractère est refusé avec CONNACK 2. - Un CONNECT avec un nom d’utilisateur mais sans mot de passe est lu comme un jeton d’accès. Un CONNECT sans nom d’utilisateur est refusé.
- Lorsqu’un certificat client est présenté, c’est lui qui décide. Il n’y a aucun repli vers un mot de passe. Un certificat non approuvé met fin au handshake TLS.
- Le nom d’utilisateur
provisionouvre une session de provisionnement (voir Ajout et revendication des dispositifs). - Le profil doit autoriser le type d’identifiant, le réseau du dispositif et le port (TLS ou sans chiffrement) ; sinon la connexion est refusée avec CONNACK 5.
Sessions
- Une session par dispositif. Une seconde connexion du même dispositif prend le relais et ferme la première. Un dispositif dont la session est reprise à plusieurs reprises depuis deux réseaux est mis en attente pendant un moment, et vos administrateurs reçoivent une notification (« conflit de reprise de session ») ; vérifiez que deux dispositifs ne partagent pas un même identifiant.
- Vérifications. Chaque session active est revérifiée environ toutes les 60 secondes. Un identifiant renouvelé ou révoqué, un dispositif désactivé ou supprimé, une organisation suspendue, ou une modification du profil que la session ne respecte plus, met fin à la session immédiatement.
- Dispositifs en quarantaine : ils peuvent se connecter, mais leurs données de télémétrie et leurs attributs sont acquittés puis supprimés jusqu’à leur activation par un administrateur.
- Notification de nouveau réseau. Lorsqu’un dispositif se connecte depuis un autre réseau que la fois précédente, vos administrateurs peuvent recevoir une notification (au plus une fois par heure et par dispositif), afin qu’un identifiant volé ne passe pas inaperçu.
- Limite de dispositifs connectés. Si votre forfait limite le nombre de dispositifs connectés simultanément, un CONNECT au-delà de cette limite est refusé avec CONNACK 5.
Accusés de réception et QoS
- Publiez avec QoS 1. QoS 0 est accepté ; QoS 2 est traité comme QoS 1.
- Hermetry envoie le PUBACK uniquement lorsque le message est mis en file d’attente en toute sécurité. Les PUBACK sont envoyés dans l’ordre de publication du dispositif.
- Si un message ne peut pas être mis en file d’attente, il ne reçoit pas de PUBACK (ni aucun message qui le suit sur cette session), et la session est fermée après quelques secondes. Le dispositif renvoie les messages non acquittés après sa reconnexion.
- Un dispositif peut avoir au maximum 20 messages QoS 1 non acquittés en cours par défaut (Nombre maximal de messages non acquittés (MQTT) du profil, de 1 à 1 000).
- Les doublons d’un même dispositif, avec la même clé et le même horodatage, ne sont stockés qu’une fois ; un renvoi est donc sans risque.
Limites
| Limite | Valeur par défaut | Où elle est définie |
|---|---|---|
| Messages de télémétrie | 10:1,300:60 (10 par seconde et 300 par minute) | Profil, Limites |
| Points de données de télémétrie | 200:1,6000:60 | Profil, Limites |
| Messages d’attributs | 5:1,60:60 | Profil, Limites |
| Taille du message | 64 Kio, jusqu’à 1 000 points clé-valeur | Profil, Taille maximale de la charge utile des messages (octets) |
| Messages vers le dispositif | 64 Kio (4 Kio pour les dispositifs sous licence) | Profil, Taille maximale de la charge utile descendante (octets) |
- Au-delà d’une limite de débit, le message est acquitté puis supprimé. Un dispositif qui continue de dépasser sa limite (plus de trois fois son quota par minute supprimé en une minute) voit sa session fermée. Les propriétaires et administrateurs reçoivent une notification par dispositif et par heure.
- Un message trop volumineux est supprimé en entier ; la connexion reste active.
- Votre organisation dispose aussi, dans son ensemble, de limites de débit issues de son forfait.
- Les relevés mis en mémoire tampon qu’un dispositif envoie après une panne (chaque enregistrement porte un
tsplus ancien) doivent aussi respecter le paramètre Messages rejoués par seconde du profil. - Les messages de télémétrie et d’attributs comptent dans votre quota mensuel de messages ; les événements de connexion, les commandes et les alarmes n’y comptent pas. Voir Quota de messages et utilisation.
Codes CONNACK
| Code | Signification | Ce que doit faire le dispositif |
|---|---|---|
| 0 | Accepté | Continuer. |
| 1 | Version du protocole non prise en charge | Arrêter les tentatives ; corriger le client. |
| 2 | Client ID rejeté | Attendre que la configuration change. |
| 3 | Serveur indisponible : le service est occupé, en cours de démarrage ou d’arrêt, ou l’adresse est brièvement bloquée | Patienter puis réessayer, avec une gigue aléatoire. |
| 4 | Nom d’utilisateur ou mot de passe incorrect | Patienter au moins 5 minutes (jusqu’à 1 heure). |
| 5 | Non autorisé : dispositif désactivé, certificat révoqué ou expiré, organisation suspendue ou au-delà de sa limite de dispositifs ou de dispositifs connectés, type d’authentification, réseau ou port non autorisé par le profil | Patienter selon la planification longue. |
La raison du code 5 n’est jamais envoyée au dispositif. Elle est inscrite dans l’onglet Journal du dispositif.
Remarque
Des échecs de connexion répétés depuis une même adresse bloquent cette adresse pendant un court instant, pour tous les dispositifs derrière elle. Un dispositif mal configuré peut donc bloquer ses voisins derrière le même NAT. Corrigez rapidement les identifiants erronés.
Raisons de déconnexion
L’onglet Journal du dispositif indique pourquoi une session s’est terminée :
| Raison | Signification |
|---|---|
client_disconnect | Le dispositif a fermé la connexion. |
keepalive_timeout | Rien n’est arrivé dans le délai de keepalive. |
takeover | Une autre connexion du même dispositif a pris le relais. |
auth_revoked | L’identifiant, le dispositif ou l’organisation n’est plus autorisé. |
rate_limit | Le dispositif a continué de dépasser sa limite de débit. |
server_shutdown | Le nœud du broker a redémarré ; reconnectez-vous. |
protocol_error, inflight_exceeded, socket_error | Le client a violé le protocole, envoyé trop de messages non acquittés, ou le réseau a échoué. |
Comportement recommandé du dispositif
- Connectez-vous en TLS par nom d’hôte, avec un keepalive compris entre 30 et 300 secondes.
- Après CONNACK 0, abonnez-vous aux topics de descente, demandez les attributs partagés, publiez les attributs client, puis envoyez la télémétrie mise en mémoire tampon avant les données en direct.
- Utilisez QoS 1 et attendez le PUBACK avant de supprimer une mesure mise en mémoire tampon.
- Regroupez les mesures en lots lorsque vous envoyez plus d’un échantillon par seconde.
- En cas de connexion refusée, suivez le back-off de la table CONNACK ; ajoutez une gigue aléatoire afin qu’une flotte ne se reconnecte pas en même temps.

