J'ai plusieurs fois parlé des informations météo utilisées par le système domotique, mais je n'ai jamais vraiment présenté l'installation.
J'utilise donc une station météo semi professionnelle, qui peut être raccordée à un ordinateur, le plus souvent via un port série ou un port Usb. C'est la condition sine qua non si on veut pouvoir récupérer les informations sur l'ordinateur. C'est un peu plus cher que les stations météo généralement utilisées, mais l'utilité derrière ne sera pas la même !
I. Matériel
Personnellement, je suis équipé d'une station La Crosse Technology WS2307, que j'ai pu avoir pour une centaine d'euros.
Cette station est fournie avec plusieurs capteurs, dont un capteur de température et d'humidité extérieur, une jauge de pluie, et un anémomètre (pour la direction et la vitesse du vent).
Très complète, donc, cette station permet de relever ces informations:
- Température Intérieure
- Hygrométrie Intérieure
- Prévision Météo
- Pression Atmosphérique
- Température Extérieure
- Hygrométrie Extérieure
- Point de rosée
- Vitesse et Direction du vent
- Windchill (température ressentie)
- Précipitations
II. Installation
Afin de récupérer des données fiables, il faut correctement positionner les capteurs. En parcourant le web, on trouve de nombreux avis divergeant sur le sujet, certains préconisant une installation à hauteur d'homme (pour receuillir les informations réellement ressenties par une personne), d'autres préférant une hauteur d'environ 10m de haut (pour les informations sur la vitesse et la direction du vent).
Pour ma part, l'anémomètre est fixé sur le mat de mon antenne TV, qui doit être à environ 7-8m de haut.
Cela me permet de recueillir des informations suffisamment fiables, aucun obstacle ne venant perturber le vent qu'il peut y avoir (pas de voisinage trop prêt, ni d'arbres à cette hauteur).
La sonde de température / humidité, ainsi que le receuilleur de précipitations, ont été placés à la base du toit:
Ce côté de la maison est la plus grosse partie de la journée à l'ombre (une sonde exposée au soleil transmettra des informations erronées, car on parle toujours de température à l'ombre), et le recueilleur de précipitations est placé à un endroit où il ne peut pas hériter des précipitations d'autres éléments (eau qui tombe du toit, des arbres, etc…). Le tout reste à une hauteur facilement atteignable pour la maintenance (le recueilleur de pluie devant être nettoyé de temps à autre).
Ces capteurs peuvent être reliés entre eux par fréquence radio, mais j'ai opté pour une liaison filaire, cela permettant une transmission des infos plus régulière, et surtout une alimentation par la station météo (des piles sont nécessaires dans les capteurs si on utilise la transmission radio). Les cables passent simplement dans les combles et redescendent dans le garage jusqu'à l'armoire de brassage, où se situe la station météo, reliée au serveur domotique par un cable série.
III. Logiciel
J'utilisais au début le logiciel Heavy Weather fourni avec la station météo. Ce logiciel était assez lourd en mémoire, et très limité dans ses fonctions.
J'utilise maintenant depuis quelques mois le logiciel Cumulus, que j'ai présenté ici en détail, je ne reviendrai donc pas dessus. Disons simplement que ce logiciel permet de récupérer les informations de la station météo, et de les communiquer à divers sites web, comme Wunderground.
Ce logiciel génère également un petit fichier texte, que j'utilise pour afficher les informations météo dans l'interface de Homeseer.
Pour cela, j'utilise un petit script vbs qui est exécuté toutes les 30 min:
[sourcecode language=”vb”]
Option Explicit
#include ..\lib\framework_domotics.vbs
#include local-parameters.inc
Sub main
Dim astrBuffer
Dim tabLines
Dim tabValues
Dim astrDevices
Dim astrConfig
Dim atabDv
Dim astrNbDv
Dim i, l
Dim astrDevice
Dim astrparam1
Dim ligne, section, parametre, valeur
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:\Program Files\Cumulus\realtime.txt",False)
‘RÈcupÈration des infos de la station mÈtÈo LaCrosse
If (astrBuffer <> "") Then
tabLines = Split(astrbuffer,chr(13))
tabValues = split(tablines(ubound(tabLines)-1),chr(32))
End if
‘Correction des points en virgules
i = 0
While (i < = ubound(tabvalues))
tabvalues(i) = replace(tabvalues(i), ".",",")
i = i+1
Wend
‘DÈtermination de la saison en cours en fonction de la date du jour
if (DateDiff("d", date(), "20/03/" &amp; year(date())) > 0) then tabValues(0) = "Hiver"
if (DateDiff("d", date(), "20/03/" &amp; year(date())) =< 0) then tabValues(0) = "Printemps"
if (DateDiff("d", date(), "21/06/" &amp; year(date())) =< 0) then tabValues(0) = "EtÈ"
if (DateDiff("d", date(), "22/09/" &amp; year(date())) =< 0) then tabValues(0) = "Automne"
if (DateDiff("d", date(), "21/12/" &amp; year(date())) =< 0) then tabValues(0) = "Hiver"
‘Affectation des valeurs rÈcupÈrÈes aux bons devices
i = 0
While (i < = CInt(astrNbDv))
astrDevice = hs.GetINISetting("DEVICE", "HC", "", astrConfig & atabDv(i)) & _
hs.GetINISetting("DEVICE", "DC", "", astrConfig & atabDv(i))
astrparam1 = hs.GetINISetting("DEVICE", "PARAM1", "", astrConfig & atabDv(i))
If (astrparam1 = "PREVISION") Then
setDevice astrDevice, tabValues(1), "", ""
ElseIf (astrparam1 = "TENDANCE") Then
setDevice astrDevice, tabValues(18), "", ""
ElseIf (astrparam1 = "TEMPERATUREINTERIEURE") Then
setDevice astrDevice, tabValues(22) & "∞C", "", tabValues(22)*100
ElseIf (astrparam1 = "TEMPERATUREEXTERIEURE" and tabValues(2)<>"—") Then
setDevice astrDevice, tabValues(2) & "∞C", "", tabValues(2)*100
ElseIf (astrparam1 = "HUMIDITEINTERIEURE") Then
setDevice astrDevice, tabValues(23) & "%", "", tabValues(23)*100
ElseIf (astrparam1 = "HUMIDITEEXTERIEURE" and tabValues(6)<>"—") Then
setDevice astrDevice, tabValues(3) & "%", "", tabValues(3)*100
ElseIf (astrparam1 = "VITESSEVENT" and tabValues(5)<>"—") Then
setDevice astrDevice, tabValues(5) & " km/h", "", tabValues(5)*100
ElseIf (astrparam1 = "DIRECTIONVENT" and tabValues(11)<>"—") Then
setDevice astrDevice, tabValues(11), "", ""
ElseIf (astrparam1 = "PRECIPITATIONJOUR" and tabValues(9)<>"—") Then
setDevice astrDevice, tabValues(9) & " mm", "", tabValues(9)*100
ElseIf (astrparam1 = "PRESSION") Then
setDevice astrDevice, tabValues(10) & " hpa", "", tabValues(10)*100
ElseIf (astrparam1 = "PRECIPITATIONHEURE" and tabValues(47)<>"—") Then
setDevice astrDevice, tabValues(47) & " mm", "", tabValues(47)*100
ElseIf (astrparam1 = "TEMPERATURERESSENTIE" and tabValues(24)<>"—") Then
setDevice astrDevice, tabValues(24) & "∞C", "", tabValues(24)*100
ElseIf (astrparam1 = "POINTDEROSEE" and tabValues(4)<>"—") Then
setDevice astrDevice, tabValues(4) & "∞C", "", tabValues(4)*100
ElseIf (astrparam1 = "SAISON") Then
setDevice astrDevice, tabValues(0), "", ""
Else
WriteLog G_FOLDER_NAME, G_SCRIPT_EVT, G_TIV_INF, "PARAM1 is unknown for " & astrDevice, G_LOG_FILE
End if
i = i+1
Wend
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
[/sourcecode]
IV. Prévisions météo
V. Conclusion