MKO — Portfolio
Mohamed Karim OuertataniIngénieur Full-StackFull-Stack Engineer
IoTWeb

NoorCity

Éclairage urbain intelligent

Février 2025 – Mai 2025 · Projet d'équipe · ESPRIT

0vue
NoorCity

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

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)

NoorCity — Éclairage urbain intelligent — Captures d'écran 1
1/20

Un 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