[***] Script pour récupérer la météo sur google.

Solution Ă  base d'un PC et du logiciel Homeseer. Vous trouverez ici les tutos, les discussions sur les plugs-in et les scripts Ă  base de VBasic, ASP, VBScript, etc

[***] Script pour récupérer la météo sur google.

Messagede boboss » 06 DĂ©c 2010, 22:07

Hello

Voici un petit script qui permet de récupérer la météo sur google.
Je tiens Ă  remercier CĂ©dric pour son aide.
Ma solution est une solution alternative Ă  celle de CĂ©dric qui utilise les modules de domotics.
Ici il suffit de créer un évent toutes les heures par exemple.
Avant tout il faut créer les devices W41 à W49 comme sur l'image ci-dessous.
Ensuite vous recherchez la ville qui correspond à votre situation géographique: par exemple

http://www.google.fr/ig/api?weather=Rouen
Vous devez obtenir le fichier xml dans votre navigateur.


Image

Code: Tout sélectionner
Sub main()

dim i

Set xmlDoc=CreateObject("Microsoft.XMLDOM")
xmlDoc.Async="false"
xmlDoc.Load("http://www.google.fr/ig/api?weather=Rouen")

For Each conditionElement In xmlDoc.selectNodes("/xml_api_reply/weather/current_conditions")
temp_act=conditionElement.selectSingleNode("temp_c").Attributes.getNamedItem("data").Text
humidity=conditionElement.selectSingleNode("humidity").Attributes.getNamedItem("data").Text
wind=conditionElement.selectSingleNode("wind_condition").Attributes.getNamedItem("data").Text

hs.SetDeviceString "W43", temp_act&"°C", TRUE
hs.SetDeviceString "W44", humidity, TRUE
hs.SetDeviceString "W45", wind, TRUE
next
set conditionElements = xmlDoc.selectNodes("/xml_api_reply/weather/forecast_conditions")
If conditionElements.length > 0 Then
      low = conditionElements(0).selectSingleNode("low").Attributes.getNamedItem("data").Text
      high = conditionElements(0).selectSingleNode("high").Attributes.getNamedItem("data").Text
      hs.SetDeviceString "W41", low &"°C", TRUE
      hs.SetDeviceString "W42", high &"°C", TRUE
 
End If

i=46
For Each conditionElement In xmlDoc.selectNodes("/xml_api_reply/weather/forecast_conditions")

      condition=conditionElement.selectSingleNode("condition").Attributes.getNamedItem("data").Text
      icon=conditionElement.selectSingleNode("icon").Attributes.getNamedItem("data").Text
      mini=conditionElement.selectSingleNode("low").Attributes.getNamedItem("data").Text
      max=conditionElement.selectSingleNode("high").Attributes.getNamedItem("data").Text
      lien="http://www.google.fr"&icon

      hs.SetDeviceString "W"&Cstr(i), "<img src='" & lien & "' align=absmiddle>" & " "&condition , TRUE

      i=i+1
Next

Set xmlDoc=Nothing

end sub


Si le fichier xml vous convient, vous modifiez la ligne 7
Vous lancez l'event et les devices sont Ă  jour.

On pourrait récupérer aussi les temp max et min et les afficher dans les devices
mais je n'ai pas encore trouvé la solution.
Si quelqu'un à une idée je suis preneur.

Voilà j'espère avoir été clair.
Bon courage.

Boboss
Boboss
Homeseer+Plugin RFXCOM
Roomba - Tondeuse Husqvarna
CM15-X10 - eeepc - plugwises
Avatar de l’utilisateur
boboss
Guru de domotique
 
Messages: 116
Inscription: 13 Avr 2008, 23:40
Localisation: Pays de Caux

Messagede nolive » 06 DĂ©c 2010, 23:32

5' pour l'installer. Adopté ! :D

Un grand Merci. Au passage, je découvre le parser de microsoft... :D
nolive
---------------
eedomus - Raspberry Pi B (OpenElec) + Raspberry Pi B (Heyu avec CM11 et RFXCOM) - modules Zwave
Squeezebox Radio + Duet et Touch... Caméras IP (4 Foscam et 2 Axis) NAS Synology DS207+ et DS213+
ROOMBA 560
nolive
Modérateur
 
Messages: 741
Inscription: 21 Jan 2005, 00:32
Localisation: banlieue parisienne (78)

Messagede cedriclocqueneux » 07 DĂ©c 2010, 08:53

Bravo, une belle utilisation du parser, en effet !

Sinon, pour afficher les températures dans les prévisions (je viens juste de voir ton message, désolé), j'ai ce code html:

Code: Tout sélectionner
<table border='0'><tr><td rowspan='3'><IMG SRC='http://www.google.fr" & ADRESSE_DE_LIMAGE & "'</td><td>" & CONDITION_METEO & "</td></tr><tr><td>Max. " &  TEMPERATURE_MAXIMALE & "</td></tr><tr><td>Min. " &  TEMPERATURE_MINIMALE & "</td></tr></table>"


Avec ca, tu devrais réussir à faire ce que tu veux.

Au passage, est ce que ca te pose un problème si je reprend ton script pour l'ajouter sur mon blog, afin de présenter deux versions, une pour le framework, l'autre sans ? (en te citant, bien sûr ;-) )
Avatar de l’utilisateur
cedriclocqueneux
Dieu de domotique
 
Messages: 1516
Inscription: 02 Jan 2007, 21:18
Localisation: Chaon (Loire et Cher)

Messagede boboss » 07 DĂ©c 2010, 10:04

Merci CĂ©dric

Tu peux le mettre sur ton blog sans soucis. Il faut partager.
Je vais tester tes lignes de code
@+
Boboss
Homeseer+Plugin RFXCOM
Roomba - Tondeuse Husqvarna
CM15-X10 - eeepc - plugwises
Avatar de l’utilisateur
boboss
Guru de domotique
 
Messages: 116
Inscription: 13 Avr 2008, 23:40
Localisation: Pays de Caux

Messagede MicroFire » 07 DĂ©c 2010, 13:19

Excellente solution et simple Ă  mettre en place, Merci.
Serveur Domotique: eedomus - Zwave: Aeon Labs, Düwi, Everspring, Fibaro - RFXCOM: Oregon - Consommation EDF:Téléinfo USB
Serveur NAS: xpenology

Blog domotique: WebDeveloppement
@ + MicroFire
Avatar de l’utilisateur
MicroFire
Dieu de domotique
 
Messages: 266
Inscription: 19 Sep 2006, 16:36
Localisation: Arcachon (Sud-Ouest 33)

Messagede fselan » 07 DĂ©c 2010, 19:40

Merci Boboss pour le partage, testé et adopté.... tu devrais le mettre aussi dans la rubrique adhoc "Les scripts pour la domotique
"... :wink:
Avatar de l’utilisateur
fselan
Dieu de domotique
 
Messages: 393
Inscription: 09 Mai 2006, 21:25
Localisation: Rouen -Normandie

Messagede bullby » 07 DĂ©c 2010, 23:25

Salut Ă  tous,

Tout d'abord merci pour ce script qui est génial.
C'est ce que je recherchais depuis un moment.

A quand l'intégration des temperatures dans les previsions grace au scipt de Cedric ?
Et j'ai une autre suggestion, est il possible de mettre les jours des previsions ? En fait cela servirai beaucoup pour une integration dans HSTOUCH.

En tous cas super travail et vivement les evolutions ...

A+
bullby
P'tit Guru de domotique
 
Messages: 57
Inscription: 24 Oct 2010, 09:01

Messagede boboss » 07 DĂ©c 2010, 23:41

Voici le script avec l'affichage des valeurs max et min.
Merci Ă  CĂ©dric

Image

Code: Tout sélectionner
Sub main()

dim i

Set xmlDoc=CreateObject("Microsoft.XMLDOM")
xmlDoc.Async="false"
xmlDoc.Load("http://www.google.fr/ig/api?weather=Rouen")

For Each conditionElement In xmlDoc.selectNodes("/xml_api_reply/weather/current_conditions")
temp_act=conditionElement.selectSingleNode("temp_c").Attributes.getNamedItem("data").Text
humidity=conditionElement.selectSingleNode("humidity").Attributes.getNamedItem("data").Text
wind=conditionElement.selectSingleNode("wind_condition").Attributes.getNamedItem("data").Text

hs.SetDeviceString "W43", temp_act&"°C", TRUE
hs.SetDeviceString "W44", humidity, TRUE
hs.SetDeviceString "W45", wind, TRUE
next
set conditionElements = xmlDoc.selectNodes("/xml_api_reply/weather/forecast_conditions")
If conditionElements.length > 0 Then
      low = conditionElements(0).selectSingleNode("low").Attributes.getNamedItem("data").Text
      high = conditionElements(0).selectSingleNode("high").Attributes.getNamedItem("data").Text
      hs.SetDeviceString "W41", low &"°C", TRUE
      hs.SetDeviceString "W42", high &"°C", TRUE
 
End If

i=46
For Each conditionElement In xmlDoc.selectNodes("/xml_api_reply/weather/forecast_conditions")

      condition=conditionElement.selectSingleNode("condition").Attributes.getNamedItem("data").Text
      icon=conditionElement.selectSingleNode("icon").Attributes.getNamedItem("data").Text
      mini=conditionElement.selectSingleNode("low").Attributes.getNamedItem("data").Text
      max=conditionElement.selectSingleNode("high").Attributes.getNamedItem("data").Text
      lien="http://www.google.fr"&icon
      hs.SetDeviceString "W"&Cstr(i), "<table border='0'><tr><td rowspan='3'><IMG SRC='" & lien & "'</td><td>" & condition & "</td></tr><tr><td>Max. " &  max & "</td></tr><tr><td>Min. " &  mini & "</td></tr></table>" , TRUE
     
      i=i+1
Next

Set xmlDoc=Nothing

end sub

Bonne utilisation
Boboss
:lol:
Boboss
Homeseer+Plugin RFXCOM
Roomba - Tondeuse Husqvarna
CM15-X10 - eeepc - plugwises
Avatar de l’utilisateur
boboss
Guru de domotique
 
Messages: 116
Inscription: 13 Avr 2008, 23:40
Localisation: Pays de Caux

Messagede Rycil » 07 DĂ©c 2010, 23:57

Merci pour ce script.

Petit problème sur HS Touch : lorsque je veux afficher le Status dans une boite texte, on perd les retours à la ligne.

le texte s'affiche comme cela : PluieMax. 3Min. 1

Merci.
Rycil
P'tit Dieu de domotique
 
Messages: 164
Inscription: 28 AoĂ» 2009, 12:28

Messagede boboss » 08 DĂ©c 2010, 09:29

Salut Rycil

Je ne peux pas t'aider, je n'ai pas HS Touch. Désolé.

@+
Boboss
Homeseer+Plugin RFXCOM
Roomba - Tondeuse Husqvarna
CM15-X10 - eeepc - plugwises
Avatar de l’utilisateur
boboss
Guru de domotique
 
Messages: 116
Inscription: 13 Avr 2008, 23:40
Localisation: Pays de Caux

Messagede cedriclocqueneux » 08 DĂ©c 2010, 10:44

Rycil a Ă©crit:Merci pour ce script.

Petit problème sur HS Touch : lorsque je veux afficher le Status dans une boite texte, on perd les retours à la ligne.

le texte s'affiche comme cela : PluieMax. 3Min. 1

Merci.


Deux solutions, je dirai:
1. pour HStouch, déjà, je ne vois pas pourquoi se prendre la tête à récupérer les infos dans Homeseer, pour ensuite les afficher dans HStouch. La source de données utilisée ici est un flux xml, le plus simple serait donc d'ajouter directement dans HSTouch une source RSS pour afficher les données. C'est une fonction intégrée à HStouch qui fait cela très bien, qui met à jour les données dès qu'elles bougent, etc... Bref, simple et efficace.
2. si vraiment on veut afficher dans HStouch ces informations, d'abord traitées par Homeseer, je pense qu'il faudrait créer un device par information. Par exemple pour la prévision J, il faudrait un device pour l'image, un pour les conditions météo, un pour la température minimale, et un pour la maximale. Après dans Hstouch le positionnement de chaque information individuelle se fait facilement. il est très facile e modifier le script pour cela, mais les devices dans Homeseer vont se multiplier (19 devices, si je ne me trompe pas).

Pour la première solution, si vous ne savez pas comment procéder, je pourrai vous faire un petit tuto rapide, peut être ce midi.
Avatar de l’utilisateur
cedriclocqueneux
Dieu de domotique
 
Messages: 1516
Inscription: 02 Jan 2007, 21:18
Localisation: Chaon (Loire et Cher)

Messagede Rycil » 08 DĂ©c 2010, 10:54

Merci pour ce retour Cédric. Je débute dans l'univers HS / HSTouch. C'est puissant mais alors c'est quand même assez mal documenté je trouve.

J'avais vu un exemple succint de donnée météo utilisant un flux RSS dans HS Touch. En effet ça a l'air bien plus facile.

Je suis preneur d'un petit tuto, notamment pour récupérer le flux RSS à partir d'une source de données météo fiables française.

Merci.
Rycil
P'tit Dieu de domotique
 
Messages: 164
Inscription: 28 AoĂ» 2009, 12:28

Suivante

Retourner vers Homeseer

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 3 invités

Copyright © 2011 - Touteladomotique.com - Tous droits rĂ©servĂ©s
Les blogs partenaires : Abavala, Domo-Blog, Domotique34, Maison et Domotique


cron