L'objectif était de concevoir une
plateforme IoT complète
intégrant le protocole
MQTT, une
base de données
et un
site web dynamique
via
Python.
Le projet simule l'acquisition de données météo
(température, humidité, pression) pour la ville de
Mont-de-Marsan.
J'ai réalisé un rapport de cybersécurité analysant les vulnérabilités potentielles de la plateforme. Ce travail définit les mesures de sécurité nécessaires pour protéger les données sensibles et l'infrastructure réseau contre toute intrusion.
Développement d'un script Python pour l'extraction automatisée de données météorologiques. Utilisation d'une API publique pour récupérer les flux au format JSON concernant la ville de Mont-de-Marsan.
Mise en œuvre du protocole MQTT via une architecture Publish/Subscribe. Création d'un premier programme pour publier les données vers un Broker, et d'un second pour s'abonner aux topics et traiter les informations en temps réel. Les données ont ensuite été persistées dans une base de données SQLite.
Conception d'un site web dynamique dédié à la visualisation de données sous forme de graphiques interactifs. En complément, automatisation de la génération de rapports d'activité exportables au format PDF via Python.
Schéma logique de l'infrastructure :
Script Python : Récupération API & Publication MQTT
# Extrait : Publication des données météo
def publish(client):
while True:
villes = ["Mont-de-Marsan", "Marseille", "Lille"]
# ... logique de récupération API ...
payload = json.dumps(dico)
result = client.publish(topic, payload)
if result.rc == 0:
print(f"Données envoyées : {payload}")
time.sleep(600)
Script Python : Réception & Stockage SQLite
# Extrait : Inscription en base de données
def on_message(client, userdata, msg):
value = json.loads(msg.payload.decode("utf-8"))
for ville, data in value.items():
cursor.execute(
"INSERT INTO mesures (ville, temp, press, hum, date) VALUES (?, ?, ?, ?, ?)",
(ville, data['temp'], data['pressure'], data['humidity'], data['dt'])
)
connection.commit()
Interface Web : Visualisation dynamique
Accéder au dépôt complet :
github.com/0xProx1m4/SAE-203