[***] 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

Messagede bullby » 08 DĂ©c 2010, 12:18

cedriclocqueneux a Ă©crit:
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.


Salut CĂ©dric,

Je suis preneur d'un petit tuto pour la 1ere solution car je débute dans HSTOUCH et ca m'aiderais bien. J'arrive à utiliser des flus RSS mais dans ca cas je n'y arrive pas donc je dois me planter quelque part (le flux RSS je suppose).
Merci d'avance.
bullby
P'tit Guru de domotique
 
Messages: 57
Inscription: 24 Oct 2010, 09:01

Messagede cedriclocqueneux » 08 DĂ©c 2010, 14:20

Argh, bon, petit imprévu ce midi, j'ai pas eu le temps de faire le tuto. Mais j'ai eu assez de temps pour tester dans HSDesigner, et m'appercevoir qu'en effet ce flux ne fonctionne pas. Ce n'est pas tout à fait la faute de Homeseer, mais plutot du flux xml, qui ne respecte pas les contraintes xml, puisqu'il y a des caractères spéciaux à l'intérieur (comme les accents :/)
Du coup HSDesigner balance un message d'erreur à cause de ces caractères :(
Faudrait peut ĂŞtre trouver un autre flux xml :/
Avatar de l’utilisateur
cedriclocqueneux
Dieu de domotique
 
Messages: 1516
Inscription: 02 Jan 2007, 21:18
Localisation: Chaon (Loire et Cher)

Messagede fabrex » 12 DĂ©c 2010, 16:27

Bonsoir,

Je suis preneur moi aussi que ce soit pour la solution 1 ou 2.

Merci d'avance CĂ©dric

Fabrice
fabrex
Dieu de domotique
 
Messages: 412
Inscription: 11 FĂ©v 2006, 21:45

Messagede jimwest » 25 FĂ©v 2011, 00:19

bonsoir,

en exécutant le script, j'ai ce message d'erreur ci-dessous, quelqu'un aurait une solution ?

Merci

Script compile error: Les instructions d'assignation 'Let' et 'Set' ne sont plus prises en charge.on line 18

Option Strict Offimports Schedulerimports SystemPublic Module scriptcode2#Region "Automatically generated code, do not modify"'Automatically generated code, do not modify'Event Sources Begin Public WithEvents hs As Scheduler.hsapplication Public WithEvents hsp As scheduler.hsp Public WithEvents hssystem As scheduler.phone0'Event Sources End'End of automatically generated code#End RegionSub main() dim iSet xmlDoc=CreateObject("Microsoft.XMLDOM")xmlDoc.Async="false" xmlDoc.Load("http://www.google.fr/ig/api?weather=Douai") 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 Ifi=46For 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), "
jimwest
P'tit Dieu de domotique
 
Messages: 155
Inscription: 12 Avr 2010, 11:17
Localisation: france - nord (59)

Messagede jimwest » 25 FĂ©v 2011, 00:34

re

pour essayer de résoudre tous les messages d'erreurs, j'ai modifié le script de cette manière :

Code: Tout sélectionner
Sub main()

dim i
dim xmlDoc as object
dim conditionElement
dim conditionElements
dim temp_act
dim humidity
dim wind
dim low
dim high
dim condition
dim icon
dim mini
dim max
dim lien

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

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, TRUE)
hs.SetDeviceString ("W44", humidity, TRUE)
hs.SetDeviceString ("W45", wind, TRUE)
next
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, TRUE)
      hs.SetDeviceString ("W42", high, 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

xmlDoc=Nothing

end sub


j'ai maintenant cette erreur sur laquelle je sĂŞche

Running script meteo.vb :method not found
jimwest
P'tit Dieu de domotique
 
Messages: 155
Inscription: 12 Avr 2010, 11:17
Localisation: france - nord (59)

Messagede jmj » 25 FĂ©v 2011, 17:46

Bonjour
J'ai pris mon script j'ai mis Douai à la place de chez moi et ça à l'air de tourner essaie de voir :
Code: Tout sélectionner

Sub main()
 
dim i
dim dc

Set xmlDoc=CreateObject("Microsoft.XMLDOM")
   xmlDoc.Async="false"
   xmlDoc.Load("http://www.google.fr/ig/api?weather=Douai")
 
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Ă©rature actuelle: "& 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")
   
   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
     jour=conditionElement.selectSingleNode("day_of_week").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>" & jour & " " & condition  &"</td></tr><tr><td>Max. " &  max & "°C</td></tr><tr><td>Min. " &  mini & "°C</td></tr></table>" , TRUE
     
      i=i+1
Next

Set xmlDoc=Nothing

end sub



Compare avec ton code.
Il faut avoir créé à la main W44, 45 et 46 en virtual device, mais je suppose que tu l'as fait.
Il faut l'accès à Internet.
Et peut être as tu un Num de ligne après l'erreur dans le log pour savoir ou est le problème dans le script.

JMJ
jmj
Membre Actif
 
Messages: 13
Inscription: 04 Jan 2011, 16:58

Messagede jimwest » 25 FĂ©v 2011, 18:09

Merci, je vais essayer en rentrant ce soir

Cependant, je suis quasi sur qu'il va me dire que set et let ne sont plus pris en charge et que j'ai des variables nOn déclarées, par exemple conditionElement

Je suis sous seven avec la dernière version de .net, c'est peut être ça la différence ?
jimwest
P'tit Dieu de domotique
 
Messages: 155
Inscription: 12 Avr 2010, 11:17
Localisation: france - nord (59)

Messagede jmj » 25 FĂ©v 2011, 18:19

Je suis sous whs Vail 64 bits beta, dernière version de .net, plus à jour tu meurs, sur un petit proc et un petit disque pour limiter la conso...

Essaie de renommer le script "meteo.xml" pour qu'il soit bien interprété en tant que xml, je vois que tu l'as nommé "meteo.vb", le pb est peut être là !

JMJ
jmj
Membre Actif
 
Messages: 13
Inscription: 04 Jan 2011, 16:58

Messagede jimwest » 25 FĂ©v 2011, 19:08

impeccable, ça fonctionne, je ne savais pas que le script pouvait prendre l'extension xml

Merci beaucoup et bonne soirée
jimwest
P'tit Dieu de domotique
 
Messages: 155
Inscription: 12 Avr 2010, 11:17
Localisation: france - nord (59)

Messagede Virtek » 03 Mar 2011, 17:13

Bonjour a tous, j'ai bien suivi la procédure pour installer la météo de Google, ça marche très bien!
Une question cependant, est-il possible de changer les images un peu vieillottes du temps par d'autres plus sympa? et si oui, comment?

Merci d'avance ;o)
Virtek
Membre Actif
 
Messages: 11
Inscription: 03 Mar 2011, 17:08

Messagede jimwest » 03 Mar 2011, 18:36

à mon avis, ça doit se faire dans ces lignes là
icon=conditionElement.selectSingleNode("icon").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></table>" , TRUE

Il faut certainement que tu fasses en sorte que la variable lien pointe sur tes images
jimwest
P'tit Dieu de domotique
 
Messages: 155
Inscription: 12 Avr 2010, 11:17
Localisation: france - nord (59)

Messagede Virtek » 03 Mar 2011, 21:09

Ok, merci beaucoup pour ta réponse jimwest, je te tiens au courant dès que j'aurai le temps de tester.

++
Virtek
Membre Actif
 
Messages: 11
Inscription: 03 Mar 2011, 17:08

PrécédenteSuivante

Retourner vers Homeseer

Qui est en ligne

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

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