Skip to content
Learni
View all tutorials
IoT

Comment créer un prototype Industrial IoT en 2026

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 passe raspberry par 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

terminal
sudo apt update && sudo apt upgrade -y
sudo apt install python3-pip git -y
sudo reboot

Cette 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

terminal
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

/etc/mosquitto/mosquitto.conf
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 0

Copiez 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

sensor_publisher.py
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

dashboard_subscriber.py
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

terminal
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://:1880. Le curl importe un flow (voir étape suivante). Piège : Node.js requis ; si conflit port, node-red-stop puis relancez.

Flux Node-RED pour dashboard visuel

flow.json
[{"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 mosquitto et firewall (sudo ufw allow 1883).
  • MQTT connexion refusée : Client ID dupliqué ; ajoutez clean_session=True ou 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.