Introduction
L'Industrial IoT (IIoT) révolutionne l'industrie 4.0 en connectant machines, capteurs et systèmes pour une maintenance prédictive, une optimisation des processus et une traçabilité en temps réel. Contrairement à l'IoT grand public, l'IIoT priorise la fiabilité, la sécurité et les protocoles industriels comme MQTT ou OPC-UA.
Ce tutoriel beginner vous guide pour créer un prototype IIoT complet sur Raspberry Pi : un broker MQTT simule un réseau d'usine, un script Python émule un capteur industriel (température et humidité d'une machine), un récepteur affiche les données, et Node-RED offre un dashboard visuel.
Pourquoi ce projet ? Il démontre les flux de données edge-to-cloud typiques en usine, scalable vers des PLC réels. En 2026, avec l'essor de l'IA embarquée, maîtriser l'IIoT est essentiel pour les ingénieurs. Durée : 30-45 min. Résultat : un système pub/sub MQTT opérationnel, prêt à bookmarker pour vos projets pros. (128 mots)
Prérequis
- Raspberry Pi 4 ou 5 avec Raspberry Pi OS (64-bit) installé et mis à jour.
- Accès SSH ou terminal direct (utilisateur
pi, mot de passeraspberrypar défaut). - Connaissances basiques en Linux et Python (pas d'expérience IIoT requise).
- Connexion internet pour les installations.
- Ports 1883 (MQTT) et 1880 (Node-RED) ouverts si firewall.
Mettre à jour le système
sudo apt update && sudo apt upgrade -y
sudo apt install python3-pip git -y
sudo rebootCette commande met à jour tous les paquets Raspberry Pi OS, installe pip pour Python et redémarre pour appliquer les changements. Évitez les interruptions en exécutant en SSH stable ; le reboot assure une base propre pour les dépendances IIoT.
Installer le broker MQTT Mosquitto
sudo apt update
sudo apt install mosquitto mosquitto-clients -y
sudo systemctl enable mosquitto
sudo systemctl start mosquitto
mosquitto_pub -h localhost -t test -m "Hello IIoT"Installe Mosquitto (broker MQTT léger, standard IIoT), active le service au boot et le lance. Le test mosquitto_pub vérifie le port 1883. Piège : si erreur 'address already in use', vérifiez sudo netstat -tuln | grep 1883 et kill si besoin.
Configurer Mosquitto pour l'IIoT
persistence true
persistence_location /var/lib/mosquitto/
log_dest file /var/log/mosquitto/mosquitto.log
listener 1883
allow_anonymous true
max_queued_messages 1000
message_size_limit 0
max_inflight_messages 20
upgrade_outgoing_qos 0Copiez ce contenu dans /etc/mosquitto/mosquitto.conf (sauvegardez l'original), puis sudo systemctl restart mosquitto. Active persistence pour QoS IIoT (fiabilité industrielle), logs pour debug, et limites pour gros volumes de données capteurs. Piège : allow_anonymous true pour prototype ; sécurisez en prod avec ACL/users.
Script Python : Émetteur capteur industriel
import paho.mqtt.client as mqtt
import time
import random
import json
client = mqtt.Client(client_id="industrial_sensor_1", clean_session=False)
client.connect("localhost", 1883, 60)
client.loop_start()
print("Capteur IIoT démarré. Publie sur 'iiot/sensor1'.")
while True:
temp = round(random.uniform(20.0, 80.0), 2)
hum = round(random.uniform(30.0, 90.0), 2)
payload = {
"device_id": "machine_42",
"temperature": temp,
"humidity": hum,
"timestamp": time.time(),
"status": "nominal" if temp < 70 else "alerte"
}
client.publish("iiot/sensor1", json.dumps(payload), qos=1)
print(f"Publié: {payload}")
time.sleep(5)
client.loop_stop()
client.disconnect()Installez d'abord pip3 install paho-mqtt. Ce script simule un capteur industriel (machine usine), publie JSON QoS=1 vers topic 'iiot/sensor1'. clean_session=False pour persistance IIoT. Lancez avec python3 sensor_publisher.py. Piège : bloquant ; utilisez nohup ou systemd pour prod.
Script Python : Récepteur et dashboard console
import paho.mqtt.client as mqtt
import json
latest_data = {}
def on_connect(client, userdata, flags, rc):
print(f"Connecté au broker (code: {rc})")
client.subscribe("iiot/sensor1", qos=1)
def on_message(client, userdata, msg):
global latest_data
data = json.loads(msg.payload.decode())
latest_data = data
status = "🟢 Nominal" if data["status"] == "nominal" else "🔴 Alerte"
print(f"[{data['timestamp']}] {data['device_id']}: Temp={data['temperature']}°C, Hum={data['humidity']}% {status}")
client = mqtt.Client()
client.on_connect = on_connect
client.on_message = on_message
client.connect("localhost", 1883, 60)
client.loop_forever()Abonnez-vous au topic pour recevoir/afficher données en temps réel. Callbacks gèrent connect/message. Lancez dans un autre terminal : python3 dashboard_subscriber.py. Parfait pour monitoring console IIoT. Piège : loop_forever() monopolise ; multithreading pour UI avancée.
Installer et lancer Node-RED
bash <(curl -sL https://raw.githubusercontent.com/node-red/linux-installers/master/deb/update-nodejs-and-nodered)
node-red-start &
sleep 10
curl -X POST http://localhost:1880/api/v2/flows -H 'Content-Type: application/json' -d @flow.json || echo 'Importez manuellement via UI'Installe Node-RED (outil low-code IIoT), le lance en fond. Accédez à http://node-red-stop puis relancez.
Flux Node-RED pour dashboard visuel
[{"id":"flow1","label":"IIoT Dashboard","nodes":[{"id":"mqtt_in","type":"mqtt in","name":"Capteur IIoT","topic":"iiot/sensor1","broker":"mqtt_broker","x":160,"y":100,"wires":[["gauge_temp","gauge_hum","debug"]]},{"id":"mqtt_broker","type":"mqtt-broker","name":"Local MQTT","broker":"localhost","port":"1883","clientid":"nodered_iiot","x":160,"y":200,"wires":[]},{"id":"gauge_temp","type":"ui_gauge","group":"default","name":"Température","label":"°C","format":"{{value}}","min":"0","max":"100","x":380,"y":60,"wires":[]},{"id":"gauge_hum","type":"ui_gauge","group":"default","name":"Humidité","label":"%","format":"{{value}}","min":"0","max":"100","x":380,"y":140,"wires":[]},{"id":"debug","type":"debug","name":"Données JSON","active":true,"x":380,"y":220,"wires":[]}],"configs":[]}]Export JSON complet d'un flow Node-RED : MQTT in → gauges UI + debug. Importez via UI (menu burger → Import) ou curl précédent. Visualisez dashboard à /ui. Ajoutez ui_base si besoin. Piège : brokers non définis ; déployez après import.
Bonnes pratiques
- Sécurisez MQTT : Passez à TLS/ACL en prod (
allow_anonymous false, certificats CA). - QoS et Retries : Utilisez QoS=2 pour criticité haute (IIoT safety).
- Edge Computing : Traitez données localement sur Pi avant cloud (réduisez latence).
- Monitoring : Intégrez Prometheus/Grafana pour métriques broker/capteurs.
- Scalabilité : Clusterisez Mosquitto avec bridges pour multi-sites usine.
Erreurs courantes à éviter
- Broker non accessible : Vérifiez
sudo systemctl status mosquittoet firewall (sudo ufw allow 1883). - MQTT connexion refusée : Client ID dupliqué ; ajoutez
clean_session=Trueou unique ID. - Node-RED flow vide : Déployez après import (bouton rouge → Deploy).
- Données perdues : Oublie QoS=0 ; forcez QoS=1+ pour IIoT fiable.
Pour aller plus loin
- Protocoles avancés : OPC-UA avec
node-opcua(GitHub repo). - Hardware réel : Connectez DHT22/DS18B20 sur GPIO Pi.
- Cloud : Intégrez AWS IoT Core ou Azure IoT Hub.
- Formations : Découvrez nos formations Learni sur l'IoT industriel pour certifications IIoT.