Damien49

Fichier XML WeatherLinkIP

Messages recommandés

Damien49   

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

Partager ce message


Lien à poster
Partager sur d’autres sites
seb05   
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

Partager ce message


Lien à poster
Partager sur d’autres sites
Damien49   

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

Partager ce message


Lien à poster
Partager sur d’autres sites
seb05   

Effectivement j'aurais un doute comme toi :P

Partager ce message


Lien à poster
Partager sur d’autres sites
Damien49   

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>

 

 

 

Partager ce message


Lien à poster
Partager sur d’autres sites
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

Partager ce message


Lien à poster
Partager sur d’autres sites
Damien49   

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

Partager ce message


Lien à poster
Partager sur d’autres sites
clodmu   

Bonjour Damien49,

 

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

  • Merci 1

Partager ce message


Lien à poster
Partager sur d’autres sites
Damien49   
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.

Partager ce message


Lien à poster
Partager sur d’autres sites
Damien49   

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

Partager ce message


Lien à poster
Partager sur d’autres sites
_Joel_   
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

Partager ce message


Lien à poster
Partager sur d’autres sites
_Joel_   
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 ?

 

 

 

Partager ce message


Lien à poster
Partager sur d’autres sites
_Joel_   
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 ;) )

 

 

 

 

Partager ce message


Lien à poster
Partager sur d’autres sites
Damien49   

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>

Partager ce message


Lien à poster
Partager sur d’autres sites
_Joel_   
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 "

Partager ce message


Lien à poster
Partager sur d’autres sites
Damien49   

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 ^^

Partager ce message


Lien à poster
Partager sur d’autres sites
fafou   
Posté(e) (modifié)

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

Partager ce message


Lien à poster
Partager sur d’autres sites
Damien49   

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

Partager ce message


Lien à poster
Partager sur d’autres sites
fafou   

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. 

Partager ce message


Lien à poster
Partager sur d’autres sites
Damien49   

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.

Partager ce message


Lien à poster
Partager sur d’autres sites
fafou   

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

 

Partager ce message


Lien à poster
Partager sur d’autres sites
Damien49   

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.

Partager ce message


Lien à poster
Partager sur d’autres sites
fafou   

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.

 

 

 

 

 

 

 

Partager ce message


Lien à poster
Partager sur d’autres sites
Damien49   

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'; ?>

 

Partager ce message


Lien à poster
Partager sur d’autres sites
Damien49   

 

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.

 

Partager ce message


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

  • En ligne récemment   0 membre est en ligne

    Aucun utilisateur enregistré regarde cette page.