5 Étapes pour poster vos données CR6 sur Weather Underground

par Sam Utley | Mis à jour le : 03/23/2016 | Commentaires : 10

Les thèmes principaux du Blog


Recherche sur le Blog


Langages du blog

English
Français (French)


Abonnez-vous au Blog

Recevez un courriel lorsqu'un nouvel article est posté. Choisissez les sujets qui vous intéressent le plus.


Entrez votre adresse courriel :



Suggérer un article

Y a-t-il un sujet que vous souhaiteriez nous voir aborder ? Laissez-nous un message.

Leave this field empty

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.

Contexte

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.

#1 - Créer un compte

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.)

#2 - Créer le programme de votre station météorologique

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

#3 - Téléchargement du fichier

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().)

#4 - Déclarer un tableau

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.

  • C'est possible d'avoir un tableau plus petit que sa taille maximale.
  • Il est possible de ne pas inclure toutes les informations.
  • Lorsque vous incluez les informations, il faut le faire dans un ordre très précis.

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.

  1. Instantaneous Wind Speed in miles-per-hour
  2. Instantaneous Wind Direction in degrees
  3. Wind Gust in miles-per-hour, calculated over a user-defined period
  4. Wind Gust Direction in degrees, calculated over a user-defined period
  5. 2 minute Average Wind Speed in mph
  6. 2 minute Average Wind Direction in degrees
  7. 10 minute Wind Gust in mph
  8. 10 minute Wind Gust Direction in degrees
  9. Percent Relative Humidity
  10. Dew Point Temperature in deg F
  11. Air Temperature #1 in deg F
  12. Air Temperature #2 in deg F
  13. Air Temperature #3 in deg F
  14. Air Temperature #4 in deg F
  15. Air Temperature #5 in deg F
  16. Hourly Rainfall in inches
  17. Daily Rainfall in inches
  18. Barometric Pressure in inches
  19. Soil Temperature #1 in deg F
  20. Soil Temperature #2 in deg F
  21. Soil Temperature #3 in deg F
  22. Soil Temperature #4 in deg F
  23. Soil Temperature #5 in deg F
  24. Percent Leaf Wetness #1
  25. Percent Leaf Wetness #2
  26. Solar Radiation in Watts/m2
  27. UV Index
  28. Visibility
  29. Indoor Temperature in deg F
  30. Indoor Percent Relative Humidity

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 :

  1. Le premier paramètre est la variable pour laquelle un code de résultat est placé. Ce code indique si le poste a réussi ou non.
  2. Le deuxième paramètre est la station ID PWS comme une chaîne de caractères entre guillemets.
  3. Le troisième paramètre est votre mot de passe comme une chaîne de caractères entre guillemets.
  4. Les quatrième et cinquième paramètres sont les tableaux qui contiennent vos données météorologiques et de qualité de l'air. Si vous n'utilisez pas l'un ou l'autre, il suffit d'entrer un zéro.
  5. Il y a aussi trois paramètres optionnels que la plupart des utilisateurs n'utilisent pas, et ils ne sont pas utilisés dans notre exemple. Ces paramètres facultatifs sont utilisés pour spécifier l'horodatage des données en termes de secondes-depuis 1990, le décalage UTC souhaité (différence en heures et minutes entre le temps universel coordonné et le fuseau horaire de votre lieu de mesure), et un diagnostic sur la chaîne de caractères.

Si vous deviez inclure tous les paramètres, l'instruction ressemblerait à ceci :

Call wundergroundPWS(Result,ID,Pass,Weather,AirQual,Timestamp,UTCOffset,ServerResponse)

#5 - Remplissez le tableau et appeler l'instruction

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

Conclusion

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.


Partagez cet article



A propos de l'auteur

sam utley Sam Utley is the Vice President of Research and Development at Campbell Scientific, Inc. His deep understanding and appreciation for Campbell Scientific customers and their need for measurement and control solutions developed from his experience as a Campbell Scientific customer, sales and support engineer, and product manager. Sam is a University of Georgia Biological and Agricultural Engineer graduate.

Voir tous les articles de cet auteur.


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.