Communication sans fil entre Raspberry Pi via un courtier / client MQTT

Communication sans fil entre Raspberry Pi via un courtier
Communication sans fil entre Raspberry Pi via un courtier

MQTT est un protocole qui envoie spécifiquement des données à partir d’appareils de l’Internet des objets et est pris en charge par la plupart des microcontrôleurs et des systèmes. Pour utiliser la communication Raspberry Pi MQTT, pas grand-chose n’est nécessaire, c’est pourquoi ce type de transmission est très intéressant. De plus, il est vraiment facile à utiliser.

Dans ce tutoriel, nous installons un courtier Raspberry Pi MQTT, après quoi nous recevons et envoyons des données. Nous pouvons utiliser plusieurs Raspberry Pi pour les tests ou simplement utiliser un seul appareil.

Accessoire

Ce tutoriel fonctionne sans beaucoup de matériel supplémentaire. Cependant, vous devez soit avoir au moins un Raspberry Pi 3 (ou un modèle Zero W) ou connectez un bâton wifi à votre Raspberry Pi pour utiliser MQTT.

D’autres appareils tels qu’un ESP8266 peut également communiquer à l’aide de MQTT. Cela est possible avec les Raspberry Pi et d’autres appareils. Pour le NodeMCU, il existe également des packages prêts à l’emploi.

Qu’est-ce que MQTT?

Certains peuvent se demander ce que devrait être MQTT. Pour citer le fonctionnaire MQTT page:

MQTT est un protocole de connectivité de machine à machine (M2M) / «Internet des objets». Il a été conçu comme un transport de messagerie de publication / abonnement extrêmement léger. Il est utile pour les connexions avec des emplacements distants où une petite empreinte de code est requise et / ou la bande passante réseau est à un prix élevé.

Il s’agit donc d’un protocole réseau standardisé avec lequel des messages / commandes courts peuvent être transmis. Le gros avantage est que les adaptateurs wifi intégrés (par exemple dans le Raspberry Pi ou dans l’ESP8266) sont utilisés pour la connexion Internet. Plus d’accessoires et de câblage compliqué ne sont pas nécessaires! Cela permet d’envoyer les données via le réseau local ou Internet.

En détail, le transfert comprend trois éléments différents:

  • Éditeur: Envoie des messages.
  • Courtier: Transfère les messages aux abonnés enregistrés.
  • Abonné: Reçoit des messages via le courtier.

Serveur Raspberry Pi MQTT – Installer et tester Mosquitto

Il existe plusieurs applications qui peuvent être utilisées pour envoyer et recevoir via MQTT, mais la plus simple sur le Raspberry Pi est probablement Moustique. Nous allons d’abord l’installer sur le Raspberry Pi:

sudo apt-get install -y mosquitto mosquitto-clients

Après l’installation, un serveur Mosquitto démarre automatiquement. Nous ouvrons un abonné dans le canal « test_channel » en attente de messages:

mosquitto_sub -h localhost -v -t test_channel

Le canal est ici comme une fréquence, sur laquelle on entend. Par exemple, différentes données peuvent être envoyées dans différents canaux (par exemple, température, humidité, luminosité, etc.).

Afin de transférer simplement des données, nous pouvons utiliser le même Raspberry Pi (ouvrir un nouveau terminal / connexion SSH) ou envoyer les données à partir d’un autre Pi. Si nous utilisons le même Raspberry Pi, l’utilisation est facilement possible. Pour cela nous envoyons simplement un message test (en tant qu’éditeur) sur le même canal:

mosquitto_pub -h localhost -t test_channel -m "Hello Raspberry Pi"

Sinon, vous devez spécifier l’adresse IP interne (par exemple 192.168.1.5) du destinataire au lieu de «localhost». Du côté du récepteur, le message devrait apparaître doux.

Échange de données Raspberry Pi MQTT avec Python

La communication est super facile, comme nous l’avons vu. Afin que nous puissions utiliser le tout à partir de scripts, nous voulons le rendre disponible pour Python. A cet effet, nous installons d’abord une bibliothèque via le Python directeur chargé d’emballage (pour Python3, utilisez également pip3):

sudo pip install paho-mqtt

Alternativement (par exemple, si le package n’a pas pu être correctement installé), vous pouvez également l’installer manuellement:

git clone https://github.com/eclipse/paho.mqtt.python.git
cd paho.mqtt.python
python setup.py install

Nous commençons par le récepteur. Pour cela nous créons un nouveau fichier avec le contenu:

sudo nano mqtt_subscriber.py

Après avoir enregistré et fermé (CTRL + O, CTRL + X) nous exécutons le fichier:

sudo python mqtt_subscriber.py

Soit vous envoyez une commande comme d’habitude par Shell Command, soit nous créons également un expéditeur / éditeur Python.

Le code de l’éditeur ressemble à ceci (créez un nouveau fichier puis exécutez-le, en gardant à l’esprit la bonne adresse IP):

C’est ça! Vous pouvez maintenant inclure les parties appropriées dans vos scripts et recevoir ou envoyer des messages MQTT à partir d’autres Raspberry Pi. Bien sûr, cela ne se limite pas aux Raspberry Pi, car les messages peuvent également provenir ou être adressés à d’autres appareils.

Autres moyens de communiquer avec le Raspberry Pi

Bien sûr, MQTT est loin d’être le seul moyen d’échanger des données. Si vous avez un système avec son propre système d’exploitation tel. Raspbian peut être établi à l’aide de connexions SSH et, par exemple, envoyé via SCP des dossiers. Cependant, les appareils doivent avoir une connexion réseau.

Une autre possibilité sans connexion Internet sont les émetteurs et récepteurs radio normaux. Voici par exemple La transmission radio 433 MHz est très populaire car les modules sont très bon marché et de nombreux appareils tels que les prises radiocommandées ou les portes de garage sont compatibles avec elle. Cependant, ce transfert est limité à 24 bits, ce qui n’est pas beaucoup.

Plus de données par message peuvent être transmises via une transmission radio 2,4 GHz. Ce transfert diffère de MQTT car des modules supplémentaires sont utilisés. Cependant, il est également possible d’envoyer des commandes ou des messages à Arduinos.