Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente | ||
raspberrypi:linux:mqtt_mosquitto [2024/07/09 08:09] – [5 QoS] phil | raspberrypi:linux:mqtt_mosquitto [2024/07/09 08:31] (Version actuelle) – [2.4.1 MyMQTT : un client pour Androïd] phil | ||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
[[raspberrypi: | [[raspberrypi: | ||
- | ===== Raspberry Pi - Installer un broker (serveur) MQTT Mosquitto ===== | + | ====== Raspberry Pi - Installer un broker (serveur) MQTT Mosquitto |
[Mise à jour le 9/7/2024] | [Mise à jour le 9/7/2024] | ||
Ligne 28: | Ligne 28: | ||
- | ===== 1. MQTT (généralités) ===== | + | ====== 1. MQTT (généralités) |
Pour répondre à la problématique du nombre grandissant d’objets connectés qui vont faire leur apparition sur la toile (selon une étude Gartner : près de 26 milliards d’objets connectés seront sur Internet d’ici 2020), l’IoT (Internet Of Things), s’est doté d’un nouveau standard : **MQTT** (**M**essage **Q**ueuing **T**elemetry **T**ransport). | Pour répondre à la problématique du nombre grandissant d’objets connectés qui vont faire leur apparition sur la toile (selon une étude Gartner : près de 26 milliards d’objets connectés seront sur Internet d’ici 2020), l’IoT (Internet Of Things), s’est doté d’un nouveau standard : **MQTT** (**M**essage **Q**ueuing **T**elemetry **T**ransport). | ||
Ligne 44: | Ligne 44: | ||
\\ | \\ | ||
- | ==== 1.1 Historique ==== | + | ===== 1.1 Historique |
Le protocole MQTT (MQ Telemetry Transport) trouve ses origines en 1999 dans les travaux de **Andy Standford-Clark** et **Arlen Nipper**, alors qu'ils travaillaient pour IBM au développement d'un protocole pour une utilisation industrielle de télémétrie en lien avec l' | Le protocole MQTT (MQ Telemetry Transport) trouve ses origines en 1999 dans les travaux de **Andy Standford-Clark** et **Arlen Nipper**, alors qu'ils travaillaient pour IBM au développement d'un protocole pour une utilisation industrielle de télémétrie en lien avec l' | ||
\\ | \\ | ||
- | ==== 1.2 Principes ==== | + | ===== 1.2 Principes |
- | === 1.2.1 Organisation et communication === | + | ==== 1.2.1 Organisation et communication |
<callout type=" | <callout type=" | ||
Ligne 70: | Ligne 70: | ||
\\ | \\ | ||
- | === 1.2.2 Les topics === | + | ==== 1.2.2 Les topics |
<callout type=" | <callout type=" | ||
Ligne 112: | Ligne 112: | ||
\\ | \\ | ||
- | === 1.2.3 Sécurité === | + | ==== 1.2.3 Sécurité |
Les données IoT échangées peuvent s’avérer très critiques, c’est pourquoi il est possible de sécuriser les échanges à plusieurs niveaux : | Les données IoT échangées peuvent s’avérer très critiques, c’est pourquoi il est possible de sécuriser les échanges à plusieurs niveaux : | ||
* Transport en SSL/TLS, | * Transport en SSL/TLS, | ||
Ligne 120: | Ligne 120: | ||
\\ | \\ | ||
- | === 1.2.4 Qualité de service (QoS) === | + | ==== 1.2.4 Qualité de service (QoS) ==== |
MQTT intègre en natif la notion de QoS. En effet, le publisher à la possibilité de définir la qualité de son message. | MQTT intègre en natif la notion de QoS. En effet, le publisher à la possibilité de définir la qualité de son message. | ||
Ligne 146: | Ligne 146: | ||
\\ | \\ | ||
- | ==== 1.3 Structure d'un paquet MQTT ==== | + | ===== 1.3 Structure d'un paquet MQTT ===== |
* **Source** : < | * **Source** : < | ||
Ligne 155: | Ligne 155: | ||
\\ | \\ | ||
- | + | ====== 2. Le broker Mosquitto | |
- | + | ||
- | ===== 2. Le broker Mosquitto ===== | + | |
{{ : | {{ : | ||
- | Eclipse Mosquitto est un **courtier de messages** (**broker**) open source (sous licence EPL / EDL) qui implémente les versions 3.1 et 3.1.1 du protocole MQTT. Mosquitto est léger et convient à une utilisation sur tous les appareils, des ordinateurs monocarte basse consommation aux serveurs complets. | + | Eclipse Mosquitto est un **courtier de messages** (**broker**) open source (sous licence EPL / EDL) qui implémente les versions |
Le protocole MQTT fournit une méthode légère pour effectuer la messagerie en utilisant un modèle de publication / abonnement. Cela le rend approprié pour la **messagerie Internet of Things**, par exemple avec des capteurs de faible puissance ou des appareils mobiles tels que des téléphones, | Le protocole MQTT fournit une méthode légère pour effectuer la messagerie en utilisant un modèle de publication / abonnement. Cela le rend approprié pour la **messagerie Internet of Things**, par exemple avec des capteurs de faible puissance ou des appareils mobiles tels que des téléphones, | ||
Ligne 169: | Ligne 167: | ||
\\ | \\ | ||
- | ===== 3. Installation et mise en oeuvre sur le réseau local ===== | + | ===== 2.1 Installation et mise en oeuvre sur le réseau local ===== |
- | ==== 3.1 Sur un Raspberry Pi ==== | + | ==== 2.1.1 Sur un Raspberry Pi ==== |
- | === 3.1.1 Installation === | + | === 2.1.1.1 Installation === |
* **Mise à jour de l'OS** | * **Mise à jour de l'OS** | ||
Ligne 212: | Ligne 210: | ||
|" | |" | ||
- | === 3.1.2 Arrêt, démarrage, redémarrage === | + | === 2.1.1.2 Arrêt, démarrage, redémarrage === |
<callout type=" | <callout type=" | ||
Ligne 221: | Ligne 219: | ||
</ | </ | ||
- | === 3.1.3 Tests === | + | === 2.1.1.3 Tests === |
<callout type=" | <callout type=" | ||
- | == 3.1.3.1 Test sur le RaspBerry Pi (localhost) == | + | == 2.1.1.3.1 Test sur le RaspBerry Pi (localhost) == |
Pour tester le bon fonctionnement du broker, nous allons publier le message (payload) "// | Pour tester le bon fonctionnement du broker, nous allons publier le message (payload) "// | ||
Ligne 247: | Ligne 245: | ||
\\ | \\ | ||
- | == 3.1.3.2 Tests sur le réseau local == | + | == 2.1.1.3.2 Tests sur le réseau local == |
* **Ressource** : < | * **Ressource** : < | ||
Ligne 300: | Ligne 298: | ||
\\ | \\ | ||
- | ==== 3.2. Sous Windows ==== | + | ==== 2.1.2. Sous Windows ==== |
Voir ce < | Voir ce < | ||
\\ | \\ | ||
- | ==== 3.3 Sur un NAS Synology ==== | + | ==== 2.1.3 Sur un NAS Synology ==== |
{{ : | {{ : | ||
* **Source** : < | * **Source** : < | ||
Ligne 326: | Ligne 324: | ||
\\ | \\ | ||
- | + | ===== 2.2 Sécurité ===== | |
- | + | ||
- | ===== 4 Sécurité ===== | + | |
<callout type=" | <callout type=" | ||
- | ==== 4.1 Authentification ==== | + | ==== 2.2.1 Authentification ==== |
{{ : | {{ : | ||
Ce paragraphe illustre la mise en sécurité de l' | Ce paragraphe illustre la mise en sécurité de l' | ||
Ligne 435: | Ligne 431: | ||
\\ | \\ | ||
- | ==== 4.2 Chiffrage de la connexion ==== | + | ==== 2.2.2 Chiffrage de la connexion ==== |
< | < | ||
\\ | \\ | ||
- | ===== 5 QoS ===== | + | ==== 2.2.3 QoS ==== |
<callout type=" | <callout type=" | ||
\\ | \\ | ||
- | ===== 6. MQTT sur WebSockets avec Mosquitto ===== | + | ===== 2.3. MQTT sur WebSockets avec Mosquitto ===== |
- | ==== 6.1 Pourquoi utiliser MQTT sur Websockets ? ==== | + | ==== 2.3.1 Pourquoi utiliser MQTT sur Websockets ? ==== |
{{ : | {{ : | ||
<callout type=" | <callout type=" | ||
Ligne 455: | Ligne 451: | ||
\\ | \\ | ||
- | ==== 6.2 MQTT sur Websockets vs MQTT. ==== | + | ==== 2.3.2 MQTT sur Websockets vs MQTT. ==== |
- | === 6.2.1 Présentation === | + | === 2.3.2.1 Présentation === |
Dans le cas de MQTT sur Websockets, la connexion websockets constitue un canal externe pour le protocole MQTT. Le courtier MQTT place le paquet MQTT dans un paquet websockets et l' | Dans le cas de MQTT sur Websockets, la connexion websockets constitue un canal externe pour le protocole MQTT. Le courtier MQTT place le paquet MQTT dans un paquet websockets et l' | ||
{{ : | {{ : | ||
Ligne 462: | Ligne 458: | ||
<callout type=" | <callout type=" | ||
- | === 6.2.2 Configuration du fichier mosquitto.conf === | + | === 2.3.2.2 Configuration du fichier mosquitto.conf === |
MQTT sur Websockets utilise généralement le port **9001** mais il n'est pas fixé. | MQTT sur Websockets utilise généralement le port **9001** mais il n'est pas fixé. | ||
Ligne 485: | Ligne 481: | ||
</ | </ | ||
- | === 6.2.3 Test de Websocket === | + | === 2.3.2.3 Test de Websocket === |
{{ : | {{ : | ||
Pour tester les websockets, nous avons besoin d'un client prenant en charge les websockets. Nous utiliserons le **client Javascript Paho** décrit sur la page [[web: | Pour tester les websockets, nous avons besoin d'un client prenant en charge les websockets. Nous utiliserons le **client Javascript Paho** décrit sur la page [[web: | ||
Ligne 491: | Ligne 487: | ||
\\ | \\ | ||
- | ===== 7. Outils ===== | + | ===== 2.4. Outils ===== |
{{ : | {{ : | ||
- | ==== 7.1 MyMQTT : un client pour Androïd ==== | + | ==== 2.4.1 MyMQTT : un client pour Androïd ==== |
- | En installant un **client pour Androïd** tel que **MyMQTT** | + | En installant un **client pour Androïd** |
* ** Fonctionnalités ** | * ** Fonctionnalités ** | ||
* Connection à un courtier MQTT v3.1 (facultatif avec nom d' | * Connection à un courtier MQTT v3.1 (facultatif avec nom d' | ||
Ligne 504: | Ligne 500: | ||
Consulter la page [[reseaux: | Consulter la page [[reseaux: | ||
- | ==== 7.2 MQTTlens | + | \\ |
+ | |||
+ | ==== 2.4.2 MQTTLens | ||
{{ : | {{ : | ||
MQTTlens est une application Google Chrome, qui se connecte à un courtier MQTT et peut s' | MQTTlens est une application Google Chrome, qui se connecte à un courtier MQTT et peut s' |