Aller au contenu
Les Forums d'Infoclimat

Ce tchat, hébergé sur une plateforme indépendante d'Infoclimat, est géré et modéré par une équipe autonome, sans lien avec l'Association.
Un compte séparé du site et du forum d'Infoclimat est nécessaire pour s'y connecter.

Fichier XML WeatherLinkIP


Damien49
 Partager

Messages recommandés

Posté(e)
La-Chapelle-Saint-Florent - 49 (proche 44, bord Loire)

Je suis en train d'éplucher le fichier XML de WeatherLinkIP.

 

Pour rappel c'est ici : http://www.weatherlink.com/xml.php?user=nom_station&pass=mot_de_passe

 

Si ça peut en intéresser j'ai compilé quelques codes récupéré ici et là :

<?php $user = "meteobell";$password = "mot_de_passe"; //WeatherLink Identifiants
    $file = file_get_contents('http://www.weatherlink.com/xml.php?user='.$user.'&pass='.$password);
    $xml=simplexml_load_string($file);
    
    foreach($xml->observation_time_rfc822 as $time_tmp){} //RFC822 format
    foreach($xml->temp_c as $temperature){}
    foreach($xml->relative_humidity as $hum){}
    foreach($xml->dewpoint_c as $dew){}
    foreach($xml->pressure_mb as $press){}
    foreach($xml->wind_mph as $wind_tmp){} //en mph
    foreach($xml->wind_degrees as $dir){}
    foreach($xml->davis_current_observation->rain_day_in as $rain_tmp){} //en inches
    foreach($xml->davis_current_observation->solar_radiation as $solar){}
    foreach($xml->davis_current_observation->uv_index as $uv){}
    foreach($xml->davis_current_observation->wind_day_high_mph as $wind_day_tmp){}
    foreach($xml->davis_current_observation->temp_day_low_f as $tminf);
    foreach($xml->davis_current_observation->temp_day_high_f as $tmaxf);
    
    
    $wind = round($wind_tmp * 1.6093,1);
    $wind_day = round($wind_day_tmp * 1.6093,1);
    $rain = round($rain_tmp * 24.4,1);
    $tmax = round((5/9) * ($tmaxf - 32),1);
    $tmin = round((5/9) * ($tminf - 32),1);
    
        function degToCompass($dir) {
        $val=floor(($dir/22.5)+.5);
        $arr=["Nord","NNE","NE","ENE","Est","ESE", "SE", "SSE","Sud","SSO","SO","OSO","Ouest","ONO","NO","NNO"];
        return $arr[($val % 16)];}
    
    ini_set("date.timezone", "Europe/Paris"); date_default_timezone_set('Europe/Paris'); //Heure été/hiver
    $time = strtotime($time_tmp);$date = date("d-m-Y à H:i", $time); ?>
    
    <p> Le <?php echo $date; ?> </p>
    <p> Température : <?php echo $temperature.' °C'; ?> </p>
    <p> Humidité Relative : <?php echo $hum.' %'; ?> </p>
    <p> Point de Rosée : <?php echo $dew.' °C'; ?> </p>
    <p> Pression : <?php echo $press.' hpa'; ?> </p>    
    <p> Vent en Rafale : <?php echo $wind.' km/h'; ?> </p>    
    <p> Direction du Vent : <?php echo degToCompass($dir).' ('.$dir.'°)'; ?> </p>
    <p> Précipitations du Jour : <?php echo $rain.' mm'; ?> </p>
    <p> Ensoleillement : <?php echo $solar.' w/m²'; ?> </p>
    
    <p> Plus Forte Rafale de Vent du Jour : <?php echo $wind_day.' km/h'; ?> </p>
    <p> Température Minimum du Jour (Tn) : <?php echo $tmin.' °C'; ?> </p>
    <p> Température Maximum du Jour (Tx) : <?php echo $tmax.' °C'; ?> </p>

 

Mais je me demandais en fait tout simplement la différence par exemple entre

 

temp_day_low_f

temp_day_high_f

 

et

 

temp_in_day_low_f

temp_in_day_high_f

 

Le truc tout bête sûrement, mais là je sèche ^^

 

D'ailleurs si vous avez un lien vers une description de tous les paramètres du fichier XML je suis preneur (pas trouvé).

Lien à poster
Partager sur d’autres sites

Posté(e)
Haut Champsaur - Orcières - Hameau des Tourrengs - 1280m
il y a une heure, Damien49 a dit :

temp_day_low_f

temp_day_high_f

et

temp_in_day_low_f

temp_in_day_high_f

 

Le truc tout bête sûrement, mais là je sèche ^^

 

A première vue je dirais que temp_day c'est la température extérieure et que temp_in_day c'est la température intérieure.

  • Haha 1
Lien à poster
Partager sur d’autres sites

Posté(e)
La-Chapelle-Saint-Florent - 49 (proche 44, bord Loire)

Haha mais c'est bien sûr ^^

 

Pas sûr que ça intéresse les gens de savoir combien il fait dans ma maison :D

Lien à poster
Partager sur d’autres sites

Posté(e)
La-Chapelle-Saint-Florent - 49 (proche 44, bord Loire)

Bon je vais profiter du sujet pour répertorier tous les autres paramètres que je pige pas ou un peu flou

 

<suggested_pickup><suggested_pickup_period>

<pressure_in>

<observation_age>

<et_day><et_month><et_year>

<rain_storm_in>

<thsw_index_day_high_f><thsw_index_month_high_f><thsw_index_year_high_f>

<wind_ten_min_avg_mph>

 

 

 

Lien à poster
Partager sur d’autres sites

Posté(e)
Goldbach-Altenbach (68) 705 m Versant Sud du Grand Ballon (1424 m)
Il y a 2 heures, Damien49 a dit :

Mais je me demandais en fait tout simplement la différence par exemple entre :

temp_day_low_f

temp_day_high_f

et

temp_in_day_low_f

temp_in_day_high_f

 

 

- temp low : température mini

- temp high : températures maxi

Lien à poster
Partager sur d’autres sites

Posté(e)
La-Chapelle-Saint-Florent - 49 (proche 44, bord Loire)

Euh oui mais ça j'avais compris quand même ^^

C'est le "in" qui posait problème, mais seb05 m'a répondu.

  • Haha 1
Lien à poster
Partager sur d’autres sites

Posté(e)
La-Chapelle-Saint-Florent - 49 (proche 44, bord Loire)
Il y a 8 heures, clodmu a dit :

Bonjour Damien49,

 

Si tu vas ICI tu auras tout Weathelink en français téléchargeable en PDF.

 

Super, mais j'ai pas trouvé la description du fichier XML.

 

Je recherche notamment aussi toutes les occurrences que peut prendre :

 

<pressure_tendency_string>

 

Car comme le résultat est en anglais, j'aimerais mettre une fonction str_replace pour le traduire ou le remplacer par une image.

Lien à poster
Partager sur d’autres sites

Posté(e)
La-Chapelle-Saint-Florent - 49 (proche 44, bord Loire)

<wind_ten_min_avg_mph>  est-ce que ça serait pas le vent moyen en fait (des 10 dernières minutes et en mph)?

Lien à poster
Partager sur d’autres sites

Il y a 2 heures, Damien49 a dit :

 

Super, mais j'ai pas trouvé la description du fichier XML.

 

Je recherche notamment aussi toutes les occurrences que peut prendre :

 

<pressure_tendency_string>

 

Car comme le résultat est en anglais, j'aimerais mettre une fonction str_replace pour le traduire ou le remplacer par une image.

 

A priori je dirais ceci : "Steady", "Rising Slowly", "Rising Rapidly", "Falling Slowly", "Falling Rapidly"

mais c'est une simple supposition de ma part

  • J'aime 1
Lien à poster
Partager sur d’autres sites

Il y a 23 heures, Damien49 a dit :

Bon je vais profiter du sujet pour répertorier tous les autres paramètres que je pige pas ou un peu flou

 

<et_day><et_month><et_year>

<thsw_index_day_high_f><thsw_index_month_high_f><thsw_index_year_high_f>

 

 

Evapotranspiration (ET) (day, month, year)

Indice THSW  (température ressentie ?) max en °F ?

 

 

 

Lien à poster
Partager sur d’autres sites

Il y a 23 heures, Damien49 a dit :

Bon je vais profiter du sujet pour répertorier tous les autres paramètres que je pige pas ou un peu flou

 

<suggested_pickup><suggested_pickup_period>

<pressure_in>

<observation_age>

<et_day><et_month><et_year>

<rain_storm_in>

<thsw_index_day_high_f><thsw_index_month_high_f><thsw_index_year_high_f>

<wind_ten_min_avg_mph>

 

 

 

 

 

<suggested_pickup>15 minutes after the hour</suggested_pickup>

<suggested_pickup_period>60</suggested_pickup_period>

 

Ca ressemble au moment et à la période idéaux pour prendre les données : à l'heure 15 toutes les 60 min ?

 

<rain_storm_in>

"in" veut dire inches   (non, ce n'est pas la pluie à l'intérieur ;) )

 

 

 

 

Lien à poster
Partager sur d’autres sites

Posté(e)
La-Chapelle-Saint-Florent - 49 (proche 44, bord Loire)

Super merci Joel, ça m'aide pas mal en effet.

 

Citation

Indice THSW  (température ressentie ?) max en °F ?

 

Y'a une différence avec l'humidex ?

<heat_index_c>

Lien à poster
Partager sur d’autres sites

il y a 6 minutes, Damien49 a dit :

Super merci Joel, ça m'aide pas mal en effet.

 

 

Y'a une différence avec l'humidex ?

<heat_index_c>

 

Je ne suis pas un grand spécialiste mais humidex = température + humidité

"THSW incorpore les effets thermiques du rayonnement solaire direct et les effets de refroidissement du vent sur notre perception de la température "

Lien à poster
Partager sur d’autres sites

Posté(e)
La-Chapelle-Saint-Florent - 49 (proche 44, bord Loire)

Ok.

 

En tout cas vraiment une riche idée de la part de WeatherLink d'avoir mis un fichier XML à disposition. Il est en plus vraiment hyper complet. Par contre dommage d'avoir aucune explication dessus ^^

Lien à poster
Partager sur d’autres sites

En regardant de plus près ce fichier xml, je constate que les températures en fahrenheit suivantes : windchill,  heat index, dew point, thsw sont arrondies à l'unité. 

Si vous regardez dans la fenêtre "summary" de weatherlink, ces valeurs en fahrenheit sont affichées avec une décimale.

Après vérification, cette décimale est tronquée lorsque les données sont envoyées à weatherlink.com. Cela explique des différences de quelques dixième entre la température affichée dans ce fichier xml et les données affichées dans weatherlinksur le PC.

 

 

Modifié par fafou
Lien à poster
Partager sur d’autres sites

Posté(e)
La-Chapelle-Saint-Florent - 49 (proche 44, bord Loire)

La décimale affiché dans summary est toujours un 0. Donc je vois pas de différence entre 58°F ou 58.0°F

Et ce sont des données qui de toute façon ne méritent pas un degré de précision au 10ème étant donné leur validité scientifique plus que discutable.

 

A mon avis ça vient simplement du fait que pour l'affichage du site ils utilisent la même fonction php round($val,1), c'est donc normal qu'on se retrouve avec une virgule au 10eme sur toutes les valeurs, même si ça correspond à rien. Je fais la même chose pour mon site (voir code plus haut).

Lien à poster
Partager sur d’autres sites

La décimale peut être comprise entre 1 et 9. Il y a donc une différence entre 58.5 et 58.0. Si tu regardes ce champ: 

<temp_f>51.6</temp_f> la température en fahrenheit a une décimale.

Si tu regardes les autres champs  <windchill_f>, <dewpoint_f>, la valeur est toujours arrondie à un entier.  Il n'y a aucune décimale contrairement à <temp_f>.

Ton paramètre $température n'est pas arrondie avec round car il est égal à temp_c qui provient lui même de temp_f qui n'a pas été arrondi à l'entier inférieur ou supérieur. 

Ce n'est pas un pb d'affichage du site car les données sont tronquées avant d'être envoyées sur weatherlink.com.

Le point où je te rejoins, c'est que q'une précision au dixième sur ce type de température ressentie n'est pas significatif.  Par contre il est intéressant de le savoir pour comprendre pourquoi des valeurs que tu vas récupérer sur xml ne correspondent pas exactement à ce que tu peux lire sur weatherlink sur ton PC. 

Lien à poster
Partager sur d’autres sites

Posté(e)
La-Chapelle-Saint-Florent - 49 (proche 44, bord Loire)

Quel que soit le moment où je regarde, j'ai toujours une décimale de 0 en °F pour le Heat Index, le Wind chill ou le DewPoint. Et pour ces 3 indices, il n'y a pas de décimales sur le fichier XML en effet.

 

weather.jpg.8f538c9e3477fa70789918480f9fea2a.jpg

 

On parle bien de la même chose ? Parce que je vois pas de problème perso.

Lien à poster
Partager sur d’autres sites

Quand je parle de weatherlink, c'est vraiment le logiciel PC. J'ai fait une capture d'écran pour m'expliquer.

la capture montre une fenêtre du logiciel weatherlink avec la windows "summary" puis le fichier xml récupérer sur weatherlink.com avec la commande que tu as donnée. 

Sur la capture on trouve : 

                             Weatherlink summary                                    XML capture               

Heat Index                9.2°C                                                                    9.4°C/49°F                              

Wind Chill                 9.4°C                                                                    8.9°C/48°F

Heat Index                4.8°C                                                                    5°C/41F

 

Si je calcule les températures  en °F de ma fenêtre weatherlink summary j'obtiens

9.2 -> 48.5°F arrondi à 49°F sur la capture XML ce qui donne 9.4°C ((49-32)/1.8)

9.4 -> 48.9°F arrondi à 48°F sur la capture XML ce qui donne 8.9°C ((48-32)/1.8)

4.8 -> 40.6°F arrondi à 41°Fsur la capture XML ce qui donne 5°C ((41-32)/1.8)

Pourquoi la valeur 48.9 a été arrondi à 48 au lieu de 49 alors que 48.5 a été arrondi à 49,  j'en ai aucune idée. Je vois des arrondis très bizarre certaines fois sur les captures XML par rapport à la fenêtre summary.

 

weatherlink_99.thumb.jpg.9b87cb8008375745a421072b095d9621.jpg

 

Donc mon point est de souligner que les valeurs en fahrenheit sur le fichier XML sont arrondies à l'unité par rapport aux valeurs en fahrenheit que l'on a dans le logiciel weatherlink sur cette fenêtre summary. Ce qui explique pourquoi les valeurs en °C diffèrent de quelques dixièmes de °C entre xml et weatherlink summary.

Bref, j'espère avoir été un peu plus clair9_9

 

Lien à poster
Partager sur d’autres sites

Posté(e)
La-Chapelle-Saint-Florent - 49 (proche 44, bord Loire)

Ok en effet on ne parlait pas de la même chose. Bon après ce ne sont de toute façon pas des valeurs à prendre au pied de la lettre

 

Par contre si ce que tu pointes est aussi vrai pour les valeurs plus physique, effectivement ça mérite réflexion.

Lien à poster
Partager sur d’autres sites

A priori, de ce que j'ai regardé, cela ne concerne pas les valeurs mesurées par les capteurs mais uniquement les températures qui sont calculées. 

Merci pour ton code ci-dessus, je vais l'utiliser pour récupérer les min et max journaliers, mensuels et annuels pour ma station.

 

 

 

 

 

 

 

Lien à poster
Partager sur d’autres sites

Posté(e)
La-Chapelle-Saint-Florent - 49 (proche 44, bord Loire)

J'ai encore un peu amélioré mon code depuis :

 

Si ça peut aider :

 

    <?php $user = "meteobell";$password = "mdp"; //WeatherLink Identifiants
    $file = file_get_contents('http://www.weatherlink.com/xml.php?user='.$user.'&pass='.$password);
    $xml=simplexml_load_string($file);
    
    foreach($xml->observation_time_rfc822 as $time_tmp){} //RFC822 format
    foreach($xml->temp_c as $temperature){}
    foreach($xml->relative_humidity as $hum){}
    foreach($xml->dewpoint_c as $dew){}
    foreach($xml->heat_index_c as $humidex){}
    foreach($xml->pressure_mb as $press){}
    foreach($xml->wind_mph as $wind_tmp){} //en mph    
    foreach($xml->wind_degrees as $dir){}
    foreach($xml->windchill_c as $windchill){}
    foreach($xml->davis_current_observation->rain_day_in as $rain_tmp){} //en inches
    foreach($xml->davis_current_observation->rain_month_in as $rain_m_tmp){}
    foreach($xml->davis_current_observation->rain_year_in as $rain_y_tmp){}
    foreach($xml->davis_current_observation->solar_radiation as $solar){}
    foreach($xml->davis_current_observation->uv_index as $uv){}
    foreach($xml->davis_current_observation->wind_day_high_mph as $wind_day_tmp){}
    foreach($xml->davis_current_observation->temp_day_low_f as $tminf){}
    foreach($xml->davis_current_observation->temp_day_high_f as $tmaxf){}
    foreach($xml->davis_current_observation->wind_ten_min_avg_mph as $wind_moy_tmp){} //en mph
    foreach($xml->davis_current_observation->pressure_tendency_string as $press_tend){} //en mph
    
    $wind = round(floatval($wind_tmp) * 1.6093,1);
    $wind_day = round(floatval($wind_day_tmp) * 1.6093,1);
    $wind_moy = round(floatval($wind_moy_tmp) * 1.6093,1);
    $rain = round(floatval($rain_tmp) * 25.4,1);
    $rain_month = round(floatval($rain_m_tmp) * 25.4,1);
    $rain_year = round(floatval($rain_y_tmp) * 25.4,1);
    $tmax = round((5/9) * (floatval($tmaxf) - 32),1);
    $tmin = round((5/9) * (floatval($tminf) - 32),1);
    
        function degToCompass($dir) {
        $val=floor(($dir/22.5)+.5);
        $arr=array("Nord","NNE","NE","ENE","Est","ESE", "SE", "SSE","Sud","SSO","SO","OSO","Ouest","ONO","NO","NNO");
        return $arr[($val % 16)];}
        
        function PressTendImg($press_tend) {
        $press_tend=str_replace("Steady","/Images/VP2/stable.png",$press_tend);
        $press_tend=str_replace("Falling Slowly","/Images/VP2/fleche_bas.png",$press_tend);
        $press_tend=str_replace("Rising Slowly","/Images/VP2/fleche_haut.png",$press_tend);
        $press_tend=str_replace("Falling Rapidly","/Images/VP2/fleche_bas1.png",$press_tend);
        $press_tend=str_replace("Rising Rapidly","/Images/VP2/fleche_haut1.png",$press_tend);
        return $press_tend;
        }
        
        function PressTendString($press_tend) {
        $press_tend=str_replace("Steady","Stable",$press_tend);
        $press_tend=str_replace("Falling Slowly","Baisse Lentement",$press_tend);
        $press_tend=str_replace("Rising Slowly","Augmente Lentement",$press_tend);
        $press_tend=str_replace("Falling Rapidly","Baisse Rapidement",$press_tend);
        $press_tend=str_replace("Rising Rapidly","Augmente Rapidement",$press_tend);
        return $press_tend;
        }
        
    
    ini_set("date.timezone", "Europe/Paris"); date_default_timezone_set('Europe/Paris'); //Heure été/hiver
    $time = strtotime($time_tmp);$date = date("d-m-Y à H:i", $time); ?>

Le <?php echo $date; ?>
Température : <?php echo $temperature.'°C'; ?>
Tn : <?php echo $tmin.'°C'; ?>
Tx : <?php echo $tmax.'°C'; ?>
Humidité Relative : <?php echo $hum.' %'; ?> 
Point de Rosée : <?php echo $dew.'°C'; ?> 
Humidex : <?php echo $humidex.'°C'; ?>
Vent en Rafale : <?php echo $wind.' km/h'; ?>
Windchill : <?php echo $windchill.'°C'; ?>
Vent Rafale Max du jour : <?php echo $wind_day.' km/h'; ?>
Direction du vent : <?php echo degToCompass($dir);?>
Vent Moyen : <?php echo $wind_moy.' km/h';?>
Pression : <?php echo $press.' hpa'; ?>
Tendance Pression : <img title="<?php echo PressTendString($press_tend); ?>" src="<?php echo PressTendImg($press_tend); ?>" />
Précipitations : <?php echo $rain.' mm'; ?>
Mensuel : <?php echo $rain_month.' mm'; ?>
Annuel : <?php echo $rain_year.' mm'; ?>

 

Lien à poster
Partager sur d’autres sites

Posté(e)
La-Chapelle-Saint-Florent - 49 (proche 44, bord Loire)

 

J'ai toujours un doute concernant :

wind_ten_min_avg_mph

wind_mph

Wind_mph c'est le vent en rafale instantanée, c'est à dire dans la seconde pratiquement. Dès que je fais F5 ça change de valeur. A la limite je voudrais afficher plutôt le vent en rafale sur 10mn, ça donnerait une valeur un peu plus stable et réelle, plutôt qu'un truc qui fait constamment le yoyo et donc illisible.

 

Et c'est là que je me demande si <wind_ten_min_avg_mph> est bien en fait le vent moyen du coup.

 

Lien à poster
Partager sur d’autres sites

Créer un compte ou se connecter pour commenter

Vous devez être membre afin de pouvoir déposer un commentaire

Créer un compte

Créez un compte sur notre communauté. C’est facile !

Créer un nouveau compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.

Connectez-vous maintenant
 Partager

  • En ligne récemment   0 membre est en ligne

    • Aucun utilisateur enregistré regarde cette page.
×
×
  • Créer...