De la v1 à la v3 ou v4
Les problèmes de la version v1
Depuis quelques années, Weather.com® - qui était le service unique utilisé par Rainette v1 - avait perdu en fiabilité, du moins pour les lieux à « faible popularité ». Il a été récemment arrêté après des années de bons services.
Il a donc été nécessaire de faire évoluer Rainette pour pallier au problème posé par Weather® et permettre à tous de disposer d’une météo locale.
Incompatibilité avec la version v1
La version v3 est un refactoring complet de la version v1 (et aussi v2). Outre l’utilisation transparente de divers services météo elle amène une grande facilité de configuration de nouveaux services, une cohérence plus importante dans l’API et les modèles et des prévisions horaires en plus des prévisions jour.
La version v3 n’assure donc aucune compatibilité avec les versions précédentes mais la migration reste simple comme on le verra plus avant dans l’article.
Caractéristiques minimales
La v3 demande d’avoir au minimum php 5.3.0 et ne fonctionne qu’en spip 3.1 et 3.2 !
La v4 elle est compatible avec spip 4 uniquement.
Extension de la liste des services météo
La principale évolution a donc consisté à acquérir et restituer les données météo fournies par différents services et permettre ainsi à chaque utilisateur de choisir le meilleur flux correspondant à sa localisation.
Suite à une petite étude des flux disponibles, la liste des services proposant une API de récupération des données météo retenus dans la version v3 de Rainette est donnée ci-dessous. Cette liste évolue rapidement, la tension mercantile sur ces services étant forte. Certains deviennent payants et d’autres disparaissent comme notre vieux compagnon Weather®.
- OpenWeather, toujours gratuit et devenu le service par défaut de Rainette ;
- Weatherbit.io, propose un plan gratuit ;
- WeatherAPI, propose un plan gratuit ;
- World Weather Online, uniquement payant mais toujours aussi performant ;
- AccuWeather, propose un plan gratuit limité mais ce service historique est l’un des plus performants et complets ;
- Météo Concept, propose un plan gratuit pour la France et quelques localités limitrophes en Belgique, au Luxembourg et en Andorre ;
- Open-Meteo, dont le code est open-source (Github) et qui fournit un plan gratuit pour une utilisation non commerciale ou personnelle. Une bonne alternative à OpenWeather qui ne demande aucune inscription ;
-
APIXU, a disparu au profit de WeatherStack ; -
WeatherStackqui finalement n’a pas été retenu étant donné la pauvreté de son offre gratuite et le prix de ses offres payantes ; -
Weather Underground, ne fournit plus d’API ; -
Weather.com®, a fermé définitivement.
Tous les services proposés sauf Open-Meteo, utilisent une clé d’inscription pour repérer les utilisations de leur flux.
Il est aujourd’hui conseillé d’utiliser le service OpenWeather qui est proposé par défaut. Open-Meteo, Weatherbit.io et WeatherAPI sont de bonnes alternatives qui proposent encore des options gratuites satisfaisantes. En version payante, le service World Weather Online est toujours d’excellente qualité et AccuWeather est le plus complet.
Configuration
Contrairement à la version v1, chaque service de Rainette v3 possède une configuration qu’il est impératif de positionner avant utilisation. Cette configuration permet de définir la clé d’inscription, le système d’unité et le type de résumé/icône (fourni par le service ou converti vers celui de Weather.com®).
Les services
Les services proposés dans la version actuelle sont connus du plugin par leur alias qui sont les suivants :
- OpenWeather : owm ;
- Weatherbit.io : weatherbit ;
- WeatherAPI : weatherapi ;
- World Weather Online : wwo ;
- AccuWeather : accuweather.
- Météo Concept : meteoconcept.
- Open-Meteo : openmeteo.
Les alias permettent d’identifier le service dans l’appel des modèles.
Mise en œuvre du plugin
L’indication du lieu
Chaque service possède sa propre liste de format pour indiquer le lieu. Rainette v3 ne retient pas toutes les possibilités mais uniquement les formes suivantes (l’id Weather® n’est plus utilisé par les services actuellement proposés) :
- le nom d’une ville complétée éventuellement par le pays
ville,pays
comme Paris,France ou Paris,FR ; - l’ID d’une ville de plus de 1000 habitants qui est un nombre entier (2988507 pour Paris), disponible à partir de la version 3.10.1. Il est possible de trouver la correspondance sur le site d’opendatasoft. Pour le service AccuWeather l’ID est spécifique et peut être récupéré via une requête spécifique de l’API (à lancer sur le site lui-même) ;
- des coordonnées géographiques sous la forme
latitude,longitude
sachant que latitude et longitude sont exprimées en nombre réel avec un point pour séparer les décimales (45.7 par exemple) ; - le code INSEE d’une commune française ;
- et une adresse IP.
Le mapping avec les services est le suivant :
Services | Ville, Pays | Coordonnées | ID Ville | IP | INSEE |
---|---|---|---|---|---|
OpenWeather | x (code pays) | x | x | ||
Weatherbit.io | x (code pays) | x | x | ||
WeatherAPI | x | x | x | ||
World Weather Online | x | x | x | ||
AccuWeather | x | ||||
Météo Concept | x | x | |||
Open-Meteo | x |
Unité
Quelque soit le service utilisé il est possible d’obtenir les données météorologiques dans le système métrique ou impérial US. La plupart du temps le service fournit la conversion mais quand ce n’est pas le cas, Rainette convertit de lui-même la donnée concernée.
Traduction
Certains services proposent une traduction du résumé météorologique dans une liste de langues. Dans ce cas, Rainette propose soit d’utiliser ce résumé (ce qui est conseillé) soit d’utiliser une conversion vers le résumé de Weather.com® qui lui est traduit en quelques langues par le plugin depuis sa création.
Actuellement tous les services proposés fournissent des traductions : il est donc conseillé de les utiliser. Sans précision dans l’appel du modèle, la langue du site est utilisée. Si cette langue n’est pas fournie par le service une configuration permet de choisir une langue alternative « proche ».
Les modèles
Le nom des modèles conditions, prévisions et informations n’ont pas été modifiés entre la v1 et cette v3. Néanmoins, les paramètres ont été modifiés, en particulier pour fournir le service à utiliser. Les appels sont fournis ci-dessus :
1. | lieu | obligatoire, désigne le lieu sous une forme qui dépend du service. |
2. | sous_modele | facultatif, détermine la présentation des données temps réel. La valeur par défaut correspond au sous-modèle fourni par Rainette, à savoir, conditions_tempsreel. |
3. | service | facultatif, désigne le service à utiliser. La valeur par défaut correspond à owm. |
1. | lieu | obligatoire, désigne le lieu sous une forme qui dépend du service. |
2. | sous_modele | facultatif, détermine la présentation des données prévisionnelles sur plusieurs jours. La valeur par défaut correspond au sous-modèle fourni par Rainette, à savoir, previsions_24h |
3. | premier_jour | facultatif, désigne le premier jour de prévision (0 par défaut pour le jour courant). |
4. | nombre_jours | facultatif, indique le nombre de jours de prévision (tous les jours possibles par défaut) à afficher à partir du premier_jour. |
5. | periodicite | facultatif, fournit la périodicité des données de 1h à 24h pour les prévisions (la valeur par défaut dépend du service) |
6. | service | facultatif, désigne le service à utiliser. La valeur par défaut correspond à owm. |
Un modèle erreur permet d’afficher un problème de chargement des données mais cela reste transparent pour l’utilisateur. Les tableaux précédents permettent de facilement migrer de la v1 à la v3 pour ceux qui n’ont pas définis de sous-modèles propres.
Les sous-modèles
Les sous-modèles ont été complètement revus même si leur nom a été conservé ainsi que la fonctionnalité de base. Un sous-modèle de prévisions au format tabulaire a aussi été ajouté.
Un bloc de crédits a été inséré systématiquement pour chaque sous-modèle et chaque service. Il est important de respecter ces termes si vous devez définir vos propres sous-modèles.
Les filtres utilisés dans les sous-modèles ont été renommés et les paramètres d’utilisation ont parfois changé. Cela rend donc les modèles v3 incompatibles avec les modèles v1. Néanmoins, si vous utilisez les sous-modèles Rainette de base vous ne verrez pas de différence. Par contre, si vous avez défini vos propres sous-modèles, il est très facile de les adapter en consultant le tableau de correspondance des fonctions de l’API Rainette au paragraphe suivant et en regardant le code des sous-modèles v3 de Rainette.
L’API fonctionnelle
L’API fonctionnelle a évoluée entre la v1 et la v3. Pour que vous puissiez facilement adapter vos propres modèles voici le tableau de correspondance :
Filtre v1 | Filtre v3 | Utilisation |
---|---|---|
rainette_icone_meteo | rainette_afficher_icone | Affiche l’icone météo correspondant au résumé |
rainette_resume_meteo | rainette_afficher_resume | Affiche le texte du résumé dans la langue choisie |
rainette_afficher_tendance | rainette_afficher_tendance | Affiche la tendance de pression |
rainette_afficher_direction | rainette_afficher_direction | Affiche la direction du vent |
rainette_afficher_unite | rainette_afficher_unite | Affiche l’unité d’une donnée |
rainette_croaaaaa_previsions | rainette_coasser | Appelle le sous-modèle de prévisions, de conditions ou d’informations choisi. |
rainette_croaaaaa_conditions | ||
rainette_croaaaaa_infos |
Pour comprendre l’utilisation exacte de ces fonctions il est conseillé de lire le code des sous-modèles de Rainette voire de consulter la documentation du code du plugin https://code.plugins.spip.net/rainette/.
La gestion des icônes
Les services actuels peuvent parfois fournir via l’API un icône adapté à chaque résumé météo natif. Dans ce cas, ce mode d’affichage est celui proposé par défaut par Rainette. En outre, certains services proposent un ensemble de thèmes d’icônes directement accessibles via l’API. Le choix d’un thème est disponible dans la page de configuration du service.
Depuis la version 3.5.0, Rainette propose aussi deux autres possibilités pour afficher un icône météo :
- utiliser un icône d’un thème installé en local et compatible avec le service concerné.
- utiliser un icône d’un thème weather.com® installé en local. Ceci est particulièrement intéressant car il existe de nombreux jeux d’icônes pour weather.com®.
Ces thèmes locaux sont installés dans themes/nom_du_service/nom_du_theme.
Rainette embarque un seul thème par service qui en propose. Le plugin Thèmes pour Rainette fournit de nombreux thèmes supplémentaires et une interface de visualisation. Tous ces paramètres sont modifiables dans la configuration de Rainette.
Les crédits
Il est important de respecter les crédits de chaque service lors de l’affichage de vos propres modèles comme cela est fait pour les modèles fournis par Rainette. Pour cela Rainette fournit un modèle de crédits nommé inc-credits.html
que vous devez inclure dans vos modèles de la façon suivantes :
#INCLURE{fond=modeles/inc-credits,
classe_div=condtr,
env}
Le paramètre classe_div
prend des valeurs différentes suivant le modèle Rainette utilisé et permet d’affecter une classe CSS au bloc englobant les crédits.
La standardisation des données
Rainette compile les données issues des différents service dans un tableau qui possède pour chaque mode une structure standard afin d’utiliser les modèles d’affichage de la même manière quelque soit le service.
Chaque tableau est propre à un mode mais possède un agencement commun sous la forme d’un tableau associatif et arborescent dont le premier niveau est composé des deux index suivants :
-
[’donnees’]
: tableau associatif des données météorologiques pour les modes « conditions », « infos » ou « previsions ».. -
[’extras’]
: tableau associatif qui contient les crédits, la configuration statique et dynamique positionnée par l’utilisateur et le code d’erreur éventuel.
Pour les modes conditions et infos, l’ensemble des données météorologiques sont directement incluses sous l’index [’donnees’]
.
Pour le mode prévisions, la structure est plus complexe. Tout d’abord , le premier niveau sous l’index [’donnees’]
correspond au jour de la prévision, soit de 0 pour le jour courant à n pour le dernier jour proposé (varie suivant le service). Pour chaque jour, la structure distingue :
- les données commune du jour comme la date, les heures de lever et coucher du soleil, les températures minimale et maximale de la journée ;
- les données heure incluses dans l’index [’heure’]. Ces données sont indexées numériquement de 0 à n suivant la périodicité choisie. Pour une périodicité de 24h il n’existe qu’un index [0], pour une périodicité de 12h il existe deux index [0] et [1] etc. Sous chacun de ces index on retrouve une liste standard de données météorologiques.
L’article de la Taverne https://blog.smellup.net/spip.php?a... décrit la structure de données exacte pour chaque mode.
Démo de Rainette
Une page de démo complète est disponible à l’adresse ?page=demo/rainette
. N’hésitez pas à l’utiliser pour comparer les services sur votre lieu préféré (les clés d’enregistrement doivent avoir été saisies pour les services concernés).
Historique des modifications majeures
- 4.1.10 : Ajout du service Open-Meteo et de la donnée « rafales de vent »
- 4.1.8 : Robustifier le code pour PHP 8.2 et passage des caches en JSON
- 4.1.2 : Version spip 4 et ajout du service Météo Concept
- 3.2.1 : Déplacement du cache de
tmp/cache
verslocal/cache-rainette/
afin d’éviter de supprimer les caches Rainette lors d’un vidage du cache SPIP. Cette fonction est utile pour limiter les appels aux services qui sont de plus en plus réglementés. - 3.3.2 : Ajout du traitement et de l’affichage des erreurs renvoyées par les services eux-mêmes.
- 3.3.3 : Introduction d’un filtre sur l’envoi des requêtes afin de ne jamais dépasser les seuils autorisés par les services pour une unité de temps donnée.
- 3.4.4 : Ajout du service Weatherbit.io et amélioration de la configuration des services .
- 3.5.0 : Ajout de la gestion des thèmes d’icônes pour tous les services.
- 3.6.0 : Passage à Cache Factory pour la gestion des caches Rainette.
- 3.7.0 : Ajout du service WeatherStack censé remplacer APIXU mais qui sera finalement supprimé.
- 3.8.0 : Nettoyage dans les services ; Weather®, APIXU sont désactivés, OpenWeatherMap devient le service par défaut et beaucoup de corrections dans les services (versions successives 3.8.z)
- 3.8.7 : Ajout de la nébulosité utilisable dans les modèles
- 3.9.0 : Suppression du service WeatherStack qui est un vrai foutage de gueule !
- 3.10.0 : Ajout du service WeatherAPI
- 3.10.1 : Ajout du city id pour identifier le lieu des services OpenWeather et Weatherbit.io
- 3.11.0 : Mise en conformité avec la version multi-config de Cache Factory
- 3.11.1 : Correction des limites de requêtes pour certains services
- 3.12.0 : Passage de la configuration des services en YAML. Rainette nécessite maintenant le plugin YAML 2.0.11 au minimum.
- 3.12.1 : Ajout d’un bouton pour recharger la configuration YAML des services si besoin et ajout du service AccuWeather.
Discussions par date d’activité
2 discussions
Bonjour
Je viens de tester le nouveau service Open Météo et je constate que la ville ne s’affiche pas, contrairement à d’autres services.
Oui c’est normal, si tu regardes comment spécifier le lieu seul les coordonnées géographiques sont possibles. De fait, je ne connais pas la ville précisément et le service ne renvoie rien de plus clair non plus. C’est donc à toi dans l’affichage de le prévoir éventuellement.
Ah oui, je n’avais pas fait attention au tableau de mapping avec les services.
Désolé pour le bruit.
Répondre à ce message
Bonjour à tous,
J’observe sur le site d’une commune qui utilise votre plugin des erreurs d’affichage sur les prévisions, y compris dans ma page de démo :
Observez-vous ces erreurs vous aussi ?
Comment faire pour les corriger ?
J’ai désactivé/réactivé ma clé OpenWeather, j’ai testé avec une nouvelle clé, j’ai vérifié que j’appelle les bons modèles dans mon code mais rien n’y fait.
Un grand merci pour votre aide !
Bonjour,
Je viens de faire le test avec Paris à partir de la démo, les conditions et les prévisions fonctionnent parfaitement.
Merci beaucoup Éric, ça vient donc de chez moi 🤔 Les conditions fonctionnent mais pas les prévisions.
Je vais contacter les recherches.
Bonne soirée !
Il semblerait que ma clé API de OpenWeather ne me permette plus d’accéder aux prévisions. J’ai in compte gratuit, Est-ce que toi Eric, tu payes un abonnement ?
Merci d’avance
Non j’ai un compte gratuit créé il y a longtemps. Je ne vois pas ce qui peut provoquer cette invalidation de la clé.
Tu l’as correctement copiée en config ?
Répondre à ce message
Ajouter un commentaire
Avant de faire part d’un problème sur un plugin X, merci de lire ce qui suit :
Merci d’avance pour les personnes qui vous aideront !
Par ailleurs, n’oubliez pas que les contributeurs et contributrices ont une vie en dehors de SPIP.
Suivre les commentaires : |