Rainette, extension des services météo

, par _Eric_

Schéma général d’intégration de plusieurs services

Actuellement le moteur de Rainette, sur requête périodique ou évènementielle :

  • reçoit en entrée la localisation et les options permettant de choisir entre les conditions actuelles, les prévisions à n jours, le système d’unités...
  • fabrique l’url du flux correspondant à la requête et acquiert le XML,
  • stocke les informations sous forme tabulaire dans un fichier cache.

Cependant, le moteur actuel considère uniquement le format de requête et la structure XML de weather.com® ce qui a pour conséquence que les traitements sont complètement dédié à ce service.
Il faut donc conserver ce schéma en le généralisant, en particulier, en indexant la fabrication de l’url de la requête et le transcodage en tableau par le service comme l’illustre le schéma ci-dessous.

En outre, la structure du tableau en cache doit être standard (il faut vérifier si la structure actuelle convient ou pas) afin, d’une part, que celle-ci puisse être remplie par n’importe lequel des services utilisés et d’autre part, que l’ensemble des affichages puissent être conservés.

Pour mémoire, les documentations des APIs de chacun des services sont disponibles aux adresses suivantes :

Identification du lieu

La première problématique à régler concerne la généralisation de l’identifiant du lieu. En effet, il n’existe pas de norme et chaque service propose des méthodes différentes qui parfois se recoupent.

Service Paramètres
Weather.com® code de ville du type YYXXXX ou YY est un bigramme du pays et XXXX un numéro ordinal
Meteorologic p : le nom ou le code postal de la ville
cn : le pays parmi la France, la Suisse et la Belgique mais ce paramètre est optionnel (permet d’éviter des ambiguïtés)
World Weather Online q : qui représente le nom de la ville accompagné ou pas du pays d’origine, le code postal (uniquement pour les US) ou le point géolocalisé, l’adresse IP...
Wunderground query : reprend les mêmes possibilités que WWO avec en plus le PWS Id qui ne semble utilisé que parce ce service
Yahoo Weather w : code appelé WOEID. Ce code est uniquement utilisé par Yahoo mais rappelle en cela l’API de weather.com®
Open Weather Map le paramétrage dépend du type de recherche. Trois types sont possibles :

  • par le nom de la ville, le paramètre est q ;
  • par les coordonnées géographiques, les paramètres sont lat et lon ;
  • par l’ID de la ville, le paramètre est alors id
Forecast.io le paramétrage du lieu se fait par les coordonnées géographiques : latitude ,longitude
AccuWeather Le service permet de localiser le lieu par villes, POI et codes postaux

D’après le tableau ci-dessous, on peut conclure qu’en étendant juste la portée du paramètre unique de lieu actuel on résout simplement l’équation posée. En effet, seul Meteorologic demande parfois deux paramètres. En résumé :

  • on conserve le paramètre « code » actuel qui suffit pour Weather.com et Yahoo Weather
  • pour les services Wunderground et World Weather Online ce code représente n’importe lequel des identifiants acceptés par le service.
  • pour Meteorologic, le code représentera le code postal ou le nom de la ville sans possibilité de gérer les ambiguïtés.
  • pour Open Weather Map, le code devant être unique on retient le nom de la ville et son id en détectant le type de paramètre par le contenu numérique ou pas. Il serait possible d’utiliser les coordonnées géographiques en considérant une chaine de type float,float comme chaine de lieu.
  • pour AccuWeather, le code poste et le nom de la ville sont a priori les identifiants les plus immédiats à utiliser. Il serait possible d’utiliser les coordonnées géographiques en considérant une chaine de type float,float comme chaine de lieu.

Requêtes et options

Outre le lieu des données météorologiques, les requêtes font appel à d’autres options pour désigner le type d’informations demandées, le système d’unité à utiliser, le nombre de jours de prévisions... Là encore, il n’y a aucune normalisation entre les services.

Actuellement, pour Weather.com® on distingue 3 requêtes différentes avec des options spécifiques :

  • la demande des conditions courantes
  • la demande des prévisions pour les n prochains jours et par intervalles horaires (selon le service)
  • la demande des informations sur le lieu

Pour les deux premières requêtes le système d’unité est paramétrable dans Rainette. Pour les prévisions, il est possible de spécifier le nombre de jours voulus.

Il faut donc étudier comment simuler ces mêmes types de requêtes avec les autres services sachant qu’il est inutile pour l’instant de rajouter plus de possibilités de paramétrage.

Service Requêtes et options
Weather.com® Voir ci-dessus
Meteorologic Ce service ne dispose que d’une seule requête et d’aucune option. Pour un lieu donné, les prévisions à 3 jours sont fournies et comprennent le jour courant.
World Weather Online Il est possible de faire varier plusieurs paramètres :

  • num_of_days : pour préciser le nombre de jours de prévisions souhaités
  • cc : pour préciser si on veut les conditions courantes ou pas
  • fx : à vérifier si il permet de désactiver les prévisions afin d’optimiser les requêtes.



En outre, format sera toujours positionné à XML et key désignera la clé de l’utilisateur. Par contre, le système d’unité n’est pas paramétrable. Il faudra prévoir soit des fonctions de conversions soit de trouver les deux valeurs dans le XML.

Wunderground Il est possible de faire varier un paramètre :

  • features : pour préciser le type de demande. Pour simuler le comportement actuel les valeurs conditions, forecast ou forecast10day et geolookup sont à étudier, le nombre de jours de prévisions ne pouvant pas être spécifiés



En outre, format sera toujours positionné à XML et your_key désignera la clé de l’utilisateur. Par contre, le système d’unité n’est pas paramétrable. Il faudra prévoir soit des fonctions de conversions soit de trouver les deux valeurs dans le XML.

Yahoo Weather Ce service ne dispose que d’une seule requête qui renvoie toutes les informations géographiques et météorologiques d’un lieu. Seul le système d’unité est configurable : c’est le paramètre u. Le service n’est donc pas optimisé puisque l’ensemble des données est remontée à chaque demande.
Open Weather Map Ce service propose une requête pour les conditions url_de_base/weather - qui peut aussi servir pour les informations de la ville choisie - et une requête pour les prévisions à 14 jours url_de_base/forecast/daily, sachant qu’il est possible d’utiliser les paramètres suivants :

  • units : pour définir le système d’unité métrique ou impérial
  • mode : pour préciser le format des données fournies, XML ou JSON (toujours positionné à XML)
  • lang : pour demander que les données textuelles soient fournies dans une langue donnée
  • cnt : pour déterminer le nombre de jours de prévisions de 1 à 14 (par défaut sera positionné à 14)
  • APPID : clé d’inscription facultative gratuite.
Forecast.io à compléter
AccuWeather à compléter

En conclusion, il est possible de simuler le même comportement qu’actuellement avec ces nouveaux services mais certains comme Yahoo Weather - qui s’appuie sur Weather.com® - et surtout Meteorologic ne sont pas optimisés. L’utilité d’intégrer ces services n’est donc pas prouvée sauf à conserver des services gratuits.

Gestion des clés d’inscription

Meteorologic et Yahoo Weather ne demandent aucune clé d’inscription pour fonctionner.

L’API utilisée actuellement pour Weather.com® fonctionne encore sans clé mais il est possible de l’utiliser avec une clé obtenue avant la sortie de la nouvelle API (Partner ID et Licence Key). Cependant, Rainette n’autorise pas aujourd’hui l’utilisation de cette interface avec clé.
De même, la nouvelle API ne sera pas supportée par Rainette si elle se limite à une utilisation payante.

Open Weather Map ne demande pas de clé d’inscription pour fonctionner. Néanmoins, si le volume de requêtes devient trop important (plus de 2000 par heure) il est demandé de s’inscrire et d’insérer la clé d’inscription gratuite dans les requêtes.

Wunderground, World Weather Online et Forecast.io demandent tout deux une clé d’inscription mais le service reste gratuit. WorldWeather Online propose un abonnement premium autorisant plus d’options mais celui-ci ne sera pas supporté par Rainette si cela demande un développement supplémentaire. AccuWeather demande une clé mais ne propose qu’un service payant, la demande devant être faite directement en contactant le service commercial car aucun prix n’est fourni sur le site.

En conclusion, il faut donc prendre en compte aujourd’hui la gestion des clés d’inscription dans Rainette lors de la construction des requêtes. En outre, il faudra rajouter un formulaire de configuration pour les enregistrer.

Gestion du cache

Il est essentiel de continuer à gérer le cache des données météo car les services sont de plus en plus pointilleux sur le nombre de requêtes maximum par période de temps. Cependant, il est devenu superflu de continuer à choisir la période de renouvèlement des données, mieux vaut se conformer à la recommandation des services. Il est par contre nécessaire de fixer une période en fonction du service.

Actuellement, le nom du fichier de cache coïncide avec l’identifiant du lieu au format de Weather.com®. Étant donné que les services peuvent utiliser des identifiants différents, le nom de fichier pour un même lieu peut varier en fonction du service (pas de possibilité de trouver un nom unique).

En outre, dans le cas de Wunderground qui propose une interface traduite pour les conditions et prévisions, il faut indexer le nom du fichier avec le code de la langue. Cela a tendance à augmenter le nombre de fichiers caches donc d’accès mais peu de site sont concernés.
C’est aussi le cas de Open Weather Map mais le nombre de traductions étant limitée il convient de vérifier au préalable l’intérêt de l’utiliser.

Prise en compte des conditions d’utilisation

Les conditions d’utilisation sont consultables aux adresses suivantes :

Il est important d’améliorer le traitement de Rainette à cet égard en :

  • rappelant ces conditions dans la page de configuration
  • utilisant les chartes graphiques dans les affichages proposés de base par Rainette