Configurer un serveur MQTT avec Raspberry Pi

Last updated on 5 juin 2019

Introduction

Alors que les objets connectés IoT transforment petit à petit notre monde, les arts numériques se sont appropriés cette révolution numérique pour créer des installations autonomes et sans fil. En effet, munis de quelques capteurs et d’un système de transmission de message, les artistes peuvent désormais investir autrement l’espace physique.

Dans ce billet de blogue, on va apprendre à configurer pour la première fois un Raspberry Pi pour le transformer en un hotspot wifi et un serveur MQTT, qui va servir de relais entre les senseurs et un programme audio/visuel (Processing, MaxMSP…etc.).

Ceci est le premier d’une longue série d’article concernant les objets connectés, je vais aussi aborder la configuration des ESP8266…. à suivre !

Exemple d’utilisation : vous avez des capteurs de présence installés un peu partout dans une salle, des microcontrôleurs ESP8266 équipés de senseurs PIR ou à ultrasons. Vous voulez faire déclencher du son ou un visuel à chaque fois qu’un senseur détecte une présence. Donc les microcontrôleurs doivent communiquer avec notre programme pour lui faire savoir qu’il passe de 0 à 1 ou lui communiquer la distance entre le senseur et une personne, à travers le protocole MQTT.

Installation de An-Laurence Higgins – Université de Montréal – 2019 – 5 ESP8266 avec des capteurs à ultrasons et PIR – MQTT – Processing

Autre cas de figure : Un audio react du son qui, à chaque fois qu’il détecte un pick dans les basses fréquences par exemple, va déclencher une lumière. Cette fois ci encore, il y a une communication, mais en sens inverse par rapport au premier exemple, entre le programme et le microcontrôleur qui va faire allumer la lumière. là aussi le protocole de messagerie MQTT intervient, il va faire la passerelle entre l’objet connecté et le programme (ou, évidemment, l’inverse) et va assurer la bonne livraison et réception des messages.

Installation de Laura Criollo – Université de Montréal – 2019 – Utilisation d’ESP8266, MQTT et Processing.

Le projet peut ne pas être nécessairement artistique, ça peut être pour ouvrir et fermer des lumières grâce aux commandes vocales via Alexa, ou encore récupérer des données sur la température dans différentes pièces…etc.

Dans un prochain billet de blogue, je vais expliquer en quoi MQTT est utile et le comparer à d’autres protocoles (comme OSC…etc.). Mais maintenant, place à la configuration de notre Raspberry Pi !

Ce qu’il vous faut :

  • Un raspberry Pi modèle 3 ou zero avec une alimentation 5V.
  • Un clavier et une souris
  • un écran avec câble HDMI
  • Une carte SD (minimum 8Go)

Une installation sans clavier, souris ou écran est possible via SSH et sans interface, mais pour les débutants, mieux vaut une interface pour une prise en main rapide et facile.

Si Raspbian est déjà présent, sautez à l’étape 2.

Étape 1 : installation de Raspbian

Pour commencer. télécharger la dernière version de raspbian.

Choisir la version Raspbian Stretch with desktop ensuite décompresser le contenu jusqu’à avoir un .img (pour Mac).

Si vous êtes familier avec Raspbian sans desktop, installer dans ce cas Raspbian Stretch Lite. Si vous faites cela, n’oubliez pas d’activer le SSH afin d’y accéder à distance, puisque depuis l’attaque de 2016 qui visait les IoT, la fondation Raspberry Pi a décidé de ne pas activer les connexions SSH par défaut. Je vous conseille de lire ce tutoriel qui explique comment configurer un Raspberry Pi via SSH.

Télécharger le logiciel Etcher (Mac, Windows et Linux) qui va nous permettre de flasher l’OS Raspbian dans la carte SD.

Introduire la carte SD dans un PC ou un Mac et lancer Etcher. Sélectionner le fichier img, la carte SD et appuyer sur « Flash! »

Une fois que c’est fait, installer la carte SD dans le raspberry pi et brancher clavier, souris, HDMI ensuite le cable d’alimentation. Suivez les étapes pour une première configuration. Assurez-vous que la date et l’heure sont corrects, sinon, configurer manuellement en tapant ceci sur le terminal :

sudo date -s "Tue May 28 21:31:26 UTC-5 2019"

Changer les paramètres pour la date et l’heure actuelle.

Avant de passer à l’étape suivante, il faut impérativement mettre à jour le système et le redémarrer :

sudo apt-get update
sudo apt-get upgrade
reboot

Étape 2 : Installation de RaspAP

RaspAP est un outil pour contrôler le wifi et qui propose une interface web.

Cette commande va installer RaspAP :

wget -q https://git.io/voEUQ -O /tmp/raspap && bash /tmp/raspap

Vous devez répondre à quelques questions et l’installation se fera toute seule.

Une fois que c’est terminé, le Raspberry Pi va redémarrer et vous devriez voir apparaitre un nouveau réseau Wifi du nom de raspi-webgui. Le mot de passe par défaut est ChangeMe. Taper 10.3.141.1 dans votre navigateur web pour accéder à l’interface de RaspAP, le login : admin et mot de passe : secret. Il est important de changer toutes ces informations !

Interface du RaspAP, accessible via navigateur à l’adresse 10.3.141.1

Étape 3 : installation du broker Mosquitto

Il existe beaucoup de brokers MQTT, le plus stable et populaire étant Mosquitto.

Toujours dans le terminal, tapez :

sudo apt-get install mosquitto

Ensuite, pour l’activer :

sudo /etc/init.d/mosquitto start

Une fois connecté dans le hotspot et après l’avoir configuré (changement du SSID, mot de passe, reboot…etc.), vous pouvez commencer à tester le serveur. Sachez que son adresse IP est 10.3.141.1. Même si vous faites un reboot du système, le serveur sera toujours opérationnel.

Étape 4 : test du serveur

On va installer un client mosquitto. Sur Linux (raspbian ou autre) :

sudo apt-get install mosquitto-clients

et sur Mac, si vous avez brew, faites :

brew install mosquitto

Maintenant, il faut ouvrir deux terminaux, soit dans le même appareil, soit (idéalement) dans deux appareils différents connectés au même hotspot. Dans le premier, faites ceci :

mosquitto_sub -h 10.3.141.1 -t 'test/topic' -v

et dans l’autre, on va envoyer un message au topic :

mosquitto_pub -h 10.3.141.1 -t 'test/topic' -m 'hello world'

Si tout se passe bien, vous devriez voir apparaitre un message dans le premier terminal.

La dernière étape

C’est de désactiver l’économiseur d’écran et la gestion de l’alimentation de l’écran (DPMS) afin d’éviter que le système se mets en veille.

Dans le terminal, faites :

sudo nano /etc/X11/xinit/xinitrc

et vous ajoutez ces deux lignes :

xset s off
xset -dpms

Faites ctrl+x et confirmer les modifications.
Enfin, faites un reboot du système pour appliquer les changements.

N’hésitez pas à réagir dans les commentaires, c’est toujours enrichissant aussi bien pour les lecteurs que pour l’auteur 🙂

Soyez le premier à commenter

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *