par Sam Utley | Mis à jour le : 03/23/2016 | Commentaires : 10
Au fil des ans, vous avez peut-être lu un certain nombre de commentaires et solutions postés sur le Forum des utilisateurs de Campbell Scientific au sujet de Weather Underground PWS (Station météo personnelle). Dans cet article, je vais vous montrer comment publier vos données directement à partir d'une centrale de mesure et de contrôle CR6 connectée au site Internet Weather Underground PWS.
Weather Underground est un service qui fournit des observations et des prévisions météorologiques sur Internet. Leurs données utilisent les informations recueillies auprès de nombreuses sources, y compris plus de 180 000 stations météorologiques personnelles.
Weather Underground fournit un protocole relativement simple basé sur le Web pour le téléchargement de données à partir d'une station météo automatique (SMA). Leur protocole est beaucoup plus simple à utiliser que de nombreux autres services hébergés que vous trouverez sur Internet. Le protocole Weather Underground ne nécessite qu'une simple requête HTTP GET avec la station, l'utilisateur et les informations du capteur intégré dans l'URL. Ce type de communication peut être assez facile à réaliser pour une centrale d'acquisition de données de Campbell Scientific, comme un CR6, en utilisant l'instruction HTTPGet() et quelques instruction de traitement de chaîne de caractères.
Recommandé pour vous : Pour obtenir des informations plus détaillées sur le protocole, lire “PWS – Upload Protocol” wiki entry. |
Il y a un certain nombre de stations météorologiques personnelles à base de Campbell Scientific en opération aujourd'hui. Un exemple est KUTNORTH6, qui est détenue et exploitée par un employé de Campbell Scientific à Logan, Utah. Du site web Weather Underground, vous pouvez consulter le tableau de bord de la SMA KUTNORTH6, qui est un exemple de ce que vos données pourraient ressembler après les avoir publiées.
Pour commencer, vous devez vous assurer que vous vous êtes enregistré sur Weather Underground, pour créer une page PWS, et notez l'ID de votre station PWS etle mot de passe de votre compte. (Actuellement, le compte de base est gratuite sur leur site.)
La meilleure façon de créer votre programme de la station météo est d'utiliser l'éditeur de programme Short Cut pour Windows. Voici un exemple de programme que j'ai créé qui comprend des mesures pour la vitesse du vent, la direction du vent, la température de l'air et de l'humidité relative :
Public WindSpeed_MPH, WindDir, TRHData(2)
Alias TRHData(1) = AirTemp_F, RH
BeginProg
Scan(1,Min,1,0)
'mesure du 05103 vitesse et direction du vent;
'puis mesure de la sonde cs215 temp/RH en SDI-12;
PulseCount(WindSpeed_MPH,1,U4,5,1,0.2192,0)
BrHalf(WindDir,1,mV5000,U2,U1,1,2500,True,20000,60,355,0)
If WindDir>=360 Or WindDir<0 then="" winddir="0<br"> SDI12Recorder(TRHData(),C1,"0","M!",1,0)
AirTemp_F=AirTemp_F*1.8+32
NextScan
EndProg
Télécharger le fichier wunderground.dld file, et charger le sur le lecteur CPU de votre enregistreur de données. Vous référencez ce fichier dans votre programme en utilisant l'instruction Include(). (Sinon, vous pouvez copier le contenu du fichier dans votre programme avant la déclaration BeginProg. Dans cet exemple, cependant, je vais utiliser l'instruction Include().)
Note : Dans le fichier wunderground.dld que vous avez téléchargé précédement, il y a une instruction qui se nomme wundergroundPWS(). En utilisant Include "CPU:wunderground.dld" permet de rendre l'instruction wundergroundPWS() disponible pour son utilisation dans le programme CRBasic.
Vous aurez besoin de déclarer un tableau qui passera vos données dans l'instruction wundergroundPWS(). Les données de ce tableau sont organisées dans un ordre très spécifique, qui doit être suivie.
Le tableau de données météo peut contenir de 1 à 30 données qui peuvent inclure ceux de la liste suivante. Pour notre exemple, nous avons seulement besoin d'utiliser un sous-ensemble du tableau des données météorologiques. Donc, j'ai déclaré un tableau dans notre exemple à une taille de 11(Dim WxData(11)), ce qui en fait un tableau assez grand pour me permettre de préciser nos mesures de direction du vent, de vitesse du vent, d'humidité relative, et de température de l'air instantanées.
Conseil : Si vous êtes intéressé par l'affichage des données de la qualité d'air, l'instruction wundergroundPWS() prend également en charge un second tableau de données destiné à la qualité de l'air. Le contenu et l'ordre du second tableau peut être trouvé à l'intérieur du fichier wunderground.dld que vous avez téléchargé. Alternativement, vous pouvez trouver l'information dans la section pollution PWS wiki entry.
L'instruction wundergroundPWS() accepte un certain nombre de paramètre :
Si vous deviez inclure tous les paramètres, l'instruction ressemblerait à ceci :
Call wundergroundPWS(Result,ID,Pass,Weather,AirQual,Timestamp,UTCOffset,ServerResponse)
La dernière étape pour poster vos données sur le site Weather Underground est de mettre les données dans un tableau et d'appeler l'instruction wundergroundPWS().
Conseil : Vous pouvez utiliser l'instruction TimeIntoInterval() afin de contrôler la fréquence des données à afficher sur Internet.
Lorsque vous avez terminé les étapes, votre programme pourrait ressembler à cela :
'include the contents of wunderground.dld
'that has been placed on the datalogger cpu drive
Include "CPU:wunderground.dld"
Dim WxData(11)
Public Result
Public WindSpeed_MPH, WindDir, TRHData(2)
Alias TRHData(1) = AirTemp_F, RH
BeginProg
Scan(1,Min,1,0)
'measure 05103 windspeed and direction;
'then measure cs215 temp/RH probe with SDI-12;
PulseCount(WindSpeed_MPH,1,U4,5,1,0.2192,0)
BrHalf(WindDir,1,mV5000,U2,U1,1,2500,True,20000,60,355,0)
If WindDir>=360 Or WindDir<0 then="" winddir="0<br"> SDI12Recorder(TRHData(),C1,"0","M!",1,0)
AirTemp_F=AirTemp_F*1.8+32
If TimeIntoInterval(0,10,Min) Then
'initialize array with NAN;
'then populate with data;
'then call our instruction
WxData() = NAN
WxData(1) = WindDir
WxData(2) = WindSpeed_MPH
WxData(9) = RH
WxData(11) = AirTemp_F
Call wundergroundPWS(Result,"stationID","password",WxData,0)
EndIf
NextScan
EndProg
En utilisant le fichier wunderground.dld avec l'instruction wundergroundPWS(), ainsi que l'instruction CRBasic Include(), maintenant, j'espère que vous êtes en mesure d'afficher correctement vos données sur le site Weather Underground. Si cela est utile pour vous, vous pouvez copier cet exemple de programme.
Assurez-vous d'afficher votre ID de station ci-dessous, nous pourrons voir l'affichage de vos données. Faites-nous partager vos remarques, n'hésitez pas à poser des questions.
Commentaires
IslandMan | 12/15/2016 at 11:42 AM
Thanks Sam.
Link to my weather station.
https://www.wunderground.com/us/ny/kings-park/zmw:11754.1.99999?MR=1
gonzalig | 03/29/2017 at 10:53 AM
Sam
I thanks you for this post, Its really helpful. The sub was working great in my CR1000 Ver 30 until I upgrade OS to 32. Now the part for the UTC has commands that don’t compile under the new OS.
Can you help?
GaryTRoberts | 03/29/2017 at 01:00 PM
gonzalig,
Thank you for finding and reporting this bug. We have fixed it and it will be part of a bug fix release we are planning in the very near future. The fix will be included in CR6 OS 06.03 and CR1000/CR800/CR3000 OS 31.03.
gonzalig | 03/31/2017 at 10:41 AM
GaryTRoberts
Yes, I meant I upgraded to 31.02. I´ll look forward to get the new OS.
Perhaps it’s not as popular but is there a post like this to help us send data to CWOP / MADIS? Your colleagues from Au already help some, but not all the times my data gets received by MADIS.
cellectronic | 11/17/2017 at 11:49 AM
Hi Guys,
I am wondering if the bugs got sorted ? I have an error when trying to compile and the offending line is
Call wundergroundPWS(Result,"stationID","password",WxData,0)
with the error Undeclared variable Result,, Any ideas anyone ? Please.
uplander | 11/28/2017 at 11:42 AM
This sounds like your program needs to have the variable 'result' declared. Add the following line to the other Public declarations at the beginning of your program:
Public Result
José Miguel Campillo Anguita | 07/04/2018 at 09:16 AM
hola muy buenas tardes utedes podrian poner ejemplos de programas para wunderground de los siguientes variables promediadas
3 Wind Gust en millas por hora, calculado durante un período definido por el usuario
4 Dirección de la ráfaga de viento en grados, calculada durante un período definido por el usuario
5 2 minutos Velocidad del viento promedio en mph
6 Dirección del viento promedio de 2 minutos en grados
7 10 minutos de ráfaga de viento en mph
8 10 minutos de dirección de ráfaga de viento en grados
16 Precipitación por hora en pulgadas
17 Lluvia diaria en pulgadas
ksandilands | 11/29/2018 at 03:01 PM
Thanks for doing this blog post!
Do we need to change anthing in the dld file before we load it to the logger's CPU? I just copied the text from the link to a new text file and called it "wuderground.dld"
I am using a CR1000, and the value I get for result is: -2 which whe I look in the .dld file means connected but not successful, did not receive "200 OK" from server and no data appear on my PWS.
any suggestions?
Robin D | 11/30/2018 at 11:19 AM
Thanks for your question. Unfortunately, our experts on this topic are out of the office currently. As soon as we have the answer for you, we'll post it. Thanks for your patience.
GaryTRoberts | 12/10/2018 at 02:32 PM
Ksandilands,
You should not have to make any changes to the DLD file. Just place it on the CPU and make sure to reference it in your program using "Include". As for the -2 error, it something is amiss with the information being sent to the server. If you make this lines in the include file Public instead of Dims, they can help us get a clue as to what WeatherUndergrounds server isn't liking:
Dim http_get_head As String * 500
Dim http_get_resp As String * 50
Dim http_get_uri As String * 1100
It would be good to set what http_get_uri, http_get_head, and http_get_response say after the failer. We can then go from there.
Please log in or register to comment.