Automatisation de publication des données de qualité de l'air sur Mastodon#
Date de publication initiale : 4 avril 2024
Connaissez-vous AirParif ? Il s'agit de l'observatoire de la qualité de l'air en Ile-de-France, qui publie données, prévention et alertes sur les épisodes de pollution. Les données de l'association sont ouvertes, et il y a une API tout comme des flux OGC pour les récupérer.
Connaissez-vous Mastodon ? Présenté par Julien récemment, il s'agit d'un réseau social décentralisé et ouvert (le Fédivers), pour les non-geeks tout comme les geeks, qui propose notamment une API permettant d'automatiser des posts.
Et si on combinait les deux ? Et si on développait un bot mastodon, qui publierait sur le réseau social les données et épisodes de pollution de l'air fournis par l'API d'AirParif ? Est-ce que ça servirait à quelque chose ? Pas sûr, ça reste à voir, personnellement j'en suis pas forcément convaincu. En plus il y a l'application mobile avec les notifications qui vont bien. Bon en tout cas c'est plus ou moins l'objet de cet article.
Dans cet article, vous l'aurez compris, on va donc :
👉 Dire des trucs
👉 Faire des machins
👉 Brasser un grand volume d'air
Mais pas seulement ! On va aussi, accessoirement, entre les lignes :
🦶 Découvrir (un peu) et utiliser l'API d'AirParif pour récupérer les données de qualité de l'air et d'épisodes de pollution
🦶 Développer un programme en python qui récupère et traite ces données
🦶 Découvrir (un peu) et utiliser l'API de Mastodon pour publier des toots automatiques
Dénomination#
La première chose à faire, c'est de trouver un nom à notre bot. Eh oui, le nommage c'est important pour ne pas s'emmêler les pinceaux.
Mais tout ça, c'est après une page de pub ! Qui pourrait vous intéresser si jamais votre qarosserie ou votre data a subi un impact...
Powered by OsGeo pour votre santé et vos trajets courts, veuillez privilégier 5 trajets à pied avec fruizélégumes ou en vélo par jour
On est de retour sur Geotribu, et à ce stade de la dénomination de notre bot, la short list est composée de 4 propositions : Patrick
, Patricia
, Patrice
, et air_bot
, avec ceci dit une légère préférence pour la dernière.
Et il n'y a pas que Paname dans la vie (il y a aussi la petite couronne), le nom air_bot
est générique car le nouvel indice ATMO a vocation à normaliser les données de qualité de l'air, et est implémenté notamment au Bassin et sur la Côte d'Azur. Le reste, désolé, on s'en fiche un peu... Ah si ! Il y a peut-être la région dans les montagnes là, c'est toujours sympa pour les parigots de respirer du bon air au ski... Mais les vrai.e.s sachent que les Pyrénées c'est aussi stylé ! Et pas qu'en hiver ou au Tour de France !
Gestion de l'environnement virtuel#
Qui dit programme en Python ("programme en Python !") dit "gestion de l'environnement virtuel". Ici on va partir sur poetry, parce que quand même, un truc de geek qui s'appelle "poésie" ça claque ! Where are thou, my dear virtual_environment
? Et quand on vient du Java comme moi, c'est toujours sympa d'avoir un endroit où tout est déclaré, ça rappelle toujours des bons souvenirs, n'est-ce pas Rémi F.
On peut utiliser poetry
comme ceci :
# initialiser un nouveau projet
poetry init
# ajouter un paquet dans nos dépendances, en l'occurrence la lib mastodon python
poetry add mastodon-py
# lancer une commande dans notre environnement virtuel, exemple
poetry run python script_claque_au_sol.py --help
API d'AirParif#
Partons maintenant à la découverte des données AirParif via son API.
Mais tout ça, c'est après une page de pub, qui pourrait intéresser les viandards et les viandardes à côté du grill et parfois de la plaque cet été...
On est de retour sur Geotribu, et on va maintenant aborder l'API d'AirParif.
Il y a un swagger qui liste les interactions possibles via appel HTTP. Tout comme un flux WMS sur les données en direct à l'adresse suivante : https://magellan.airparif.asso.fr/geoserver/siteweb/wms.
Demande de duplicata#
L'authentification pour un appel à l'API REST se fait grâce à une clé d'API, dont il faut faire la demande à AirParif. Et les prérogatives de la demande de duplicata sont plutôt rapides et la demande vite traitée, ce qui a été mon cas.
Pour le développement de ce bot, on aura besoin des données bulletin et prévisions, soit l'appel à cette route, qui fournit un texte écrit par le prévisionniste d'AirParif, tout comme les valeurs des 4 polluants réglementés et surveillés, en µg/m³ : NO2, O3, PM10 et PM25. On peut effectuer cet appel comme ceci en python :
Récupération des données#
Pour récupérer l'image carto de la qualité de l'air du moment, ça peut être fait via un appel au service WMS d'AirParif, comme ceci :
Une fois le code ci-dessus exécuté, on se retrouve avec l'image de la carte de la qualité de l'air du jour enregistrée sur le disque :
Info
La couche WMS appelée siteweb:vue_indice_atmo_2020_com_jp1
permet de récupérer la carte du lendemain quand elle est disponible (à partir de 11h généralement).
Mastodon automatique#
Découvrons maintenant l'automatisation de posts sur le réseau social Mastodon, au travers de son API.
Mais tout ça, c'est après une page de pub, qui pourrait intéresser les mélomanes endiablé/es sur les campings cet été...
On est de retour sur Geotribu, et on va aborder la partie Mastodon, le réseau social sur lequel publiera notre bot.
Choix de l'instance#
Il nous faut à présent choisir une instance pour créer le compte de notre bot. Il y a deux options possibles à mes yeux :
- l'instance botsin.space, "une instance pour les bots et les alliés des bots", qui est parfois instable du fait du zbeul qui règne dessus
- l'instance mapstodon.space, mise en place pour les géo* grâce à Jérémy et les admins
Ça part sur la deuxième option, merci Jérémy !
On peut suivre l'article de Julien pour dérouler la création d'un compte.
Configuration du compte Mastodon#
Configurons à présent le bot pour poster de manière automatique.
La première chose à faire est de cocher la case This is an automated account
dans Preferences
> Public profile
:
Ensuite, il nous faudra créer une "Application" dans la partie Development
, qu'on appelle "Patrick" "air_bot", en vérifiant que le scope write
soit coché (pas besoin pour le moment des autres scopes). Tout ceci va nous permettre de récupérer un access_token
permettant de nous connecter en python à l'API :
Le token qui fout les j'tons
Il est conseillé de noter quelque part ce token, sur un post-it idéalement.
On programme aussi une suppression automatisée des posts, dans l'onglet "Automated post deletion", pour ne pas surcharger l'instance. On peut par exemple supprimer les toots postés il y a plus d'1 mois :
API Mastodon#
Mastodon permet d'automatiser des posts, et ce dans plusieurs langages de programmation. Nous allons donc utiliser l'API en python, dont la doc est disponible ici
Pour notre besoin du moment, on pourra simplement utiliser la méthode status_post
, qui permet de poster automatiquement des toots avec notre compte nouvellement créé :
Warning
Selon les instances utilisées, la longueur max des posts est variable. Sur mapstodon.space la limite est de 500 caractères, émojis compris !
Posts totomatiques#
Utilisons maintenant l'API mastodon en python, comme ceci :
Info
Ici on publie les posts en langue française et avec la visibilité "unlisted", ce qui signifie que les toots seront visibles pour les followers et sur la page de profil du bot, mais pas dans les "Live feeds" du serveur mapstodon.space ou fédéré. On évite de trop spammer les gens quoi.
Et maintenant ?#
Le code du bot implémenté avec AirParif est disponible sur GitHub.
Les posts automatiques du bot sont configurés de la manière suivante, tous les jours :
- le bulletin de la journée à 8h, avec la carte de la journée
- le bulletin du lendemain à 18h, avec la carte du lendemain
- les épisodes potentiels de pollution du lendemain à 19h
Viendez !#
Nous venons de voir comment publier sur Mastodon les données d'AirParif. Or ce ne sont pas les seules données de qualité de l'air disponibles et ouvertes ! Les autres régions proposent également leurs services de données ouvertes ATMO :
- Auvergne-Rhône-Alpes
- Bourgogne-Franche-Comté
- Bretagne
- Centre-Val de Loire
- Grand-Est
- Hauts-de-France
- Nouvelle-Aquitaine
- Normandie
- Occitanie
- Pays de la Loire
- Provence Alpes Côte d'Azur
Et ...
Et ...
Et enfin ...
Et aussi !
- la carte de pollution de l'air en Belgique une fois
N'hésitez pas à contribuer à ce bot, ou à en créer d'autres pour diffuser les données de votre région / pays ! Je suis disponible pour fournir des access_token
et publier les données via ce bot air_bot@mapstodon.space.
Auteur·ice#
Guilhem Allaman#
Je suis ingénieur informaticien. J'aime les ordinateurs. Mais ce que j'aime par-dessus tout (oh oui !), c'est itérer, et ce de manière agile, transverse et langoureuse, de bon matin, dès l'aube, à l'heure où blanchit le dashboard du sprint backlog.
Basé à Paris, j'ai commencé par le développement Java avant de découvrir les joies des SIG et de m'y spécialiser.
Licence Beerware #
Ce contenu est sous licence Beerware (Révision 42).
Les médias d'illustration sont potentiellement soumis à d'autres conditions d'utilisation.
Réutiliser, citer l'article
Tant que vous conservez cette licence :
- vous pouvez faire ce que vous voulez de ce contenu
- si vous rencontrez l'auteur/e un jour et que vous pensez que ce contenu vaut le coup, vous pouvez lui payer un coup en retour
Citer cet article :
"Automatisation de publication des données de qualité de l'air sur Mastodon" publié par Guilhem Allaman sur Geotribu - Source : https://geotribu.fr/articles/2024/2024-04-04_airbot_mastodon_qualite_air/
Commentaires
Une version minimale de la syntaxe markdown est acceptée pour la mise en forme des commentaires.
Propulsé par Isso.
Ce contenu est sous licence Beerware