Site icon Abavala !!!

Données domotiques : transformer un tableau HTML en XML via Google Drive

Nos serveur domotiques peuvent sans trop de difficultés lire des données XML.  Les sites web offrent souvent la possibilité de consulter des données au format HTML.  Il peut être intéressant de récupérer ces données présentées dans des tableaux HTML dans son système domotique mais il faut penser à convertir le format de ces données pour y arriver.  Google Drive peut nous aider à transformer ces données au format XML sans développement.  Exemple avec le suivi des relevés de la hauteur d’eau issu de Vigicrues.

Il y a quelques semaines je vous avait parlé du service Vigicrues qui permettait de récupérer des alertes de vigilances des crues de nos fleuves et nos rivières.  L’une des questions remontée suite à la lecture de l’article avait été: peut-on récupérer les données chiffrées pour les intégrer dans un système domotique?  Peut-on récupérer la hauteur du niveau de l’eau et suivre son évolution dans son système domotique.  La réponse est oui et.. sans développement.

Du web à la feuille de calcul

La première étape consiste à récupérer des données du tableau HTML dans une feuille de calcul Google Drive.

  • Sur le site Vigicrues, relever l’URL de la station que vous souhaitez surveiller.  En ce qui me concerne ce sera la station mesurant la hauteur de la Seine à Suresnes:
http://www.vigicrues.gouv.fr/niveau3.php?idstation=1316&idspc=7&typegraphe=h&AffProfondeur=24&AffRef=auto&AffPrevi=non&nbrstations=0&ong=2
  • Ouvrir ensuite Google Drive et créer une nouvelle feuille de calcul.

  • Comme vous l’aurez certainement remarqué, le données numériques du site Vigicrues sont en séparateur décimal ‘point’ et non ‘virgule’.  Pour récupérer correctement les données, l’astuce consiste à changer les paramètres par défaut de la feuille de calcul afin de sélectionner les paramètres régionaux du “Royaume-Uni”.
  • Dans la cellule A1 on écrira la formule suivante :
=ImportHtml("http://www.vigicrues.gouv.fr/niveau3.php?idstation=1316&idspc=7&typegraphe=h&AffProfondeur=24&AffRef=auto&AffPrevi=non&nbrstations=0&ong=2&"& year(now()) & month(now()) & day(now()) & hour(now()) & minute(now());"table";01)
  • Appuyez sur Entrée et c’est fini pour cette étape.

Facile non?

On utilise ici la formule “ImportHtml” qui permet de brancher dans une feuille de calcul Google Drive, une page Web et plus particulièrement en ce qui nous concerne le 1er tableau HTML de la page concernant la station de Suresnes sur le site Vigicrues.

Le type de données (tableau) et le tableau à récupérer est précisé par les mots :

"table";01)

Vous remarquerez qu’à la fin de l’URL correspondante aux données de la Suresnes, j’ai rajouté les mots suivants:

& year(now()) & month(now()) & day(now()) & hour(now()) & minute(now())

Cela permet de forcer le rafraîchissement de la feuille de calcul sans que l’on ait rien de plus à faire.  Sans cette astuce les données ne se mettent pas forcément à jour lorsqu’on les consulte par la suite.  Ils viennent rajouter à l’URL la date et l’heure courante et n’interfèrent pas avec la “vrai” URL.

De la feuille de calcul au fichier XML

La feuille de calcul est prête, les données à récupérer sont branchées.  Il faut les convertir au format XML.  Là encore Google Drive propose une manière simple de permettre cela.

  • Aller dans le menu Fichier => Publier sur le Web

  • Paramétrer votre feuille de calcul pour qu’elle puisse être vue via Internet au format RSS

Notez bien l’URL en bas de cet écran c’est celle qui sera à renseigner dans votre serveur domotique.

Du fichier XML au serveur domotique

Le travail préparatoire est fait.  Il ne vous reste plus qu’à utiliser les données ainsi transformées dans votre serveur domotique.

Sur une eedomus vous pourrez définir un Capteur HTTP de la manière suivante:

La requête aura comme URL celle de votre document feuille de calcul présenté au format RSS (XML).

Le chemin XPath à spécifier sera a suivant:

 substring-after(/rss/channel/item/description,': ')

Conclusion

Cette méthode est très simple à utiliser.  La petite astuce qui consiste à rajouter la date et l’heure à l’URL de la page Web à surveiller permet d’assurer un rafraîchissement automatique de la donnée.  Ici la donnée était présentée “correctement” pour notre besoin à savoir dans l’ordre chronologique décroissant.  Si ça n’avait pas été le cas le travail aurait été un peu plus long.

Lorsque vous prenez les données de Vigicrue, pensez à prendre une profondeur de 24 heures au moins.  En ce qui concerne Suresnes les données sont mises à jour au mieux 3 fois par jour.  Lors de ces 3 fois ce sont plusieurs points qui sont rendus publiques.  L’idéal aurait été que les relevés horaires soient communiqués toutes les heures.  En effet à cause de cela, la courbe ne sera pas bien lisse et présentera des paliers.  Si votre besoin est de prendre connaissance du dernier relevé et non pas de retracer tout l’historique heure par heure, le contrat est rempli.

Quitter la version mobile