Mini réseau d'objets connectées

Sommaire
Matériels utilisés
Mise en oeuvre des matériels
Maquette

Aperçu en vrai

Configuration de la box Wifi
Sur la face arrière de la box wifi qui nous a été fournie pour ce projet, nous avons découvert l’adresse IP de la box (192.168.1.50) ainsi que les identifiants de connections pour accéder à la page d’administration de cette box (identifiant : admin) et sans mots de passe. Étant donné que cette box avait une configuration par défaut assez complet pour un réseau, nous n’avions pas grand-chose à configurer. Ce que nous avons configuré était le mot de passe wifi du SSID ”PT4ObjConnect” que nous avons remplacé par ”Admin2022” et avons activé le DHCP avec une plage d’adresse allant de ”192.168.1.30” à ”192.168.1.200” qui était désactivé par défaut.
Configuration du Raspberry PI
Afin de configurer le Raspberry PI, nous avons utilisé l’OS DietPi dû à sa légèreté et sa simplicité d’utilisation. Pour installer Dietpi sur le RPI, il faut d’abord flasher l’OS sur une carte SD avec le logiciel RPI-Imager :

Avant de connecter le RPI au wifi de la box, nous avons créé un partage de connexion à l’aide d’un téléphone portable ayant accès à internet (étant donné que la box n’a pas accès à internet et que nous en avons besoin afin d’installer des logiciels sur le RPI). Nous avons également utilisé un PC portable (sous Linux) connecté au téléphone par Wifi afin de configurer le Raspberry PI par SSH. Sur le PC portable, pour connaitre la passerelle par défaut de ce réseau créé par le téléphone, nous avons relevé la passerelle par défaut avec la commande ”ip r” :

Pour commencer, avant de démarrer le RPI, nous avons créé un fichier ”ssh” vide dans la partition contenant la racine de l’OS afin d’activer le service ssh au démarrage du RPI.
Et dans la deuxième partition (en FAT) nous avons modifié le fichier dietpi.txt afin d’activer la carte wifi et configurer le Raspberry PI avec une adresse IP statique. Les lignes que nous avons modifiées dans le fichier dietpi.txt sont les suivantes :
AUTO_SETUP_NET_ETHERNET_ENABLED =0
AUTO_SETUP_NET_WIFI_ENABLED =1
AUTO_SETUP_NET_USESTATIC =1
AUTO_SETUP_NET_STATIC_IP =192.168.80.160
AUTO_SETUP_NET_STATIC_MASK =255.255.255.0
AUTO_SETUP_NET_STATIC_GATEWAY =192.168.80.153
AUTO_SETUP_DHCP_TO_STATIC =1
Ensuite, pour que le Raspberry PI se connecte au wifi du téléphone, nous avons modifié le fichier dietpi-wifi.txt avec les informations suivantes :
aWIFI_SSID [0]= ' WifiSAE '
aWIFI_KEY [0]= '12345678910 '
Une fois le Raspberry PI alimenté, il se connecte en quelques secondes au réseau wifi. Nous pouvons nous y connecter par ssh en utilisant la commande :
ssh dietpi@192.168.80.160
Avec le mot de passe par défaut ”dietpi”. Ce qui nous retourne cette interface une fois connecté :

Afin de mettre à jour le système, nous avons utilisé la commande :
sudo dietpi-update
Pour installer les différents services nécessaires pour ce projet sur le Raspberry PI, nous avons utilisé la commande :
sudo dietpi-software
Et avons sélectionné l’option ”search software” pour rechercher les logiciels MariaDB, Mosquitto et Node-RED, et les avons ensuite sélectionnés pour les installer :

Pour configurer le serveur MQTT, nous avons modifié le fichier ”/etc/mosquitto/mosquitto.conf” pour supprimer tout son contenu et le remplacer par :
allow_anonymous false
password_file /etc/ mosquitto /passwd
listener 1883
Nous avons ensuite ajouté un utilisateur en utilisant la commande ”sudo mosquitto_passwd -c /etc/mosquitto/passwd patate” et avons redémarré le service MQTT avec ”sudo systemctl restart mosquitto”. Si jamais un utilisateur a été créer par erreur et que vous voulez le supprimer, par exemple l’utilisateur ”username” il suffit d’exécuter la commande suivante : ”sudo mosquitto_passwd -d /etc/mosquitto/passwd username”.
Afin de configurer la base de données MariaDB, nous avons utilisé la commande permettant de configurer l’utilisateur root et d’assurer la sécurité de la base de données :
sudo mysql_secure_installation
Pour se connecter à la base de données, nous avons en utilisé la commande ”mysql -u root -p” puis avons ajouté l’utilisateur ”patate” en utilisant la commande afin de lui donner tous les privilèges :
GRANT ALL PRIVILEGES ON . TO 'patate '@'localhost ' IDENTIFIED BY 'patate ';
Nous avons ensuite utilisé la commande ”FLUSH PRIVILEGES” pour prendre en compte les nouveaux privilèges.
Pour configurer Node-RED, nous avons dans un premier temps utilisé la commande ”sudo systemctl enable nodered.service” afin d’activer le service Node-RED au démarrage. À la suite de son installation, Node-RED était disponible à l’adresse IP de notre Raspberry
PI sur le port 1880. Concernant Node-RED, c’est un environnement de programmation visuel open-source basé sur Node.js qui permet de créer des flux de données et des applications IoT en utilisant des blocs graphiques. Il facilite la création de protocoles de communication, la manipulation de données et la création d’interfaces utilisateur en utilisant des nœuds prédéfinis ou personnalisés. Il est souvent utilisé pour connecter des périphériques IoT, des services en nuage et des applications web. Il est également possible d’ajouter des fonctionnalités supplémentaires en utilisant des modules additionnels.
Pour ajouter des fonctionnalités supplémentaires à Node-RED, nous avons installé les modules node-red-dashboard et node-red-node-mysql en utilisant le gestionnaire de paquets de Node-RED. Pour installer les modules Node-RED Dashboard et Node-RED Node-MySQL, nous avons utilisé les commandes suivantes dans le terminal de notre Raspberry PI :
cd /mnt/ dietpi_userdata /node -red/
npm install node -red - dashboard
npm install node -red -node -mysql
La première commande permet de se rendre dans le répertoire de Node-RED, et la seconde et la troisième commandes permettent respectivement d’installer les modules Node-RED Dashboard et Node-RED Node-MySQL. Une fois les modules installés, ils deviennent disponibles dans les palettes de nœuds de Node-RED et peuvent être utilisés pour créer des tableaux de bord et des requêtes SQL directement depuis Node-RED. Le module node-red- dashboard a été utilisé pour créer des tableaux de bord pour afficher les données des capteurs en temps réel. Le module node-red-node-mysql a été utilisé pour stocker les données des capteurs dans une base de données MySQL sur le Raspberry PI. Ces modules ont été installés en utilisant les commandes npm depuis le terminal.
En utilisant ces modules, nous avons pu créer des flux de données pour collecter les données des capteurs, les stocker dans une base de données MySQL et les afficher sur des tableaux de bord en utilisant Node-RED. Cela nous a permis de visualiser les données des capteurs en temps réel et de stocker les données pour une analyse ultérieure. Pour vous donner une idée de notre flux final sur Node-RED, voici une image de notre flow final :