Les deux révisions précédentesRévision précédente | |
issue132:tutoriel1 [2018/05/05 11:32] – auntiee | issue132:tutoriel1 [2018/05/07 17:52] (Version actuelle) – andre_domenech |
---|
Salut à vous tous. Ça fait un bon moment que je n'ai pas été capable d'écrire longuement, mais les choses s'améliorent lentement ; aussi, j'ai décidé de redémarrer avec une présentation de MQTT. | Salut à vous tous. Ça fait un bon moment que je n'ai pas été capable d'écrire longuement, mais les choses s'améliorent lentement ; aussi, j'ai décidé de redémarrer avec une présentation de MQTT. |
| |
MQTT est un protocole de réseau léger et facile d'emploi pour envoyer des données d'un ordinateur ou d'une application à un autre. Il fonctionne sous un modèle client/serveur, en utilisant un « broker » (intermédiaire), des éditeurs et des abonnés. | MQTT est un protocole de réseau léger et facile d'emploi pour envoyer des données d'un ordinateur ou d'une application à une autre. Il fonctionne sous un modèle client/serveur, en utilisant un « broker » (intermédiaire), des éditeurs et des abonnés. |
| |
Et qu'est-ce que cela veut dire ? | Et qu'est-ce que cela veut dire ? |
Dans le monde réel, nous avons une application, agissant comme un éditeur, pour envoyer des messages, basés sur un sujet, à l'intermédiaire. L'intermédiaire renvoie ensuite le message à un autre programme, sur une autre machine ou sur la même machine, qui est abonnée au sujet de ce message. | Dans le monde réel, nous avons une application, agissant comme un éditeur, pour envoyer des messages, basés sur un sujet, à l'intermédiaire. L'intermédiaire renvoie ensuite le message à un autre programme, sur une autre machine ou sur la même machine, qui est abonnée au sujet de ce message. |
| |
On m'a demandé ce qui se passe si l'un des clients qui est abonné au sujet part pour une raison quelconque. Il y a trois niveaux de Qualité de Service (QoS, Quality of Service) qui peuvent être réglés pour chaque message envoyé à l'intermédiaire. Quand un client se connecte normalement à l'intermédiaire, c'est de manière non-permanente et le niveau QoS est réglé à 0, de sorte que tout message qui arrive quand un client abonné n'est pas connecté est perdu. Si c'est important que les abonnés reçoivent tous les messages, le client éditeur doit établir une session permanente et envoyer les messages avec une Qualité de Service plus grande que 0. Nous nous occuperons de QoS et des sessions permanentes le mois prochain quand nous créerons notre client éditeur. | On m'a demandé ce qui se passe si l'un des clients qui est abonné au sujet part pour une raison quelconque. Il y a trois niveaux de Qualité de Service (QoS, Quality of Service) qui peuvent être réglés pour chaque message envoyé à l'intermédiaire. Quand un client se connecte normalement à l'intermédiaire, c'est de manière non permanente et le niveau QoS est réglé à 0, de sorte que tout message qui arrive quand un client abonné n'est pas connecté est perdu. Si c'est important que les abonnés reçoivent tous les messages, le client éditeur doit établir une session permanente et envoyer les messages avec une Qualité de Service plus grande que 0. Nous nous occuperons de QoS et des sessions permanentes le mois prochain quand nous créerons notre client éditeur. |
| |
**Let's assume that we have a Raspberry Pi 3 that sits in our garage that reads a DHT11 or DHT22 Humidity and Temperature sensor. Let's further assume that we have another Raspberry Pi 3 that we want to use to monitor that information in our bedroom. We can set up a MQTT broker on our bedroom RPi to receive the messages by using Mosquitto available in the software manager. | **Let's assume that we have a Raspberry Pi 3 that sits in our garage that reads a DHT11 or DHT22 Humidity and Temperature sensor. Let's further assume that we have another Raspberry Pi 3 that we want to use to monitor that information in our bedroom. We can set up a MQTT broker on our bedroom RPi to receive the messages by using Mosquitto available in the software manager. |
For testing purposes, we’ll run the sensor, publishing program, broker and subscriber program all on the same Raspberry Pi. ** | For testing purposes, we’ll run the sensor, publishing program, broker and subscriber program all on the same Raspberry Pi. ** |
| |
Supposons qu'il y a un Raspberry Pi 3 dans notre garage qui lit un capteur d'humidité et de température DHT11 ou DHT22. Supposons encore que nous avons un autre Raspberry Pi 3 dans notre chambre, que nous voulons utiliser pour surveiller cette information. Nous pouvons paramétrer un intermédiaire MQTT sur le RPi de notre chambre pour recevoir les messages en utilisant Mosquitto, disponible dans le gestionnaire de logiciels. | Supposons qu'il y ait un Raspberry Pi 3 dans notre garage qui lit un capteur d'humidité et de température DHT11 ou DHT22. Supposons encore que nous ayons un autre Raspberry Pi 3 dans notre chambre, que nous voulons utiliser pour surveiller cette information. Nous pourrions paramétrer un intermédiaire MQTT sur le RPi de notre chambre pour recevoir les messages en utilisant Mosquitto, disponible dans le gestionnaire de logiciels. |
| |
Le RPi du garage peut utiliser une version modifiée du logiciel que nous avons utilisé dans le Full Circle Magazine n° 109, pour piloter le capteur et distribuer les messages à l'intermédiaire Mosquitto dans la chambre. Sur le RPi de la chambre, nous écrirons un programme simple en Python pour s'abonner à ces messages. Mais, d'abord, étudions en détail MQTT sous Python. | Le RPi du garage peut utiliser une version modifiée du logiciel que nous avons utilisé dans le Full Circle Magazine n° 109, pour piloter le capteur et distribuer les messages à l'intermédiaire Mosquitto dans la chambre. Sur le RPi de la chambre, nous écrirons un programme simple en Python pour s'abonner à ces messages. Mais, d'abord, étudions en détail MQTT sous Python. |
**When a program wants to publish to a broker, it first needs to connect, then sends the topic and the message. It doesn’t have to be concerned who’s there, if anyone. A subscribing program also doesn’t have to care about much, other than subscribing to the proper topic that is being published on the broker. The key here is that if you accidentally subscribe to the wrong topic, nothing will ever come in. When we set up our two terminal window test above, we started the subscriber client before the first message ever came in. The broker didn’t know (or care) what the topic was that we were subscribing to. It assumed we knew what we were doing. In the same way, when we published our ‘Hi There’ message on the ‘test’ topic, the broker simply took it and sent it out to whatever clients out there that happened to be subscribed to the topic, if any.** | **When a program wants to publish to a broker, it first needs to connect, then sends the topic and the message. It doesn’t have to be concerned who’s there, if anyone. A subscribing program also doesn’t have to care about much, other than subscribing to the proper topic that is being published on the broker. The key here is that if you accidentally subscribe to the wrong topic, nothing will ever come in. When we set up our two terminal window test above, we started the subscriber client before the first message ever came in. The broker didn’t know (or care) what the topic was that we were subscribing to. It assumed we knew what we were doing. In the same way, when we published our ‘Hi There’ message on the ‘test’ topic, the broker simply took it and sent it out to whatever clients out there that happened to be subscribed to the topic, if any.** |
| |
Quand un programme veut émettre vers un intermédiaire, il doit d'abord se connecter, puis il envoie le sujet et le message. Il ne se préoccupe pas de savoir s'il y quelqu'un à l'autre bout, et qui. Un programme d'abonnement ne s'en soucie pas beaucoup non plus, à part l'abonnement au sujet qui a été envoyé à l'intermédiaire. La clé ici est que, si vous vous abonnez accidentellement au mauvais sujet, rien ne vous arrivera. Lorsque nous avons mis en place notre test à deux terminaux ci-dessus, nous avons démarré le client abonné avant que le premier message n'arrive. L'intermédiaire ne connaît pas le sujet auquel nous souscrivons (et ne s'en préoccuper pas). Il suppose que nous savions ce que nous faisions. De la même manière, quand nous émettons notre message « Hi There » sur notre sujet « test », l'intermédiaire se contente de le prendre et de l'envoyer à n'importe quel client qui s'est abonné au sujet, le cas échéant. | Quand un programme veut émettre vers un intermédiaire, il doit d'abord se connecter, puis il envoie le sujet et le message. Il ne se préoccupe pas de savoir s'il y quelqu'un à l'autre bout, et qui. Un programme d'abonnement ne s'en soucie pas beaucoup non plus, à part l'abonnement au sujet qui a été envoyé à l'intermédiaire. La clé ici est que, si vous vous abonnez accidentellement au mauvais sujet, rien ne vous arrivera. Lorsque nous avons mis en place notre test à deux terminaux ci-dessus, nous avons démarré le client abonné avant que le premier message n'arrive. L'intermédiaire ne connaît pas le sujet auquel nous souscrivons (et ne s'en préoccupe pas). Il suppose que nous savions ce que nous faisions. De la même manière, quand nous émettons notre message « Hi There » sur notre sujet « test », l'intermédiaire se contente de le prendre et de l'envoyer à n'importe quel client qui s'est abonné au sujet, le cas échéant. |
| |
**The topic itself can be as simple as ‘test’ or extremely verbose. Some basic guidelines for topics are: | **The topic itself can be as simple as ‘test’ or extremely verbose. Some basic guidelines for topics are: |