SAÉ 203 - Mettre en place une solution informatique pour l'entreprise
Retour aux SAE
By / Robin Eliott & Auduberteau Emilien Emilien

Contexte

Architecture de la plateforme

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.

Rapport Cybersécurité

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éroulement

Acquisition

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.

Flux de données

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.

Visualisation

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.

Conclusion

Cette SAE m'a permis de faire mes premiers pas dans le domaine des systèmes d'information. J'ai pu comprendre ce qu'est un système d'information, à quoi il sert, et comment en concevoir un de manière concrète.

Aussi, cette SAE m'a permis de comprendre l'importance du format JSON pour structurer efficacement les messages échangés. En travaillant avec des données issues du web, j'ai appris à en extraire des informations. Par ailleurs, j'ai pris conscience de nombreuses vulnérabilités en cybersécurité liées aux architectures IoT, comme les attaques réseau, les capteurs défaillants ou les données falsifiées.

Enfin, j'ai été amené à documenter et sécuriser l'ensemble de la plateforme, en identifiant les failles potentielles et en proposant des mesures de protection adaptées. Vous trouverez les documents ci-dessous.

Documents

Partie 1 — Ip2Map

Schéma logique de l'infrastructure :

Architecture SI

Script Python : Récupération API & Publication MQTT

mqtt_publish_api.py
# 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

mqtt_subscribe.py
# 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

Aperçu Site Web

Accéder au dépôt complet :

github.com/0xProx1m4/SAE-203