Aller au contenu
Vuk Cvetković
Projets

Easy Breathe

Les relevés publics de pollen en Serbie, filtrés pour ne garder que ceux qui concernent une personne.

Année
2024
Cadre
Mémoire de séminaire sur les systèmes d’e-administration, Faculté de génie électronique de Niš
Domaine
Données publiques ouvertes, pollen et allergènes

Le parcours d’une requête

  1. Entrée: Cinq endpoints de données ouvertes
  2. Orchestration: Import planifié - NestJS
  3. En parallèle
    • Mensuel - Allergènes, types, lieux
    • Horaire, de 9 h à 12 h - Pollens, concentrations
  4. Sortie: Une base dédoublonnée - Réduite à un rayon, un jour et vos allergènes - MongoDB

Aperçu

Les données publiques existent, et elles sont de qualité : l’agence serbe de l’environnement publie chaque jour les relevés de pollen des stations de mesure du pays, sous forme d’API ouverte, sans clé ni limite. Ce qu’elle ne fait pas, c’est dire à une personne allergique à l’ambroisie si la journée sera difficile là où elle se trouve. L’application sert à combler cet écart.

Le travail se partage donc en deux. L’API copie les données ouvertes dans sa propre base à intervalles réguliers, car un téléphone n’a pas à parcourir des centaines de milliers de relevés nationaux pour répondre à une question locale. L’application pose ensuite une seule question à cette copie - qu’y a-t-il dans l’air près de moi, parmi ce à quoi je suis allergique - et y répond sur une carte, en quatre niveaux, et par une notification.

Technologies

Application mobile
React Native
Expo
API
NestJS
MongoDB

Architecture

  1. Les données ouvertes sont copiées à deux rythmes

    Les cinq endpoints n’évoluent pas au même rythme, ils ne sont donc pas interrogés à la même fréquence. Les allergènes, les types d’allergènes et les lieux sont chargés le premier de chaque mois à neuf heures. Les pollens et les concentrations, qui sont les données qui bougent, sont récupérés toutes les heures entre neuf heures et midi, quand paraissent les relevés du jour.

  2. Un import qu’on peut relancer sans risque

    Chaque tâche d’import vérifie d’abord les identifiants qu’elle a déjà en base, ne garde que ceux qui manquent et n’insère que ceux-là. Une exécution horaire qui ne trouve rien de nouveau n’écrit donc rien, la même exécution peut être relancée sans dupliquer un relevé, et la période demandée remonte une semaine en arrière, ce qui permet de récupérer un relevé publié quelques jours après la mesure.

  3. Une position et un rayon donnent une liste de stations

    Les coordonnées de l’utilisateur et le rayon choisi, en kilomètres, alimentent une requête géospatiale MongoDB, le rayon étant d’abord divisé par celui de la Terre, car la requête l’attend en radians. Elle renvoie toutes les stations de mesure assez proches pour concerner cette personne.

  4. Stations et date donnent les relevés utiles

    Les identifiants de ces stations et la date du jour sélectionnent les relevés de pollen de la journée, chacun contenant les identifiants des concentrations mesurées. Ces concentrations sont ensuite récupérées et filtrées sur les allergènes que l’utilisateur a sélectionnés : la réponse ne contient que des relevés à la fois proches et pertinents.

  5. Chaque relevé reçoit un niveau et un lieu

    Une concentration brute ne veut rien dire en soi : chacune est comparée aux seuils publiés pour son allergène et classée Low, Normal, High ou Very high. Le relevé est ensuite mis en forme avec l’allergène et la station d’origine, et c’est ce qu’affichent le marqueur sur la carte et la vue détaillée.

Fonctionnalités

  • Choisissez vos allergènes

    Une trentaine d’allergènes sont publiés, et le profil permet d’en sélectionner autant que vous voulez. La carte, les niveaux et les notifications découlent tous de cette liste.

  • Votre rayon, votre intervalle

    Le rayon de recherche en kilomètres et la fréquence de vérification en heures, tous deux réglés dans le profil. Un intervalle plus court donne des alertes plus à jour, un intervalle plus long économise la batterie.

  • Une carte lisible d’un coup d’œil

    Des marqueurs sur les stations de mesure proches de vous, colorés selon le niveau. Touchez-en un pour voir lesquels de vos allergènes y ont été mesurés, et à quel niveau.

  • Quatre niveaux, avec leur décompte

    Low, Normal, High et Very high, chacun avec le nombre d’allergènes proches à ce niveau. Touchez un niveau pour afficher la liste, puis une entrée pour voir la station, la description et le relevé.

  • Une notification quand ça monte

    Une notification push et une alerte dans l’application dès qu’un allergène de votre liste atteint une forte concentration à proximité : l’application est utile même fermée.

  • Des comptes simples

    Inscription et connexion par e-mail. Le profil enregistre les allergènes, le rayon et l’intervalle : la sélection est liée au compte, pas au téléphone.

Ce que j’en retiens

La principale leçon : des données ouvertes ne sont pas forcément des données exploitables. Cinq endpoints qui se référencent par identifiants, une échelle nationale et aucun moyen de poser une question géographique : toute la valeur est dans la copie et les jointures. Décider quoi copier, à quelle fréquence, et comment rendre une double copie sans effet, c’est là qu’était le vrai travail d’ingénierie.

L’autre leçon, c’est que l’information doit arriver sans qu’on la demande. Une personne allergique n’ouvre pas une application pour vérifier : elle veut être prévenue, dans un rayon et à un intervalle réglés une fois pour toutes. Grâce aux notifications push sur un backend planifié, un jeu de données public devient une alerte qui prévient la personne concernée le jour où cela compte.

Tous les projets

Esc