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

6 minutes de lecture

Comme expliqué dans carte dédiée à cette norme, Transport de télémétrie de file d'attente de messages (MQTT) C’est un service réseau simple mais efficace, conçu pour échanger rapidement des messages avec des composants et des appareils domotiques / IoT. Ce service vous permet de "contrôler" les changements d'état des composants et de collecter les réponses, la télémétrie et, en général, les informations les concernant. prodes conduits.

Une explication rapide

La fonctionnameest simple: dans le cas typique d’un réseau domotique basé sur un réseau local /Wi-Fi il y a un courtier MQTT, qui agit comme trieur des messages, puis des clients MQTT, qui envoyer e recevoir ces messages.

Exemples de courtier MQTT ils sont les plus disparates: l’un des plus connus et utilisés est Eclipse Mosquitto, qui est également disponible aussi facilement addon / Home Assistant (HASSIO).

Exemples de Client MQTT Ils sont les suivants:

  • composants / dispositifs activé pour utiliser MQTT (par exemple un composant Sonoff équipé d'un firmware Tasmotaou un Shelly);
  • tout HUB personnel (Home Assistant, Accueilbridge, openHAB etc.);
  • un ordinateur, smartphone, tablette qui utilisent n’importe quel client MQTT.

Le mécanisme c'est très simple: chaque client peut "s'inscrire" pour courtier comment Éditeur (editore) e/o come Abonné (Abonné).

Le rôle de éditeur prévoit le publication au courtier de messages MQTT, tandis que celui de abonné fournir la réception par le courtier de tous les messages reçus de lui contenant une signature / des signatures données auxquelles le sujet est, appoint, "enregistré". La "signature" est définie dans la "rubrique", qui est une chaîne contenant une série d'informations relatives au périphérique et au type de message (qui est par exemple télémétrie ou comando).

MQTT basic schéma

Les messages MQTT sont formés par un sujet et un charge utile ("Charge utile"), ou un certain ensemble d'informations qui sera utile à un ou plusieurs destinataires écoutant le courtier.


Si par exemple nous avions un capteur de température configuré pour publier automatiquement (chaque tot) un message MQTT contenant la télémétrie de la température détectée par celui-ci et deux abonné enregistrer l'écoute sur ces données sujet au courtier, tels abonné recevrait (chaque tot) la température à travers un message MQTT du courtier contenant la température contenue dans la charge utile.

Un exemple du sujet "télémétrie" pourrait être:

stat /SensoreCamera / capteur

avec un parent charge utile (en notation JSON)

{“Time”:”2019-01-01T00:00:01″,”AM2301″:{“Temperature”:18.8,”Humidity”:60.7},”TempUnit”:”C”}

(Comme vous pouvez le constater, il contient la température ainsi que d'autres informations relatives à la date, à l'heure, au type de capteur, etc.).
En vous abonnant à ce sujet, pour chaque publication, tous abonné ils recevront le contenu.


De même, messages de commande (par exemple, activer / désactiver un commutateur intelligent MQTT) sont formés par un sujet (contenant le "nom" du destinataire) et un charge utile (contenant l'action à effectuer). Tout client MQTT ayant souscrit à ce programme sujet sera engagé pour exécuter une action contre la publication chez le courtier d'un message destiné, appoint, à cela sujet.

Un exemple di sujet "Commande" pourrait être:

cmnd / Artemis / puissance

avec un parent charge utile (en notation JSON)

{ "ON"}

Cet exemple est relatif à la commande d'allumage d'un appareil appelé "Artemide" avec firmware Sonoff-Tasmota.
Qui souscrit à la borker que sujet c'est habituellement l'appareil lui-même, alors que celui qui publie les messages de commande dans ce cas est leHUB personnel.


Évidemment, comme expliqué, je abonné écouter sur une donnée sujet ils peuvent être multiples; en plus, je éditeur ils peuvent publier sans limite sur le courtier le nombre et le type de messages qu’ils souhaitent. Il n'y a pas de contrôle sur la source du message: le courtier il les reçoit simplement puis pour les retourner à toute personne qui s'abonne à ces données sujet.

MQTT en domotique personnelle

Habituellement, il apparaît dans la domotique personnelle un scénario plutôt typique, avec la présence de:

  • un ou plusieurs composants / dispositifs MQTT;
  • un ou plusieurs HUB personnel;
  • un courtier MQTT.

Le courtier MQTT c'est généralement unique, Comme agit en tant que collectionneur pour échange de tous les messages MQTT liée à la domotique et réside généralement sur un ordinateur spécifique Windows, le macOS ou est-ce un Raspberry Pi avec le système d'exploitation Raspbian ou d'autres solutions.

Supposons que nous ayons un scénario dans lequel un HUB personnel a une entité dans la configuration rappsents un commutateur MQTT à qui, s’il est activé / désactivé, envoie le message de commande relatif MQTT et à partir duquel recevoir, en réponse, son nouvel état (activé / désactivé).

La séquence sera la suivante:

  1. l'utilisateur activer l'interrupteur presso l 'HUB personnelle (depuis l'interface web, app mobile, commande vocale - ce que c'est);
  2. L 'HUB personnel formater et envoyer un message de commande MQTT destiné au commutateur intelligent en fonction de la configuration qui lui est assignée:
    • avec sujet contenant des informations pertinentes le type de commande et le destinataire;
    • avec charge utile contenente l'action à effectuer
  3. le courtier reçoit le message MQTT;
  4. le courtier vérifie si et quel client MQTT a signé le sujet contenu dans le message (dans ce cas, le périphérique à contrôler);
  5. le courtier tourner au client MQTT (le composant / périphérique) le message MQTT;
  6. l'appareil qui sait quoi faire lorsqu'un message lui est envoyé sujet et de cela charge utile, effectuer l'action;
  7. les formats de l'appareil et envoie un Message de télémétrie MQTT conçu au sens large comme suit:
    • contenant un sujet qui identifie le message en tant que dispositif de télémétrie et le fait que ce soit proappris de lui (il n'a pas de "destinataire", c'est simplement un "lève la main pour communiquer quelque chose");
    • contenant une charge utile contenant la réponse à l'action appEna a joué;
  8. le courtier reçoit le message MQTT;
  9. le courtier vérifie si et quel client MQTT a signé le sujet contenu dans le message (dans ce cas, leHUB le personnel, qui aura dans la configuration du commutateur appena commandait non seulement le sujet de la commande, mais aussi le sujet télémétrique être signé pour obtenir les réponses);
  10. le courtier tourner au client MQTT (leHUB personnel) le message MQTT;
  11. L 'HUB le personnel prend la réponse en fonction du contenu de charge utile et son interprétation (par exemple, "ON" indiquera, trivialement, que le commutateur a été activé).

Tous en une fraction de seconde.

Comment configurer les différents sujets

Première Il est important de clarifier une chose: il est nécessaire que le courtier MQTT posséder une adresse IP statique, invariable, dans la propremier réseau. En effet, TOUS les clients MQTT (de tout type) seront "dirigés" vers lui et doivent toujours pouvoir le contacter sans modification. Lorsque l'IP du courtier change, toutes les configurations des différents composants / périphériques disparaîtront.

L'adresse IP du client MQTT (de tout type) peut à la place être des soiréesnamente changement. En effet, chaque client qui se présente au courtier, s’authentifie, puis souscrit (et / ou publie) un ou plusieurs sujets, est automatiquement a rappelé à partir du courtier lui-même, donc changer l'adresse IP n'a pas d'effet négatif.

COURTIER

Le courtier peut prendre n’importe quelle adresse IP, à condition qu’une fois défini, c’est-à-dire qui reste; peut également utiliser une authentification simple (utilisateurname/ mot de passe) et / ou des certificats de cryptage. Tout cela est lié à la configuration spécifique du courtier utilisé.

COMPOSANTS (Sonoff, Shelly et similaires)

Tous les composants / appareils MQTT de la domotique doivent "viser" à l'adresse IP du courtier qui, comme nous l'avons dit, doit être immuable.

L'adresse IP à configurer sous "host"Ou"serveur"Ou"courtier”Dans la section MQTT sera donc celle du courtier. Évidemment, si le courtier fournira un utilisateurname/ password, vous devrez également indiquer cette information dans la configuration. Le port généralement utilisé par le courtier est le 1883. Si a été configuré différemment, signalez également ce changement dans la configuration MQTT du composant / périphérique.

Le champ "client", Au lieu de cela, rappsera renvoyé le "nom”Du dispositif contenu dans le sujet de divers messages.
Si, par exemple, le composant était un commutateur intelligent MQTT appappliquée à une lampe, nous allons peut-être régler ce champ trivialement sur "Lampe" afin que nous puissions facilement nous souvenir du nom.

Nb. Les noms à utiliser dans MQTT sont sensible aux majuscules et minuscules. "Lampe"Sera donc différent de"lampe».

Une fois la configuration terminée la communication avec le courtier doit être vérifiée: les appareils qu'ils utilisent Sonoff-Tasmota avoir la "console" disponible, qui indique clairement:

MQT: Tentative de connexion ...
MQT: connecté

qui confirme la connexion réussie au courtier.

A "Echec de la connexion”Indique évidemment l'impossibilité de se connecter au courtier.
Dans ce cas vérification:

  • que le courtier est en cours d'exécution;
  • que l'adresse IP et le port indiqués sont corrects;
  • cet utilisateurname/ mot de passe sont corrects;
  • que sur macchine où le courtier est en cours d’exécution, il n’existe pas de pare-feu qui empêche la communication sur le port 1883.

HUB personnel

En présence d'un ou plusieurs HUB les scénarios personnels sont deux:

  • L 'HUB est en cours d'exécution sur le même ordinateur où le courtier MQTT est en cours d'exécution;
  • L 'HUB est en cours d'exécution sur un autre ordinateur de celui où le courtier MQTT est en cours d'exécution.

Dans le premier cas, la configuration des clients MQTT du serveurHUB le personnel devra se "concentrer" sur la propriété intellectuelle de loopbackou 127.0.0.1; sinon, il faudra l'indiquer courtier IP.

Pour le reste (informations d'identification, porte, etc.), les mêmes discours que pour les composants / dispositifs s'appliquent.

Comment effectuer des tests

Effectuer des tests en cas de proest toujours des problèmes extrêmement utile installer sur provotre ordinateur un client MQTT (sur le net si elles sont à gogo soit / Windows que, pour macOS).

À ce stade, il suffit de se connecter au courtier et à partir de là "prétendent" un ou plusieurs des sujets présents sur le net. Par exemple, si vous voulez vérifier que leHUB le personnel est en train d’envoyer des messages de commande MQTT à un autre sujet donné, suffira rejoindre le sujet que vous vous attendez à utiliser pour vérifier qu’il est effectivement transmis au courtier; inversement, il sera possible de publier des commandes et / ou des télémètres MQTT pour voir si les destinataires reçoivent réellement la commande ou non.


ATTENZIONE: rappelez-vous l'existence de notre communauté FORUM pour tout doute, question, information sur le mérite spécifique du contenu de cette page et bien plus encore.

Chaîne de télégramme inDomus