raspberrypi:linux:mqtt_mosquitto

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

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:06] – [1.3 Structure d'un paquet MQTT] philraspberrypi: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:linux:raspilinux|{{ :iconemaison.jpg?nolink&25|Sommaire Raspberry Pi sous Linux}}]] [[raspberrypi:linux:raspilinux|{{ :iconemaison.jpg?nolink&25|Sommaire Raspberry Pi sous Linux}}]]
  
-===== 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'industrie pétrolière. 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'industrie pétrolière.
  
 \\ \\
  
-==== 1.2 Principes ==== +===== 1.2 Principes ===== 
-=== 1.2.1 Organisation et communication ===+==== 1.2.1 Organisation et communication ====
 <callout type="primary" icon="true">**MQTT** est un **service de publication/abonnement** TCP/IP simple et extrêmement léger. Il fonctionne sur le principe **client/serveur**.</callout> <callout type="primary" icon="true">**MQTT** est un **service de publication/abonnement** TCP/IP simple et extrêmement léger. Il fonctionne sur le principe **client/serveur**.</callout>
  
Ligne 70: Ligne 70:
 \\ \\
  
-=== 1.2.2 Les topics ===+==== 1.2.2 Les topics ====
 <callout type="primary" icon="true">Un **topic** est une simple **chaine de caractères**, mais qui peut être **structurée hiérarchiquement**. \\ \\ Exemple : **maison/salon/temperature**</callout> <callout type="primary" icon="true">Un **topic** est une simple **chaine de caractères**, mais qui peut être **structurée hiérarchiquement**. \\ \\ Exemple : **maison/salon/temperature**</callout>
  
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** : <html><a href="http://www.steves-internet-guide.com/mqtt-protocol-messages-overview/" target="_blank">Comprendre la structure des paquets du protocole MQTT</a></html>   * **Source** : <html><a href="http://www.steves-internet-guide.com/mqtt-protocol-messages-overview/" target="_blank">Comprendre la structure des paquets du protocole MQTT</a></html>
  
Ligne 155: Ligne 155:
 \\ \\
  
- +====== 2. Le broker Mosquitto ======
- +
-===== 2. Le broker Mosquitto =====+
 {{ :raspberrypi:linux:mosquitto-text-side-28.png?nolink&200|}} {{ :raspberrypi:linux:mosquitto-text-side-28.png?nolink&200|}}
-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 5.0, 3.1.1 et 3.1 du protocole MQTT. Mosquitto est léger et convient à une utilisation sur tous les appareils, des ordinateurs monocarte basse consommation aux serveurs complets.
  
 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, des ordinateurs intégrés ou des microcontrôleurs. 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, des ordinateurs intégrés ou des microcontrôleurs.
Ligne 169: Ligne 167:
 \\ \\
  
-===== 3. Installation et mise en oeuvre sur le réseau local =====+===== 2.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**+  * **Mise à jour de l'OS**
 <code bash *.bash> <code bash *.bash>
 sudo apt update && sudo apt upgrade -y sudo apt update && sudo apt upgrade -y
Ligne 212: Ligne 210:
 |"$SYS/broker/version"|La version du broker.| |"$SYS/broker/version"|La version du broker.|
  
-=== 3.1.2 Arrêt, démarrage, redémarrage ===+=== 2.1.1.2 Arrêt, démarrage, redémarrage ===
 <callout type="tip" icon="true">Le broker est installé en tant que **service**. Pour l'arrêter ou le redémarrer, utiliser les commandes suivantes :</callout> <callout type="tip" icon="true">Le broker est installé en tant que **service**. Pour l'arrêter ou le redémarrer, utiliser les commandes suivantes :</callout>
  
Ligne 221: Ligne 219:
 </code> </code>
  
-=== 3.1.3 Tests ===+=== 2.1.1.3 Tests ===
 <callout type="info" icon="true">Le paquet **mosquitto-clients** fournit deux commandes, <html><a href="https://mosquitto.org/man/mosquitto_sub-1.html" target="_blank">mosquitto_sub</a></html> pour une souscription et <html><a href="https://mosquitto.org/man/mosquitto_pub-1.html" target="_blank">mosquitto_pub</a></html> pour une publication.</callout> <callout type="info" icon="true">Le paquet **mosquitto-clients** fournit deux commandes, <html><a href="https://mosquitto.org/man/mosquitto_sub-1.html" target="_blank">mosquitto_sub</a></html> pour une souscription et <html><a href="https://mosquitto.org/man/mosquitto_pub-1.html" target="_blank">mosquitto_pub</a></html> pour une publication.</callout>
  
-== 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) "//Bonjour//" sur le canal d'information (topic) //test/val// à l'aide d'un client **mosquitto_pub**. Ce message sera reçu par un client **mosquitto_sub** abonné à //test/val//. Pour tester le bon fonctionnement du broker, nous allons publier le message (payload) "//Bonjour//" sur le canal d'information (topic) //test/val// à l'aide d'un client **mosquitto_pub**. Ce message sera reçu par un client **mosquitto_sub** abonné à //test/val//.
  
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** : <html><a href="https://mosquitto.org/man/mosquitto-conf-5.html" target="_blank">Page du manuel de moquitto.conf</a></html>   * **Ressource** : <html><a href="https://mosquitto.org/man/mosquitto-conf-5.html" target="_blank">Page du manuel de moquitto.conf</a></html>
  
Ligne 300: Ligne 298:
 \\  \\ 
  
-==== 3.2. Sous Windows ====+==== 2.1.2. Sous Windows ====
 Voir ce <html><a href="http://www.steves-internet-guide.com/install-mosquitto-broker/" target="_blank">lien</a></html> pour installer le broker Mosquitto sous Windows,  Voir ce <html><a href="http://www.steves-internet-guide.com/install-mosquitto-broker/" target="_blank">lien</a></html> pour installer le broker Mosquitto sous Windows, 
  
 \\ \\
  
-==== 3.3 Sur un NAS Synology ====+==== 2.1.3 Sur un NAS Synology ====
 {{ :raspberrypi:linux:synologyico.jpg?nolink&80|}} {{ :raspberrypi:linux:synologyico.jpg?nolink&80|}}
   * **Source** : <html><a href="https://www.lesalexiens.fr/actualites/tutoriel-installer-mosquitto-mqtt-sur-nas-synology/" target="_blank">Installer le broker MQTT Mosquitto sur NAS Synology (DSM 6.2+) avec Docker</a></html>   * **Source** : <html><a href="https://www.lesalexiens.fr/actualites/tutoriel-installer-mosquitto-mqtt-sur-nas-synology/" target="_blank">Installer le broker MQTT Mosquitto sur NAS Synology (DSM 6.2+) avec Docker</a></html>
Ligne 326: Ligne 324:
 \\ \\
  
- +===== 2.2 Sécurité ===== 
- +
-===== Sécurité ===== +
 <callout type="info" icon="true">Cette partie ne sera pas exploitée lors du développement sur un réseau local dans la salle de classe. A prendre en compte si l'accès au broker se fait via Internet.</callout>  <callout type="info" icon="true">Cette partie ne sera pas exploitée lors du développement sur un réseau local dans la salle de classe. A prendre en compte si l'accès au broker se fait via Internet.</callout> 
  
-==== 4.1 Authentification ====+==== 2.2.1 Authentification ====
 {{  :raspberrypi:linux:security-mqtt.jpg?300|}} {{  :raspberrypi:linux:security-mqtt.jpg?300|}}
 Ce paragraphe illustre la mise en sécurité de l'installation étudiée dans la partie "Découverte" de la page [[microc:iot:clientmqttesp8266|Mise en oeuvre d'un client MQTT sur un ESP8266 feather Huzzah]].  Ce paragraphe illustre la mise en sécurité de l'installation étudiée dans la partie "Découverte" de la page [[microc:iot:clientmqttesp8266|Mise en oeuvre d'un client MQTT sur un ESP8266 feather Huzzah]]. 
Ligne 435: Ligne 431:
 \\ \\
  
-==== 4.2 Chiffrage de la connexion ====+==== 2.2.2 Chiffrage de la connexion ====
 <html><span style="color:red">A faire</span></html> <html><span style="color:red">A faire</span></html>
  
 \\ \\
  
-===== 5 QoS =====  +==== 2.2.3 QoS ====  
-<callout type="primary" icon="true">Mosquitto implémente les trois qualités de service.</callout>+<callout type="primary" icon="true">**Mosquitto** implémente les trois qualités de service.</callout>
  
 \\ \\
  
-===== 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 ? ====
 {{ :raspberrypi:linux:websocket.png?nolink&80|}} {{ :raspberrypi:linux:websocket.png?nolink&80|}}
 <callout type="warning" icon="true">MQTT sur Websockets vous permet de **recevoir des données MQTT directement dans un navigateur Web**.</callout> <callout type="warning" icon="true">MQTT sur Websockets vous permet de **recevoir des données MQTT directement dans un navigateur Web**.</callout>
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'envoie au client. Le client extrait le paquet MQTT du paquet websockets puis le traite comme un paquet MQTT normal. 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'envoie au client. Le client extrait le paquet MQTT du paquet websockets puis le traite comme un paquet MQTT normal.
 {{ :raspberrypi:linux:mqtt-websockets-illustration.jpg?nolink&450 |}} {{ :raspberrypi:linux:mqtt-websockets-illustration.jpg?nolink&450 |}}
Ligne 462: Ligne 458:
 <callout type="primary" icon="true">La **version 1.5.7** du **broker Mosquitto** pour Raspberry Pi OS est **compatible avec les Websockets**. Il faut configurer le fichier mosquitto.conf pour que la communication s'établisse entre le broker et un client.</callout> <callout type="primary" icon="true">La **version 1.5.7** du **broker Mosquitto** pour Raspberry Pi OS est **compatible avec les Websockets**. Il faut configurer le fichier mosquitto.conf pour que la communication s'établisse entre le broker et un client.</callout>
  
-=== 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:
 </code> </code>
  
-=== 6.2.3 Test de Websocket ===+=== 2.3.2.3 Test de Websocket ===
 {{  :web:eclipse_paho_logo.png?nolink&100|}} {{  :web:eclipse_paho_logo.png?nolink&100|}}
 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:eclipsepaho|Créer un client MQTT avec Eclipse Paho]]. 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:eclipsepaho|Créer un client MQTT avec Eclipse Paho]].
Ligne 491: Ligne 487:
 \\ \\
  
-===== 7. Outils =====+===== 2.4. Outils =====
  
 {{ :raspberrypi:linux:mymqtt.png?nolink&80|}} {{ :raspberrypi:linux:mymqtt.png?nolink&80|}}
-==== 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** sur un smartphone, on pourra facilement vérifier la capacité du broker à recevoir ou à émettre des messages.+En installant un **client pour Androïd** sur un smartphone tel que **MyMQTT** , on pourra facilement vérifier la capacité du broker à recevoir ou à émettre des messages.
   * ** Fonctionnalités **   * ** Fonctionnalités **
     * Connection à un courtier MQTT v3.1 (facultatif avec nom d'utilisateur et mot de passe)      * Connection à un courtier MQTT v3.1 (facultatif avec nom d'utilisateur et mot de passe) 
Ligne 504: Ligne 500:
 Consulter la page [[reseaux:outils:mymqtt|Wiki Réseau - Test d'un broker Mosquitto avec MyMQTT (Android App)]] pour sa mise en oeuvre. Consulter la page [[reseaux:outils:mymqtt|Wiki Réseau - Test d'un broker Mosquitto avec MyMQTT (Android App)]] pour sa mise en oeuvre.
  
-==== 7.2 MQTTlens : un client pour navigateur ====+\\ 
 + 
 +==== 2.4.2 MQTTLens : un client pour navigateur ====
 {{ :raspberrypi:linux:mqttlensico.png?nolink|}} {{ :raspberrypi:linux:mqttlensico.png?nolink|}}
 MQTTlens est une application Google Chrome, qui se connecte à un courtier MQTT et peut s'abonner et publier sur des sujets MQTT.  MQTTlens est une application Google Chrome, qui se connecte à un courtier MQTT et peut s'abonner et publier sur des sujets MQTT. 
  • raspberrypi/linux/mqtt_mosquitto.1720505190.txt.gz
  • Dernière modification : 2024/07/09 08:06
  • de phil