NoorCity
Éclairage urbain intelligent
Février 2025 – Mai 2025 · Projet d'équipe · ESPRIT

Plateforme web Symfony pour superviser l'éclairage public d'une ville connectée : lampadaires géolocalisés sur carte, capteurs IoT, caméras de trafic, énergie, réclamations citoyennes et interventions, avec une suggestion d'emplacements par machine learning (K-Means).
En chiffres
0
routes (environ)
0
entités Doctrine
0
vues Twig (environ)
0
APIs externes intégrées
Étude de cas
Le défi
Le réseau d'éclairage d'une ville se gère souvent avec des outils séparés : un plan, des relevés de consommation, des signalements de panne et des interventions. Il fallait tout réunir sur une carte, relier chaque lampadaire à ses capteurs et à ses caméras, et automatiser les alertes.
Architecture
Interfaces
- Back-office MaterialPro (Twig, Bootstrap)
- Front-office citoyen SmartLamp
- Cartes Leaflet + OpenStreetMap
Symfony 6.4
- 12 contrôleurs, ~75 routes
- 17 entités Doctrine
- Formulaires dynamiques par rôle
- Services SMS, e-mail et assistant
Données & scripts
- MySQL (17 tables)
- Python : K-Means, QR codes
- Passerelle IoT HTTP (JSON)
Services externes
- Twilio (SMS)
- Mailjet (e-mail)
- OpenCage (géocodage)
- OpenStreetMap
Interfaces
- Back-office MaterialPro (Twig, Bootstrap)
- Front-office citoyen SmartLamp
- Cartes Leaflet + OpenStreetMap
Symfony 6.4
- 12 contrôleurs, ~75 routes
- 17 entités Doctrine
- Formulaires dynamiques par rôle
- Services SMS, e-mail et assistant
Données & scripts
- MySQL (17 tables)
- Python : K-Means, QR codes
- Passerelle IoT HTTP (JSON)
Services externes
- Twilio (SMS)
- Mailjet (e-mail)
- OpenCage (géocodage)
- OpenStreetMap
Choix techniques
01
Du machine learning dans une app PHP
Symfony écrit les données en JSON, lance le script Python K-Means et relit le résultat : de nouveaux emplacements de lampadaires sont proposés directement sur la carte.
02
Une aide à la décision
Le comparateur de profils énergétiques normalise la consommation, le coût et la durée d'activité, puis calcule un score pondéré selon les poids choisis (100 % au total).
03
Des alertes automatiques
Une température au-delà de 50 °C déclenche un SMS Twilio, une nouvelle source d'énergie aussi, et chaque nouveau profil envoie un e-mail via Mailjet.
04
Des données fiables
Contraintes de validation sur les entités (adresse IP, URL de flux, plages de mesures), enums PHP 8.1 reliés à Doctrine et protection CSRF sur les suppressions.
Fonctionnalités
- Carte interactive Leaflet des zones et des lampadaires (vert en service, rouge en panne), placement d'un lampadaire en cliquant sur la carte avec géocodage OpenCage
- Suggestion de nouveaux emplacements de lampadaires par K-Means (scikit-learn), lancée depuis Symfony
- Capteurs IoT (température, luminosité, mouvement, consommation) : tableau de bord, recherche multicritère, export Excel et QR code par capteur
- Alerte SMS automatique (Twilio) au-delà de 50 °C, e-mails de notification (Mailjet) à la création d'un profil
- Assistant « Capteurs Pro » qui interroge la base : capteurs en panne, moyennes par type, détection d'anomalies
- Comparateur de profils énergétiques multicritère : poids par critère, valeurs normalisées et score pondéré
- Caméras IP : flux en direct depuis un lampadaire et analyse du trafic par un script Python
- Réclamations citoyennes sur un front-office public, puis interventions assignées aux techniciens ; exports PDF, Excel et CSV
Captures d'écran (20)

Un mot sur ce projetUn mot sur ce projet
Une question, un avis, une idée ?
Écrivez-moi directement d'ici. Votre message n'est pas publié : je suis le seul à le lire.
Privé : jamais affiché sur le site