Page 1 sur 1

Relevés météo temps réel - Infoclimat

Publié : 21 juin 2019, 16:00
par 3issa
Bonjour,

Cela fait quelques temps que je suis à la recherche d'un moyen d'intégrer à mon Jeedom des relevés météo en temps réels qui soient fiables.

Les capteurs, c'est bien. Notamment car c'est de la donnée locale et donc que l'on maitrise. Mais niveau fiabilité, je trouve que ce n'est pas ce qu'il y a de mieux, sauf à y mettre des moyens non négligeables.

En cherchant un peu, j'ai trouvé le site Infoclimat qui donne utilise des équipements de qualité professionnelle dont les données sont utilisées par MeteoFrance. Ce site affiche les données en temps réel (un relevé toutes les 10 min) sur une page par station météo. Par chance, j'ai une station qui se trouve à 300m de chez moi, j'ai donc chercher à récupérer ces données.

Infoclimat dispose d'une api gratuite mais seulement pour les prévisions (prévisions auto sans corrections humaines). Je dois donc parser la page html de la station qui se trouve près de chez moi. Vu que je n'ai jamais fait ça auparavant, j'ai du un peu me documenter. Pour compliquer les choses, le tableau présentant les données change régulièrement : une colonne est ajoutée à chaque fois que quelqu'un fait une observation météo. D'autres données apparaissent ou disparaissent selon les relevés (temp ressentie, radiations solaires). Tout ça fait que je n'ai pas réussi à utiliser les outils mis à disposition du plugin Script.

Au final, j'ai réussi à venir au bout de mes peines et le résultat me satisfait. Je me dis que je ne suis peut-être pas le seul à souhaiter disposer de telles infos, aussi je viens partager ma solution. Cela pourra être revu par quelqu'un maitrisant mieux le sujet que moi mais aussi être utile à d'autres.

J'ai donc créer un virtuel pour recevoir toutes les données que je souhaitais récupérer. Puis, j'ai mis en place le scénario suivant qui se déclenche toutes les 10 minutes ( à partir de la minute 2) :

Code : Tout sélectionner

  $url = "https://www.infoclimat.fr/observations-meteo/temps-reel/paris-20eme-porte-de-vincennes/000EW.html";
  $data = file_get_contents($url);
  @$dom = new DOMDocument();
  libxml_use_internal_errors(true);
  $dom->loadHTML($data);
  libxml_use_internal_errors(false);

  $xpath = new DomXPath($dom);

  $node = $xpath->query("//*[@id=\"tableau-releves\"]/thead/tr/th[2]/a");
  $val = $node[0]->nodeValue;
  $j = 0;
  if ($val === "Temps") {
    //Ajout d'une colonne dans le tableau
    $j++;
  }
  
  //Heure
  $i = 1;
  $node = $xpath->query("//*[@id=\"cdata0\"]/td[".$i."]/span");
  $cmd = cmd::byId(468);
  $cmd->event($node[0]->nodeValue);

  //Température
  $i = 2 + $j;
  $node = $xpath->query("//*[@id=\"cdata0\"]/td[".$i."]/span[1]");
  $cmd = cmd::byId(469);
  $cmd->event($node[0]->nodeValue);

  //Température ressentie
  $i = 3 + $j;
  $node = $xpath->query("//*[@id=\"cdata0\"]/td[".$i."]/span[1]");
  $cmd = cmd::byId(470);
  $cmd->event($node[0]->nodeValue);

  //Radiations solaires
  $i = 3 + $j;
  $node = $xpath->query("//*[@id=\"cdata0\"]/td[".$i."]/a/span");
  $cmd = cmd::byId(471);
  $cmd->event($node[0]->nodeValue);

  //Pluie
  $i = 4 + $j;
  $node = $xpath->query("//*[@id=\"cdata0\"]/td[".$i."]/span/text()");
  $cmd = cmd::byId(472);
  $cmd->event($node[0]->nodeValue);


  //Humidité
  $i = 5 + $j;
  $node = $xpath->query("//*[@id=\"cdata0\"]/td[".$i."]/span");
  $cmd = cmd::byId(473);
  $cmd->event($node[0]->nodeValue);

  //Vent
  $i = 7 + $j;
  $node = $xpath->query("//*[@id=\"cdata0\"]/td[".$i."]/span[1]");
  $cmd = cmd::byId(474);
  $cmd->event($node[0]->nodeValue);

  //Rafales
  $i = 7 + $j;
  $node = $xpath->query("//*[@id=\"cdata0\"]/td[".$i."]/span[3]");
  $cmd = cmd::byId(475);
  $cmd->event($node[0]->nodeValue);

  //Pression
  $i = 8 + $j;
  $node = $xpath->query("//*[@id=\"cdata0\"]/td[".$i."]/text()");
  $cmd = cmd::byId(476);
  $cmd->event($node[0]->nodeValue);
Les chiffres passés en attribut des commandes "cmd::byId" correspondent aux id des infos de mon virtuel qui doit recevoir les données.

Sûrement y a t'il une meilleure façon de faire, aussi je suis curieux de lire vos suggestions.

Re: Relevés météo temps réel - Infoclimat

Publié : 15 août 2019, 22:15
par Jerome33
Super, merci pour ton partage