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 [2022/08/01 18:34] – [4.1 Authentification] philraspberrypi:linux:mqtt_mosquitto [2024/05/21 19:34] (Version actuelle) – [6.2.3 Test de Websocket] phil
Ligne 3: Ligne 3:
 ===== Raspberry Pi - Installer un broker (serveur) MQTT Mosquitto ===== ===== Raspberry Pi - Installer un broker (serveur) MQTT Mosquitto =====
  
-[Mise à jour le 1/8/2022] <html><span style="color:red">En cours de rédaction</span></html>+[Mise à jour le 21/5/2024] <html><span style="color:red">En cours de rédaction</span></html>
  
 {{ :raspberrypi:linux:mosquittoraspi.jpg?nolink&250|}} {{ :raspberrypi:linux:mosquittoraspi.jpg?nolink&250|}}
Ligne 16: Ligne 16:
  
   * **Lectures connexes**   * **Lectures connexes**
-    * [[arduino:clientmqttesp8266|Wiki Arduino - Mettre en œuvre un client MQTT sur un EP8266 (ESP32) Feather Huzzah, MKR1010 ou Arduino Uno Wifi 2]]+    * [[microc:iot:clientmqttesp8266|Wiki Arduino - Mettre en œuvre un client MQTT sur un EP8266 (ESP32) Feather Huzzah, MKR1010 ou Arduino Uno Wifi 2]]
     * [[reseaux:outils:mqttlens|Wiki Réseau - Tester un broker Mosquitto avec MQTTlens]]     * [[reseaux:outils:mqttlens|Wiki Réseau - Tester un broker Mosquitto avec MQTTlens]]
     * [[raspberrypi:linux:nodered|Wiki Raspberry Pi sous Linux - Créer un flux de données et une interface utilisateur avec Node-RED]]     * [[raspberrypi:linux:nodered|Wiki Raspberry Pi sous Linux - Créer un flux de données et une interface utilisateur avec Node-RED]]
     * [[web:eclipsepaho|Wiki Web - Créer un client MQTT (Websockets) avec Eclipse Paho]]     * [[web:eclipsepaho|Wiki Web - Créer un client MQTT (Websockets) avec Eclipse Paho]]
-    * [[raspberrypi:linux:influxdb_NR|Wiki Raspberry Pi sous Linux - Sauvegarder ses données dans une base TSDB (InfluxdB)]]+    * [[raspberrypi:linux:influxdb_NR|Wiki Raspberry Pi sous Linux - Sauvegarder ses données dans une base TSDB (InfluxdB) A venir]]
  
   * **Mots-clés**   * **Mots-clés**
 **client**((Dans un réseau informatique, un client est le **logiciel** qui envoie des demandes à un serveur.)), **serveur** ((Un serveur informatique est un dispositif informatique (matériel ou logiciel) qui **offre des services**, à un ou plusieurs clients.)), **broker MQTT**((Serveur ou **courtier** des messages. Il se charge de les aiguiller vers les différents clients qui se sont abonnés.)), **subscriber**((**Abonné** à un ou plusieurs topics.)), **publisher**((**Editeur** de messages.)), **topic MQTT**((**Sujet ou canal d'information**. Dans MQTT, le mot topic fait référence à une chaîne UTF-8 que le courtier utilise pour filtrer les messages des clients.)), **payload**((Les messages possèdent un payload, c'est à dire, une propriété contenant les informations les plus utiles.))(charge utile), **joker**((**Caractère générique** utilisé dans le mécanisme de filtrage des messages.)), sécurité, **QoS**((La qualité de service (QDS) ou **quality of service** (QoS) est la capacité à véhiculer dans de bonnes conditions un type de trafic donné.)). **client**((Dans un réseau informatique, un client est le **logiciel** qui envoie des demandes à un serveur.)), **serveur** ((Un serveur informatique est un dispositif informatique (matériel ou logiciel) qui **offre des services**, à un ou plusieurs clients.)), **broker MQTT**((Serveur ou **courtier** des messages. Il se charge de les aiguiller vers les différents clients qui se sont abonnés.)), **subscriber**((**Abonné** à un ou plusieurs topics.)), **publisher**((**Editeur** de messages.)), **topic MQTT**((**Sujet ou canal d'information**. Dans MQTT, le mot topic fait référence à une chaîne UTF-8 que le courtier utilise pour filtrer les messages des clients.)), **payload**((Les messages possèdent un payload, c'est à dire, une propriété contenant les informations les plus utiles.))(charge utile), **joker**((**Caractère générique** utilisé dans le mécanisme de filtrage des messages.)), sécurité, **QoS**((La qualité de service (QDS) ou **quality of service** (QoS) est la capacité à véhiculer dans de bonnes conditions un type de trafic donné.)).
 +
 +\\
 +
  
 ===== 1. MQTT (généralités) ===== ===== 1. MQTT (généralités) =====
Ligne 38: Ligne 41:
   * Permet une **forte fiabilité** si nécessaire,   * Permet une **forte fiabilité** si nécessaire,
   * Nécessite **peu de ressources** processeurs et de mémoires.   * Nécessite **peu de ressources** processeurs et de mémoires.
 +
 +\\
  
 ==== 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 ====
Ligne 130: Ligne 137:
 {{ :raspberrypi:linux:qos-2.png?nolink&350  |}} {{ :raspberrypi:linux:qos-2.png?nolink&350  |}}
 <callout type="primary" icon="true">La plupart des courtiers MQTT commerciaux ne prennent pas en charge le niveau de QoS 2 car il est lent et consomme plus de ressources.</callout> <callout type="primary" icon="true">La plupart des courtiers MQTT commerciaux ne prennent pas en charge le niveau de QoS 2 car il est lent et consomme plus de ressources.</callout>
 +
 +\\
 +
 ==== 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 136: Ligne 146:
  
 {{ :raspberrypi:linux:paquetmqtt.jpg?nolink |}} {{ :raspberrypi:linux:paquetmqtt.jpg?nolink |}}
 +
 +\\
 +
 +
 +
 ===== 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|}}
Ligne 145: Ligne 160:
  
 Mosquitto fait partie de la <html><a href="https://www.eclipse.org/" target="_blank">Fondation Eclipse</a></html> et est un projet de <html><a href="https://iot.eclipse.org/" target="_blank">iot.eclipse.org</a></html>. Mosquitto fait partie de la <html><a href="https://www.eclipse.org/" target="_blank">Fondation Eclipse</a></html> et est un projet de <html><a href="https://iot.eclipse.org/" target="_blank">iot.eclipse.org</a></html>.
 +
 +\\
  
 ===== 3. Installation et mise en oeuvre basique ===== ===== 3. Installation et mise en oeuvre basique =====
Ligne 223: Ligne 240:
 == 3.1.3.2 Test sur le réseau local == == 3.1.3.2 Test sur le réseau local ==
   * **Ressource** : <html><a href="https://mosquitto.org/man/mosquitto-conf-5.html" target="_blank">Page de manuel de moustique.conf</a</html>   * **Ressource** : <html><a href="https://mosquitto.org/man/mosquitto-conf-5.html" target="_blank">Page de manuel de moustique.conf</a</html>
-<callout type="warningicon="true">A partir de la **version 2 de Mosquitto** seule la **connexion sur le réseau local** est acceptée par le broker.  \\ Pour effectuer le test précédent entre un courtier situé sur une machine (PC, Raspberry Pi,etc.) et un éditeur/abonné situé sur une autre machine (PC, smartphone, etc.) via un réseau local, il est nécessaire de modifier le fichier de configuration **mosquitto.conf** situé dans **/etc/mosquitto/**.  \\ Pour cela :  \\+ 
 +<callout icon="fa fa-hand-stop-ocolor="red" title="STOP">A partir de la **version 2 de Mosquitto** seule la **connexion sur le réseau local** est acceptée par le broker.  \\ Pour effectuer le test précédent entre un courtier situé sur une machine (PC, Raspberry Pi,etc.) et un éditeur/abonné situé sur une autre machine (PC, smartphone, etc.) via un réseau local, il est nécessaire de modifier le fichier de configuration **mosquitto.conf** situé dans **/etc/mosquitto/**.  \\ Pour cela :  \\
 - Ouvrir le fichier mosquitto.conf  \\ - Ouvrir le fichier mosquitto.conf  \\
 - Ajouter les interfaces à l'aide de l'option **listener** - Ajouter les interfaces à l'aide de l'option **listener**
Ligne 235: Ligne 253:
 //Exemple// : connexion au broker situé sur un Raspberry Pi, sur l'hôte local et sur le réseau local via les interfaces Ethernet et wifi. //Exemple// : connexion au broker situé sur un Raspberry Pi, sur l'hôte local et sur le réseau local via les interfaces Ethernet et wifi.
 {{ :raspberrypi:linux:mosquittoconf.png?nolink |}} {{ :raspberrypi:linux:mosquittoconf.png?nolink |}}
 +
 +// Tests // réalisés entre un RaspBerry pi et un smartphone
 +{{ :raspberrypi:linux:mosquittolan.png?nolink&400 |}}
 +Consulter la page [[reseaux:outils:mymqtt|Wiki Réseau - Test d'un broker Mosquitto avec MyMQTT (Android App)]] pour la mise en oeuvre du test.
 +
 +\\
 +
 ==== 3.2. Sous Windows ==== ==== 3.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 ==== ==== 3.3 Sur un NAS Synology ====
 {{ :raspberrypi:linux:synologyico.jpg?nolink&80|}} {{ :raspberrypi:linux:synologyico.jpg?nolink&80|}}
-  * **Source** : <html><a href="https://projetsdiy.fr/installer-mosquitto-nas-synology-fonctionnant-dsm-6-2-docker/" 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>
  
 Le fichier mosquitto.conf se situe dans le dossier **/usr/local/mosquitto/var**. Se connecter en **ssh**. Ouvrir **mosquitto.conf** avec nano et le compléter comme ci-dessous : Le fichier mosquitto.conf se situe dans le dossier **/usr/local/mosquitto/var**. Se connecter en **ssh**. Ouvrir **mosquitto.conf** avec nano et le compléter comme ci-dessous :
Ligne 256: Ligne 283:
 listener 9001 # A ajouter listener 9001 # A ajouter
 </code> </code>
 +
 +\\
  
  
Ligne 264: Ligne 293:
 ==== 4.1 Authentification ==== ==== 4.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 [[arduino: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]].  
-La mise en sécurité de cette installation passe par la mise en place d'une authentification. Les clients MQTT doivent s'authentifier avec un **identifiant / mot de passe**. La mise en place de cette authentification doit se faire côté Mosquitto (traitée ci-dessous) et côté client (voir [[arduino:clientmqttesp8266|Mise en oeuvre d'un client MQTT sur un ESP8266 feather Huzzah]])+La mise en sécurité de cette installation passe par la mise en place d'une authentification. Les clients MQTT doivent s'authentifier avec un **identifiant / mot de passe**. La mise en place de cette authentification doit se faire côté Mosquitto (traitée ci-dessous) et côté client (voir [[microc:iot:clientmqttesp8266|Mise en oeuvre d'un client MQTT sur un ESP8266 feather Huzzah]])
  
 **Fichier de configuration de Mosquitto** \\ **Fichier de configuration de Mosquitto** \\
Ligne 362: Ligne 391:
 {{ :raspberrypi:linux:mosquittosecur.png?nolink&500 |}} {{ :raspberrypi:linux:mosquittosecur.png?nolink&500 |}}
  
 +\\
  
 ==== 4.2 Chiffrage de la connexion ==== ==== 4.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 =====  ===== 5 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 ===== ===== 6. MQTT sur WebSockets avec Mosquitto =====
Ligne 376: Ligne 410:
  
 Le navigateur Web peut devenir l'INTERFACE pour afficher les données MQTT. Le support JavaScript de MQTT Websocket pour les navigateurs Web est fourni par le **client JavaScript**. Le navigateur Web peut devenir l'INTERFACE pour afficher les données MQTT. Le support JavaScript de MQTT Websocket pour les navigateurs Web est fourni par le **client JavaScript**.
 +
 +\\
  
 ==== 6.2 MQTT sur Websockets vs MQTT. ==== ==== 6.2 MQTT sur Websockets vs MQTT. ====
Ligne 410: Ligne 446:
 {{  :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]].
 +
 +\\
  
 ===== 7. Outils ===== ===== 7. Outils =====
Ligne 422: Ligne 460:
     * Enregistrement des messages      * Enregistrement des messages 
  
-==== 7.2 MQTTlens ====+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 ====
 {{ :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.1659371678.txt.gz
  • Dernière modification : 2022/08/01 18:34
  • de phil