Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente Prochaine révisionLes deux révisions suivantes |
raspberrypi:linux:mqtt_mosquitto [2022/08/01 18:27] – [4.1 Authentification] phil | raspberrypi:linux:mqtt_mosquitto [2024/05/21 19:27] – [Raspberry Pi - Installer un broker (serveur) MQTT Mosquitto] phil |
---|
===== 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|}} |
| |
* **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) ===== |
== 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="warning" icon="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-o" color="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** |
//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 : |
Le Raspberry pi demande un mot de passe. Entrer //**mot2passe**//. \\ | Le Raspberry pi demande un mot de passe. Entrer //**mot2passe**//. \\ |
| |
**-c** crée le fichier \\ | * **-c** crée le fichier \\ |
**sondes** est l'identifiant | * **sondes** est l'identifiant |
| |
En supprimant -c de la commande ci-dessus, il est possible : | En supprimant -c de la commande ci-dessus, il est possible : |
password_file /etc/mosquitto/passwd | password_file /etc/mosquitto/passwd |
allow_anonymous false # Connexions sans mot de passe non autorisées | allow_anonymous false # Connexions sans mot de passe non autorisées |
</code> | |
| |
> //**password_file**// permet de spécifier le fichier de mots de passe à utiliser | # password_file permet de spécifier le fichier de mots de passe à utiliser |
> //**allow-anonymous**// autorise (**true**) ou non (**false**) les connexions anonymes (sans mot de passe) | # allow-anonymous autorise (**true**) ou non (**false**) les connexions anonymes (sans mot de passe) |
| </code> |
| |
* Redémarrer le serveur | * Redémarrer le serveur |
| |
* //Exemple de résultat// | * //Exemple de résultat// |
{{ :raspberrypi:linux:mosquittosecur.png?nolink&600 |}} | {{ :raspberrypi:linux:mosquittosecur.png?nolink&500 |}} |
| |
| |
* 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. |