SPIP-Contrib

SPIP-Contrib

عربي | Deutsch | English | Español | français | italiano | Nederlands

288 Plugins, 197 contribs sur SPIP-Zone, 80 visiteurs en ce moment

Accueil > Géo, carto, météo > Informations météorologiques > Rainette > Rainette v3, une évolution majeure

Rainette v3, une évolution majeure

26 novembre 2017 – par _Eric_ – 11 commentaires

5 votes

Ce plugin est une évolution du plugin Rainette v1 et permet d’afficher les conditions et les prévisions météorologiques d’un lieu donné à partir d’un web service météorologique. Cette version supporte toujours Weather.com® mais aussi Weather Underground, World Weather Online, APIXU et Open Weather Map.

Une version v2 avait déjà entrepris cette évolution mais elle n’est plus distribuée et il est clairement conseillé de migrer les versions v1 et v2 vers cette nouvelle version v3.

Les problèmes de la version v1

Depuis quelques années, Weather.com® - qui est le service unique utilisé par Rainette v1 et toujours disponible - a perdu en fiabilité, du moins pour les lieux à « faible popularité ».

Ceci étant, il m’a semblé nécessaire de faire évoluer Rainette pour pallier cette dérive et permettre à tous de disposer d’une météo locale.

Compatibilité 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.

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 la suivante :

Tous ces services, sauf World Weather Online depuis début 2017, restent gratuits en utilisation de base, mais utilisent tous une clé d’inscription pour repérer les utilisations de leur flux à l’exception de Weather.com®.
Il semble que Weather Underground soit en fait la nouvelle API promue par Weather.com® mais l’ancienne interface étant toujours en service elle reste proposée par Rainette. Weather Underground a d’ailleurs été racheté par Weather.com®.

Par souci de compatibilité avec la version v1, le service par défaut de Rainette reste Weather.com®. Néanmoins, il est conseillé d’utiliser l’un des autres services avec clé d’inscription, à savoir, World Weather Online, APIXU, Weather Underground et OpenWeatherMap. APIXU est un flux gratuit, racheté par World Weather Online ce qui justifie l’abandon de la version gratuite du flux de World Weather Online.

Il semble néanmoins que pour les utilisateurs de Rainette v1 le plus évident soit de passer à Weather Underground si le flux est disponible pour le lieu choisi. Si ce n’est pas le cas OpenWeatherMap voire APIXU sont de bonnes alternatives.

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 pour les services le nécessitant, le système d’unité et le type de résumé (fourni par le service ou converti vers celui de Weather.com®).

Les services

Les services sont connus du plugin par leur alias qui sont les suivants :

  • World Weather Online : wwo,
  • APIXU : apixu,
  • Weather Underground : wunderground,
  • OpenWeatherMap : owm,
  • Weather.com® : weather.

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.com® comme FRXX0076 pour Paris,
  • le nom d’une ville complétée éventuellement par le pays ville,pays comme Paris,France,
  • des coordonnées géographiques sous la forme latitude,longitude,
  • et une adresse IP.

Le mapping avec les services est le suivant :

ServicesID Weather.com®Ville, PaysCoordonnéesIP
Weather.com® x
Weather Underground x x x x
World Weather Online x x x
APIXU x x x
Open Weather Map x x

Unité et traduction

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.

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.

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 :

Modèle rainette_infos ou rainette_conditions
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 à weather.
Modèle rainette_previsions
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 à weather.

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 v2 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 v1Filtre v3Utilisation
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 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 https://blog.smellup.net/spip.php?a... décrit la structure de données exacte pour chaque mode.

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 :

  1. #INCLURE{fond=modeles/inc-credits,
  2. classe_div=condtr,
  3. env}

Télécharger

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 gestion des icônes

Les services autres que Weather.com® offrent un jeu d’icônes adaptés à chaque résumé météo natif. Quand la configuration du service requiert l’utilisation du résumé natif du service l’icône météo affiché est aussi celui fourni par le service.

En outre, le service Weather Underground propose une ensemble de thèmes d’icônes. le choix d’un thème est disponible dans la page de configuration du service.

Si le service est configuré pour utiliser la conversion vers les résumés Weather®, ce sont les icônes de Weather® embarqués dans Rainette dans le dossier img_meteo/ qui sont utilisés (ou leur surcharge éventuelle).

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é.

Futur de Rainette v3

La branche v3 est la seule qui continue à être développée : la v2 est totalement abandonnée et la v1 fait uniquement l’objet d’une maintenance corrective et de toute façon n’est pas compatible avec SPIP > 3.0.

En particulier, Rainette v3 devrait à terme proposer des prévisions horaires voire de nouveaux services.

Historique des modifications majeures

  • 3.2.1 : Déplacement du cache de tmp/cache vers local/ 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.

Voir en ligne : https://plugins.spip.net/rainette

Dernière modification de cette page le 11 décembre 2017

Retour en haut de la page

Vos commentaires

  • Le 4 décembre à 08:27, par michel En réponse à : Rainette v3, une évolution majeure

    Noisette météo de Sarka-SPIP 3.4.8 [107132] utilisant Rainette 3.3.0 - stable sur SPIP 3.2.0 [23778]

    Après la mise à jour de ce matin => "Rainette 3.3.0 - stable" :

    -  Affichage de la page des prévision => plus aucune info météo et uniquement le message suivant :
    Fatal error : Uncaught Error : Call to undefined function normaliser_configuration_utilisateur() in /home/laccrete/www/plugins/auto/rainette/v3.3.0/inc/charger_meteo.php:77 Stack trace : #0 /home/laccrete/www/plugins/auto/rainette/v3.3.0/rainette_fonctions.php(58) : inc_charger_meteo_dist(’FRXX0284’, ’infos’, 0, ’weather’) #1 /home/laccrete/www/tmp/cache/skel/html_dc8da91f5f74b4b6af48ad73412b8e02.php(21) : calculer_infos(’FRXX0284’, ’ville’, ’weather’) #2 /home/laccrete/www/ecrire/public/parametrer.php(128) : html_dc8da91f5f74b4b6af48ad73412b8e02(Array, Array) #3 /home/laccrete/www/ecrire/public/assembler.php(314) : public_parametrer_dist(’head/meteo’, Array, ’7f537284d6f6ffb...’, NULL) #4 /home/laccrete/www/ecrire/public/assembler.php(278) : public_produire_page_dist(’head/meteo’, Array, 1, ’7f537284d6f6ffb...’, Array, Array, 0, NULL) #5 /home/laccrete/www/ecrire/public/assembler.php(602) : inclure_page(’head/meteo’, Array, NULL) #6 /home/laccrete/www/ecrire/inc/utils.php(3224) : evaluer_fond(’head/meteo’, Array, NULL) #7 /home/la in /home/laccrete/www/plugins/auto/rainette/v3.3.0/inc/charger_meteo.php on line 77

    -  Pour ce qui concerne la noisette dans la colonne extra de droite, elle affiche aussi :
    Fatal error : Uncaught Error : Call to undefined function normaliser_configuration_utilisateur() in /home/laccrete/www/plugins/auto/rainette/v3.3.0/inc/charger_meteo.php:77 Stack trace : #0 /home/laccrete/www/plugins/auto/rainette/v3.3.0/rainette_fonctions.php(58) : inc_charger_meteo_dist(’FRXX0284’, ’infos’, 0, ’weather’) #1 /home/laccrete/www/tmp/cache/skel/html_1507783327bf424ec7d8cd39b416d91f.php(28) : calculer_infos(’FRXX0284’, ’ville’, ’weather’) #2 /home/laccrete/www/ecrire/public/parametrer.php(128) : html_1507783327bf424ec7d8cd39b416d91f(Array, Array) #3 /home/laccrete/www/ecrire/public/assembler.php(314) : public_parametrer_dist(’noisettes/inc_r...’, Array, ’6a97219a70fd582...’, NULL) #4 /home/laccrete/www/ecrire/public/assembler.php(278) : public_produire_page_dist(’noisettes/inc_r...’, Array, 1, ’6a97219a70fd582...’, Array, Array, 0, NULL) #5 /home/laccrete/www/ecrire/public/assembler.php(602) : inclure_page(’noisettes/inc_r...’, Array, NULL) #6 /home/laccrete/www/ecrire/inc/utils.php(3224) : evaluer_fond(’noisettes/inc in /home/laccrete/www/plugins/auto/rainette/v3.3.0/inc/charger_meteo.phpon line 77

    Donc, pas de « météo au quotidien » !

    Pour info.
    je vais devoir désactiver le plugin rapidement pour éviter ce type d’affichage sur la page d’accueil.
    À bientôt.

    • Le 4 décembre à 14:54, par _Eric_ En réponse à : Rainette v3, une évolution majeure

      Sarka-SPIP n’est pas compatible avec Rainette v3 c’est le seul souci que je vois.

    • Le 4 décembre à 15:23, par michel En réponse à : Rainette v3, une évolution majeure

      La page des prévisions était fonctionnelle avant cette dernière mise à jour.
      Bonne journée.
      Michel

    • Le 4 décembre à 20:48, par _Eric_ En réponse à : Rainette v3, une évolution majeure

      Hello,

      Effectivement il manquait un include mais qui ne provoquait pas d’erreur systématique. J’ai envoyé une version 3.3.1. Il faudrait que tu mettes à jour Rainette avec cette nouvelle version et que tu essaies. Je suis quand même dubitatif car le libellé de l’erreur ne correspond pas vraiment à ma correction.

      En plus, le fait que cela fonctionne avec Sarka-SPIP 3.4 est un mystère franchement.

      Correction, il y avait encore un include manquant, la version 3.3.2 est en construction et sera disponible vers 22h15.

    Répondre à ce message

  • Le 26 novembre à 20:03, par beuz En réponse à : Rainette v3, une évolution majeure

    Merci pour cette page et bravo pour le boulot réalisé.

    Répondre à ce message

  • Le 26 novembre à 20:02, par beuz En réponse à : Rainette v3, une évolution majeure

    Merci pour cette page et bravo pour le boulot réalisé.

    Répondre à ce message

  • Le 26 novembre à 18:08, par Jean Christophe Villeneuve En réponse à : Rainette v3, une évolution majeure

    Pas de souci, je n’y manquerai pas.

    Et donc cette version 3.2.0 sera compatible avec quelles versions de spip ?

    • Le 26 novembre à 18:18, par _Eric_ En réponse à : Rainette v3, une évolution majeure

      Comme pour la 3.1.1 : SPIP 3.1 et SPIP 3.2. Je ne vois pas le besoin de backporter plus. J’ai une fonction native de SPIP qui nécessite SPIP 3.1.3 minimum. C’est la fonction table_valeur() qui est utilisée dans les modèles pour extraire correctement les données pour les afficher. J’ai du modifier cette fonction pour distinguer les données indisponible temporairement ou non fournie.

      Je sais pas si c’est utile de dupliquer cette fonction dans Rainette pour assurer la compatibilité avec SPIP 3.0. A voir.

    • Le 26 novembre à 18:29, par Jean Christophe Villeneuve En réponse à : Rainette v3, une évolution majeure

      Ce qui serait cool, c’est d’être au moins compatible avec toutes les versions de 3.1 mais bon perso, je m’en fous, j’ai adapté mes modèles pour qu’ils testent la version de rainette et ils vont chercher les sous-modèles en fonction de cette version.

    Répondre à ce message

  • Le 26 novembre à 17:15, par Jean Christophe Villeneuve En réponse à : Rainette v3, une évolution majeure

    Hello

    Sur un spip 3.1.1, quand on recherche Rainette dans l’interface privée de spip, il n’est proposé que la version 2.4.7, pas la version 3. Et en effet, dans paquet.xml, les bornes de compatibilité sont 3.1.3 et 3.2.*

    Peut-être l’indiquer dans la doc ?

    • Le 26 novembre à 17:58, par _Eric_ En réponse à : Rainette v3, une évolution majeure

      C’est un effet de bord temporaire.

      Je vais bientôt publier la version 3.2.0 et supprimer le zip de la v2 définitivement pour qu’il ne soit plus proposé. Je pense qu’après ça devrait être plus propre.

      Tu me diras si c’est bien le cas.

    Répondre à ce message

Répondre à cet article

Qui êtes-vous ?

Pour afficher votre trombine avec votre message, enregistrez-la d’abord sur gravatar.com (gratuit et indolore) et n’oubliez pas d’indiquer votre adresse e-mail ici.

Ajoutez votre commentaire ici Les choses à faire avant de poser une question (Prolégomènes aux rapports de bugs. )
Ajouter un document

Retour en haut de la page

Ça discute par ici

  • Formidable, le générateur de formulaires

    23 janvier 2012 – 2294 commentaires

    Un générateur de formulaires facilement configurable pour les non-informaticiens et facilement extensible pour les développeurs. Introduction L’objectif était de créer un plugin permettant de générer des formulaires. Historiquement, 2 plugins (...)

  • SPIP 3, Agenda et FullCalendar

    6 août 2012 – 318 commentaires

    Depuis SPIP 3, l’affichage d’un agenda sous forme de calendrier par jour/semaine/mois à changé. Les filtres |agenda_memo et apparentés sont désormais obsolètes. Il en est de même pour les filtres agendafull_memo et apparentés du plugin Agenda. (...)

  • Mode portail Communiquant pour SoyezCréateurs

    29 septembre 2010 – 28 commentaires

    5e mode d’affichage de la page d’accueil, ce mode se distingue des autres par une animation proposant un fondu/enchaîné des logos des articles à la une. Zonage Configuration Bloc 1 : Zone d’entête Nom du site Slogan si plugin bandeau présent Zone (...)

  • Lecteur pdf javascript pdf.js

    20 février 2012 – 162 commentaires

    Ce plugin est basé sur le projet pdf.js qui permet une lecture en ligne des pdfs depuis le navigateur. Ce plugin est expérimental et les contributions sur la zone sont les bienvenues. Avantages Open source Ne requiert pas flash et donc (...)

  • GIS 4

    11 août 2012 – 1420 commentaires

    Présentation et nouveautés La version 4 de GIS abandonne la libraire Mapstraction au profit de Leaflet. Cette librairie permet de s’affranchir des librairies propriétaires tout en gardant les mêmes fonctionnalités, elle propose même de nouvelles (...)