Review

Quitte à avoir une station météo semi pro à la maison, je me suis dit qu’il pourrait être sympa de partager ces infos avec qui le voudra, notamment des personnes du village.

Au départ, j’avais utilisé un soft fourni avec ma station météo, qui génére une image contenant les infos météo, et l’envoi sur un FTP. Mais niveau temps de réponse, ce n’était pas ca.

Puis j’ai découvert l’API de Wunderground qui permet de collecter les infos des stations météo personnelles.

Il suffit d’appeler une adresse HTTP contenant les données en paramètres, de cette forme:

http://weatherstation.wunderground.com/weatherstation/updateweatherstation.php?ID=IDENTIFIANTSTATIONPERSO&PASSWORD=PASSWORD&dateutc=2009-03-02+10%3A32%3A35&winddir=230&windspeedmph=12&windgustmph=12&tempf=70&rainin=0&baromin=29.1&dewptf=68.2&humidity=90&weather=&clouds=&softwaretype=vws%20versionxx&action=updateraw

J’ai réalisé un petit script vbs très simple, qui récupère les infos de la station météo LaCrosse Technologie WS2307, construit l’adresse HTTP avec les variables, et l’envoi à Wundergound. Si ca intéresse certains, voici le script (à adapter selon les beoins, car il est configuré ici pour être lancé par Homeseer):

 

Option Explicit

 #include ..\lib\framework_domotics.vbs

 #include local-parameters.inc

 Sub main

 Dim astrBuffer

 Dim tabLines

 Dim tabValues(14)

 Dim astrDevices

 Dim astrConfig

 Dim atabDv

 Dim astrNbDv

 Dim i, l

 Dim astrDevice

 Dim astrparam1

Dim ligne, section, parametre, valeur, requete, result, jour, mois, annee, daterequete

jour = right(date,2)

 annee = left(date,4)

 mois = mid(date,6,2)

daterequete = annee & "-" & mois & "-" & jour

WriteLog G_FOLDER_NAME, G_SCRIPT_EVT, G_TIV_INF, "Launching " & G_FOLDER_NAME & " script", G_LOG_FILE

 If CheckDevices(G_FOLDER_NAME, G_FILE_INI, G_STATUS_EXIST) Then

 astrDevices         = hs.GetINISetting("COMMON","DEVICES","", G_FILE_INI)

 astrConfig          = hs.GetINISetting("COMMON","CONFIG","..\scripts\config\", G_FILE_INI)

 atabDv                 = Split(astrDevices, G_SEP)

 astrNbDv             = UBound(atabDv)

astrBuffer = loadfile("C:\HeavyWeather\currdat.lst",False)

'Rcupration des infos de la station mto LaCrosse

 If (astrBuffer <> "") Then

 tabLines = Split(astrbuffer,chr(13))

 l = 0
 While (l < = ubound(tabLines))

 If (Mid(tabLines(l),2,1) = "[") Then

 section = Mid(tabLines(l),3,Len(tabLines(l))-3)

 Else
 If (Instr(tabLines(l),"=")) > 0 Then

 parametre = Mid(tabLines(l),2,Instr(tabLines(l),"=")-3)

valeur = Replace(Mid(tabLines(l),Instr(tabLines(l),"=")+2),Chr(34),"")

If (section = "weather_picture" And parametre = "number") Then

 If (valeur = 0) Then tabValues(1) = "Pluvieux"

 If (valeur = 1) Then tabValues(1) = "Nuageux"

 If (valeur = 2) Then tabValues(1) = "Ensoleill"

 End If

 If (section = "weather_tendency" And parametre = "number" ) Then

 If (valeur = 0) Then tabValues(2) = "Stable"

 If (valeur = 1) Then tabValues(2) = "Hausse"

 If (valeur = 2) Then tabValues(2) = "Baisse"

 End If

 If (section = "indoor_temperature"  And parametre = "deg_F"  ) Then tabValues(3) = valeur

 If (section = "outdoor_temperature" And parametre = "deg_F"  ) Then tabValues(4) = valeur

 If (section = "indoor_humidity"     And parametre = "percent") Then tabValues(5) = valeur

 If (section = "outdoor_humidity"    And parametre = "percent") Then tabValues(6) = valeur

 If (section = "wind_speed"          And parametre = "mph"    ) Then tabValues(7) = valeur

 If (section = "wind_direction"      And parametre = "deg"   ) Then tabValues(8) = valeur

 If (section = "rain_24h"            And parametre = "inch"     ) Then tabValues(9) = valeur

 If (section = "pressure_relative"   And parametre = "inHg"    ) Then tabValues(10)  = valeur

 If (section = "rain_1h"              And parametre = "inch"     ) Then tabValues(11)  = valeur

 If (section = "windchill"             And parametre = "deg_F"  ) Then tabValues(12)  = valeur

 If (section = "dewpoint"             And parametre = "deg_F"  ) Then tabValues(13)  = valeur

 End If

 End If

 l = l+ 1

 Wend
End if

'Envoi des infos  Wunderground

requete = "http://weatherstation.wunderground.com/weatherstation/updateweatherstation.php?ID=ICENTREV2&PASSWORD=0611346045&dateutc=" & daterequete & "+1%3A32%3A35&winddir=" & tabValues(8) & "&windspeedmph=" & tabValues(7) & "&windgustmph=0&tempf=" & tabValues(4) & "&rainin=" & tabValues(11) & "&dailyrainin=" & tabValues(9) & "&baromin=" & tabValues(10) & "&dewptf=42.0&humidity=" & tabValues(6) & "&weather=&clouds=&softwaretype=Heavy%20WeatherStation&action=updateraw"

result = hs.URLAction(requete, "GET", "", "")

WriteLog G_FOLDER_NAME, G_SCRIPT_EVT, G_TIV_INF, "Envoi des donnes a Wunderground:" & result, G_LOG_FILE

Else
 WriteLog G_FOLDER_NAME, G_SCRIPT_EVT, G_TIV_SEV, "Expected Device is unknown !", G_LOG_FILE

 End if

 WriteLog G_FOLDER_NAME, G_SCRIPT_EVT, G_TIV_INF, "End of the script", G_LOG_FILE

 End sub

 

Une fois recues les infos, Wunderground traite les données pour construire des graphiques, des stats, et mettre à disposition des gadgets pour Vista, Google, ou n’importe quel site web.

Tout est là: http://www.wunderground.com/weatherstation/WXDailyHistory.asp?ID=ICENTREV2

Au final, de meilleurs temps de réponse pour ceux qui souhaient consulter les données, et la possibilité de consulter l’historique !



A propos de l'auteur

Cédric Locqueneux
Cédric Locqueneux
Je me suis essayé à la domotique il y a quelques années avec quelques modules X10, quelques softs gratuits, etc… pour équiper la maison que j'avais en location. Puis j'ai eu la chance de pouvoir faire construire, et c'est là que mes projets domotiques ont explosé, la construction neuve me permettant de prévoir une installation complète, et intégrée à la maison. Aujourd'hui, quasiment toute mon installation repose sur le Z-Wave.