DS PYTHON
Simulateur de capteurs IoT
1. Objectif général
Vous devez développer un simulateur de capteurs IoT capables de :
1. Générer périodiquement des données réalistes (température, humidité, position
GPS).
2. Les publier automatiquement vers un broker MQTT en utilisant un format JSON
structuré.
3. (Extension optionnelle) Créer une interface web (Flask) permettant de visualiser en
temps réel les données reçues.
Ce mini-projet doit reproduire les concepts d’un système IoT réel, avec une architecture
capteurs → broker MQTT → consommateur.
2. Description détaillée du problème
Vous devez implémenter trois capteurs simulés :
✔ Capteur de température
• Valeur centrale configurable (ex : 22°C).
• Application d’un bruit aléatoire pour simuler un capteur réel.
✔ Capteur d’humidité
• Valeurs comprises entre 20% et 80%.
• Variation lente dans le temps.
✔ Capteur GPS
• Position initiale (latitude/longitude) définie.
• Déplacement aléatoire simulé (quelques mètres par iteration).
Chaque capteur doit produire un dictionnaire JSON contenant au minimum :
• timestamp (UTC ISO8601)
• sensor (nom du capteur)
• value ou (lat, lon pour GPS)
• unit si applicable
3. Publication MQTT
Votre programme doit ensuite :
1. Se connecter à un broker MQTT (local ou distant).
2. Publier chaque type de mesure sur un topic spécifique, par exemple :
• iot/sensor/temperature
• iot/sensor/humidity
• iot/sensor/gps
1. Sérialiser chaque message en JSON avant publication.
2. Respecter un intervalle d’envoi configurable (1 seconde par défaut).
3. Gérer :
• la reconnexion automatique,
• un arrêt propre par interruption clavier (Ctrl+C),
• l’affichage en console des messages envoyés.
4. Contraintes techniques obligatoires
✔ Architecture à respecter
Vous devez structurer votre projet en au moins trois modules :
1. [Link]
2. → Contient les classes des capteurs : TemperatureSensor, HumiditySensor,
GPSSensor.
3. mqtt_client.py
4. → Encapsule la connexion MQTT, la publication JSON et la gestion session.
5. [Link]
6. → Programme principal contenant la boucle de simulation.
✔ Exigences techniques
• Utilisation obligatoire de POO (classes pour les capteurs).
• Format de données en JSON.
• Connexion MQTT via la librairie Python paho-mqtt.
• Code modulaire et documenté (docstrings, commentaires).
• Respect du protocole MQTT : topics, payload JSON, QoS minimum acceptable.