天气地下上传 _Campbellsci论坛问答

有人开发过CR1000程序将天气数据上传到wunderground.com吗?

天气地下上传
_Campbellsci论坛问答

新对话如下:

你知道他们提交数据的要求是什么吗?

新对话如下:

对不起,本应将其包含在原始问题中。

我知道如何用CR1000构建输出字符串。我知道如何发送它。我有NL115,并连接到互联网。

包含所有信息的网页:
http://wiki.wunderground.com/index.php/PWS_-_Upload_Protocol

要上传天气状况,您可以使用ID、PASSWORD和天气状况作为GET参数,发出标准的HTTPGET请求

定义:
操作[action=updateraw]
身份证[由wunderground.com注册的身份证]
密码[使用此ID注册的密码]
日期utc-[YYYY-MM-DD HH:MM:SS(mysql格式)]
风向-[0-360]
风速每小时-[每小时]
阵风时速
湿度-[%]
温度F-[温度F]
下雨的
每日累积雨量
baromin-[气压英寸]
露点
天气-[text]--图元样式(+RA)
云-[文本]-SKC、FEW、SCT、BKN、OVC
软件类型-[text]即:vws或weatherdisplay

字符串示例:
http://weatherstation.wunderground.com/weatherstation/updateweatherstation.php?ID=KCASANFR5&PASSWORD=XXXXXX&dateutc=2000-01-01+10%3A32%3A35&winddir=230&windspeedmph=12&windgustmph=12&tempf=70&rainin=0&baromin=29.1&dewptf=68.2&湿度=90&weather=&clouds=&softwaretype=vws%20versionxx&action=updateraw

新对话如下:

他们的要求可以在这里找到

http://wiki.wunderground.com/index.php/PWS_-_Upload_Protocol

我很快就会发布一个CRBasic示例。

新对话如下:

正如承诺的那样,这里有一个示例程序(如下)。遗憾的是,我们还无法将附件添加到帖子中。在这篇文章中,它将看起来非常丑陋,并且主要的空白将被剥离。突出显示程序的文本并将其复制到CRBasic编辑器中,重新生成缩进(编辑菜单-重新生成缩进),这样会看起来更好。

显然,有些事情需要在你自己的程序中进行调整。您必须在GET请求中提供您的ID和密码。PWSGetRequest变量的大小可能需要增加。如果你想要10分钟以外的更新,你需要改变慢序列扫描的扫描间隔。等等

'CR1000系列数据记录器
'向Weather Underground发布实时数据(公共变量)的程序示例
'请注意,GET请求参数DateUTC应为协调世界时(UTC)
’,因此数据记录器时钟应设置为协调世界时。

'声明公共变量
公共PTemp_C
公用ATemp_F
公共PWSGetRequest为字符串*200
公共PWSGetResponse为字符串*200
公用插座
公共RT时间(9)
别名RTime(1)=年份
别名RTime(2)=月份
别名RTime(3)=每月工作日
别名RTime(4)=每小时一天
别名RTime(5)=分钟
别名RTime(6)=秒
别名RTime(7)=微秒
别名RTime(8)=弱日
别名RTime(9)=一年中的某一天

'主程序
开始进度
扫描(1,秒,0,0)
'接线板温度测量PTemp_C
面板温度(PTemp_C,_6Hz)
‘T型(铜-康铜)热电偶测量值ATemp_F
TCDiff(ATemp_F,1,mV2_5C,1,T型,PTemp_C,真,0,_6Hz,1.8,32)
下一次扫描
慢速序列
扫描(10,最小,0,0)
'跟踪当前时间
实时(RTime())
'参考http://wiki.wunderground.com/index.php/PWS_-_Upload_Protocol用于PWS上传协议文档
PWSGetRequest=“;获取/weatherstation/updateweatherstation.php?ID=YourID&密码=Your密码&日期utc=“+年份+“-"+月份+“-"+月日+“+"+HourOfDay+”:"+分钟+“:"+秒+“&tempf=“+格式浮点(ATemp_F,“%5.2f”)+“&action=更新原始HTTP/1.1”+CHR(13)+CHR(10)
插座=TCPOpen(“weatherstation.wunderground.com”,801024)
如果套接字<>;0然后
'传输GET请求
串行输出(套接字,PWSGetRequest,“”,0,0)
'根据测试,需要合法的用户代理请求标头字段
SerialOut(套接字,“用户代理:Mozilla/4.0”+CHR(13)+CHR(10),“&”;,0,0)
'根据测试,不需要主机请求标头字段
串行输出(插座,“主机:weatherstation.wunderground.com”+CHR(13)+CHR(10),“&”;,0,0)
“根据测试,需要最后一个空行(回车和换行)
串行输出(插座,CHR(13)+CHR(10),“&”;,0,0)
'捕获GET请求响应以进行调试
串行输入(PWSGetResponse,Socket,500,“”,200)
结束如果
下一次扫描
结束程序

*最后更新者:ChipsNSalsa于2008年9月26日下午5:13*

新对话如下:

芯片NSalsa,

谢谢你的帮助。
当它启动并运行时,我会在这里发一条消息。

谢谢
戴夫

新对话如下:

格伦,

终于找到了一些时间来运行Wunderground上传。

http://www.wunderground.com/weatherstation/WXDailyHistory.asp?ID=KNYKINGS9

再次感谢您的帮助。

当做
戴夫

修改了一点程序来计算UTC,以便记录器可以保持在本地时间。

'CR1000系列数据记录器
'向Weather Underground发布实时数据(公共变量)的程序示例
'请注意,GET请求参数DateUTC应为协调世界时(UTC)
“程序计算UTC,以便记录器时钟可以保持在当地时间,并仍然为WunderGround提供UTC

'声明公共变量
公共PTemp_C
公用ATemp_F
公共PWSGetRequest为字符串*200
公共PWSGetResponse为字符串*200
公用插座

'UTC TIme变量
变暗时间与变暗时间一样长
公共UTC时间为字符串*30
Const UTC_OFFSET=-5*3600'-5小时GMT(根据您的时区进行调整)
公共年份$作为字符串*4
公共月份$作为字符串*2
公共DayOfMonth$作为字符串*2
公共hhmmss$作为字符串*8

数据表(时间表,true,1)
表格隐藏
样本(1,TimeLong,NSEC)
床头柜

'主程序
开始进度
扫描(1,秒,0,0)
'接线板温度测量PTemp_C
面板温度(PTemp_C,_6Hz)
‘T型(铜-康铜)热电偶测量值ATemp_F
TCDiff(ATemp_F,1,mV2_5C,1,T型,PTemp_C,真,0,_6Hz,1.8,32)
下一次扫描

慢速序列
扫描(10,最小,0,0)

'计算神地输出的UCT时间
TimeLong=公共时间戳(1,1)-UTC_OFFSET
调用表(时间表)
UTCTime(1)=时间表。TimeLong(1.4)'mm/dd/yyyy hr:mm:ss
月份$=剩余(UTC时间(1),2)
DayOfMonth$=中间(UTC时间(1),4,2)
年$=年中(UTC时间(1),7,4)
hhmmss$=中间(UTC时间(1),12,8)

'参考http://wiki.wunderground.com/index.php/PWS_-_Upload_Protocol用于PWS上传协议文档
PWSGetRequest=“;获取/weatherstation/updateweatherstation.php?ID=YourID&密码=Your密码&日期utc=“+年份$+“-"+月份$+“-"+月日$+”+"+hhmmss$+”&tempf=“+格式浮点(ATemp_F,“%5.2f”)+“&action=更新原始HTTP/1.1”+CHR(13)+CHR(10)
插座=TCPOpen(“weatherstation.wunderground.com”,801024)
如果套接字<>;0然后
'传输GET请求
串行输出(套接字,PWSGetRequest,“”,0,0)
'根据测试,需要合法的用户代理请求标头字段
SerialOut(套接字,“用户代理:Mozilla/4.0”+CHR(13)+CHR(10),“&”;,0,0)
'根据测试,不需要主机请求标头字段
串行输出(插座,“主机:weatherstation.wunderground.com”+CHR(13)+CHR(10),“&”;,0,0)
“根据测试,需要最后一个空行(回车和换行)
串行输出(插座,CHR(13)+CHR(10),“&”;,0,0)
'捕获GET请求响应以进行调试
串行输入(PWSGetResponse,Socket,500,“”,200)
结束如果
下一次扫描
结束程序

*最后更新者:IslandMan于2008年11月13日凌晨3:40*

新对话如下:

有趣的信息。我正在想办法做同样的事情,除了通过手机连接。如果我遵循它,这个程序每10分钟上传一次wx电台信息。看起来这就是我们正在寻找的。我对verizon为蜂窝链路提供的静态和动态IP地址的网络问题感到困惑。该电台以静态IP启动并运行,在用户直接轮询时按需提供wx信息。一切都很好,然后帐户注册发生了变化,现在为了让它重新运行,Verizon希望再花500美元购买一个新的静态IP,所以我们计划动态化,使用Wunderground而不是直接轮询。我不是“专业人士”,所以问一个愚蠢的问题,你创建的这个设置看起来很好,只要我们在不需要静态IP的情况下将CR1000重新连接到蜂窝链路上??对不起,这是个问题!;-)希望这是可以理解的。谢谢

新对话如下:

现在使用更新的记录器操作系统更容易了:

Const WUNDERGROUND_ ID=“;状态ID”;
Const WUNDERGROUND_PASSWORD=“;YOUR_ LOGON_PASSWORD(YOUR_;

将http_get_header标注为字符串*100
公共http_get_response为字符串*300
Dim http_get_uri为字符串*300

公共时间(9)
别名时间(1)=年份'将别名年份分配给时间(1
别名时间(2)=月份'将别名month分配给时间(2
别名时间(3)=day_of_month'将别名day_of_month分配给时间(3
别名时间(4)=小时'将别名“小时”分配给时间(4
别名时间(5)=分钟'将别名分钟分配给时间(5
别名时间(6)=秒'将别名秒分配给时间(6
别名时间(7)=usecond'将别名usecond分配给时间(7
别名时间(8)=week_day'将别名week_day分配给时间(8
别名时间(9)=day_of_year'将别名day_of_year分配给时间(9

扫描(10,最小,3,0)
实时(time())

'HTTP-获取信息至wunderground.com
http_get_header=“";
http_get_ response=";
http_get_uri=“;http://weatherstation.wunderground.com/weatherstation/updateweatherstation.php?"
http_get_uri=http_get_uri“;ID=“”WUNDERGROUND_ ID“&密码=“”神童世界密码
http_get_uri=http_get_uri“&日期utc=“”年份“-&“月份“-&“年月日
http_get_uri=http_get_uri“&“小时”:&“分钟“:&“第二
http_get_uri=http_get_uri“&winddir=“”风向
http_get_uri=http_get_uri“&风速dmph=“”风速/小时
http_get_uri=http_get_uri“&tempf=“”空气温度f
http_get_uri=http_get_uri“&dewptf=“”露点
http_get_uri=http_get_uri“&湿度=“相对湿度
http_get_uri=http_get_uri“&太阳辐射=“”slrw公司
http_get_uri=http_get_uri“&baromin=“”压力英寸
http_get_uri=http_get_uri“&软件类型=CRBasic-AG1T“;
http_get_uri=http_get_uri“&版本=“”版本

http_get_socket=HTTPGet(http_get_uri、http_get_response、http_get-header)

TCP丢失(http_get_socket)

下一次扫描

*最后更新者:GaryTRoberts于2013年8月3日下午1:48*

新对话如下:

这也是我们真正想在我们的站点中实现的,但目前我们的站点被编程为在我们的ftp服务器中每天发送合并的小时数据。

在向我们的ftp服务器发送数据的同时,是否可以上传我们在神童岛上的站点数据?

新对话如下:

对您将有一个通过FTP发送数据的例程/代码,然后有一个将数据发送到Weather Underground的代码。

新对话如下:

山姆,

程序/代码将如何进行?我会在ftp发送的代码之后插入神童上传的示例代码吗?

新对话如下:

注意:

截至2013年8月下旬,Weather Underground需要更严格的url转义,并且不再接受旧的代码字符串输出。

看见http://wiki.wunderground.com/index.php/PWS_-_Upload_Protocol了解更多详细信息。

请注意,UTCTime格式非常具体,您的代码必须与下面的代码匹配,才能正确格式化时间戳。

此外,该要求是特定于数据的格式化方式。请注意,在代码中,所有的FormatFloat字符串都设置为“%”0.2英寸;它基本上取输出的值和“橡皮筋”,这样随着可变值长度的变化,这个字符串值将“拉伸”和“收缩”,而不使用填充和前导零。

如果有什么不同,我也不确定,但DNS名称改为IP值,URL用户代理欺骗从4.0增加到5.0。

以下是一些应该可以工作的部分新代码:

慢速序列
扫描(1,最小,0,0)
'跟踪当前时间
'计算Wunderground输出的UTC时间
TimeLong=公共时间戳(1,1)-UTC_OFFSET
调用表(时间表)
UTCTime=时间表。TimeLong(4,4)'yyyy/MM/dd hr:MM:ss
UTCTime$=替换(UTCTime,“”,“+”):UTCTime$$=替换(UTCTime$,“:”,“%3A”)
'参考http://wiki.wunderground.com/index.php/PWS_-_Upload_Protocol用于PWS上传协议文档
'将ID(您的ID)和PASSWORD(您的密码)更改为特定的站点设置
PWSGetRequest=“;获取/weatherstation/updateweatherstation.php?ID=你的ID&密码=你的密码&日期utc="+UTC时间$$+”&winddir=“+FormatFloat(WindDir,“%0.2f”)_
+"&风速ph=“+FormatFloat(WS_mph,“%0.2f”)+“&湿度=“+FormatFloat(RH,“%0.2f”)+“&rainin=“+FormatFloat(Rain_in,“%0.2f”)+“&tempf=“_
+FormatFloat(AirTF,“%0.2f”)+“&巴洛明=“+FormatFloat(BP_inHg,“%0.2f”)+“&dewptf=“+FormatFloat(TdF,“%0.2f”)+“&动作=更新原始”+CHR(13)+CHR(10)
插座=TCPO笔(“38.102.137.157”,801024)
如果套接字<>;0然后
'传输GET请求
串行输出(套接字,PWSGetRequest,“”,0,0)
'根据测试,需要合法的用户代理请求标头字段
SerialOut(套接字,“用户代理:Mozilla/5.0”+CHR(13)+CHR(10),“&”;,0,0)
'根据测试,不需要主机请求标头字段
串行输出(插座,“主机:38.102.137.157”+CHR(13)+CHR(10),“&”;,0,0)
“根据测试,需要最后一个空行(回车和换行)
串行输出(插座,CHR(13)+CHR(10),“&”;,0,0)
'捕获GET请求响应以进行调试
串行输入(PWSGetResponse,Socket,500,“”,200)
结束如果
下一次扫描
结束序列

*最后更新者:wxdood于2013年10月24日上午10:33*

新对话如下:

这非常有帮助,但我正在努力:

'声明公共变量
公共PTemp_C
公用ATemp_F
公共风向(_D)
公共风速
公共空气温度
公共露点
公共关系湿度
公共slrw
公共压力_英寸
公共版本
公共HTTPGet(12,1,1)
公用http_get_socket
公共PWSGetRequest为字符串*200
公共PWSGetResponse为字符串*200
公用插座

'UTC TIme变量
变暗时间与变暗时间一样长
公共UTC时间为字符串*30
Const UTC_OFFSET=-5*3600'-5小时GMT(根据您的时区进行调整)
公共年份$作为字符串*4
公共月份$作为字符串*2
公共DayOfMonth$作为字符串*2
公共hhmmss$作为字符串*8


Const WUNDERGROUND_ ID=“;KFLVEROB32”;
Const WUNDERGROUND_PASSWORD=“$A4s5d6f”;


将http_get_header标注为字符串*100
公共http_get_response为字符串*300
Dim http_get_uri为字符串*300


公共时间(9)
别名时间(1)=年份'将别名年份分配给时间(1
别名时间(2)=月份'将别名month分配给时间(2
别名时间(3)=day_of_month'将别名day_of_month分配给时间(3
别名时间(4)=小时'将别名“小时”分配给时间(4
别名时间(5)=分钟'将别名分钟分配给时间(5
别名时间(6)=秒'将别名秒分配给时间(6
别名时间(7)=usecond'将别名usecond分配给时间(7
别名时间(8)=week_day'将别名week_day分配给时间(8
别名时间(9)=day_of_year'将别名day_of_year分配给时间(9

开始进度
扫描(10,最小,3,0)
实时(time())
插座=TCPOpen(“weatherstation.wunderground.com”,801024)
'HTTP-获取信息至wunderground.com
http_get_header=“";
http_get_ response=";
http_get_uri=“;http://weatherstation.wunderground.com/weatherstation/updateweatherstation.php?"
http_get_uri=http_get_uri“;ID=“”WUNDERGROUND_ ID“&密码=“”神童世界密码
http_get_uri=http_get_uri“&日期utc=“”年份“-&“月份“-&“年月日
http_get_uri=http_get_uri“&“小时”:&“分钟“:&“第二
http_get_uri=http_get_uri“&winddir=“”风向
http_get_uri=http_get_uri“&风速dmph=“”风速/小时
http_get_uri=http_get_uri“&tempf=“”空气温度f
http_get_uri=http_get_uri“&dewptf=“”露点
http_get_uri=http_get_uri“&湿度=“相对湿度
http_get_uri=http_get_uri“&太阳辐射=“”slrw公司
http_get_uri=http_get_uri“&baromin=“”压力英寸
http_get_uri=http_get_uri“&软件类型=CRBasic-AG1T“;
http_get_uri=http_get_uri“&版本=“”版本

http_get_socket=HTTPGet(http_get_uri、http_get_response、http_get-header)

TCP丢失(http_get_socket)

下一次扫描
结束程序

新对话如下:

具体见wxwood在上面的帖子

";截至2013年8月下旬,Weather Underground需要更严格的url转义,并且不再接受旧的代码字符串输出。
看见http://wiki.wunderground.com/index.php/PWS_-_Upload_Protocol了解更多详细信息。
请注意,UTCTime格式非常具体,您的代码必须与下面的代码匹配,才能正确格式化时间戳";


所以,试着更换

http_get_uri=http_get_uri“&日期utc=“”年份“-&“月份“-&“年月日
http_get_uri=http_get_uri“&“小时”:&“分钟“:&“第二

具有

http_get_uri=http_get_uri“&日期utc=“”年份“-&“月份“-&“年月日
http_get_uri=http_get_uri“+&“小时“%3A“”分钟“%3A“”第二

新对话如下:

谢谢你,错过了,会检查的。

新对话如下:

尽我所能。阅读这里和网上的所有主题。尝试了所有不同的比特和完整的代码,将cr1000数据上传到Weatherunderground进行PWS。

我的目标:本地网页(90%成功)
使用RTMC Pro,建立并发布一个内部网站
第1页:将具有当前RH、BP、AirT、WindDir、Rain_Tot、Rain_in、Max Gust
第2页:显示RH、AirT、Rain、BP的周历史记录
第3页:小时表中值的表显示

我已经成功地访问了第1、2、3页,但第2页在刷新浏览器时不会显示历史记录。

从CR1000上传奇妙的PWS(成功率为0%)
我试过的都不管用。由于IT限制,无法使用Web服务器或ftp。

显然,我需要的知识比“;剪切“粘贴”-在这一点上,有什么资源可以让我发送菜鸟代码进行修复吗?向所有人致以问候。

CR1000型
电话:05103-L35
CS215-L6型
CS106
电话:525-L35

RTMC专业版
登录dm
RTMC网络服务器

新对话如下:

如果您将数据放入数据表并使用收集的表数据作为图形的源,则第2页将仅在刷新后显示历史记录。如果您指向公共表变量,则该图将被重置。


在下面,只有当你的价值观可信时,你才会看到更新。Wunderground根据邻近气象站的数据对数据进行了一些质量控制/质量保证。


'声明公共变量
公共PTemp_C
公用ATemp_F
公共风向(_D)
公共风速
公共空气温度
公共露点
公共关系湿度
公共slrw
公共压力_英寸

'仙境
公用http_get_socket
公共http_get_header为字符串*23
公共http_get_response为字符串*23
Dim http_get_uri为字符串*500

'UTC TIme变量
Dim SS1990长款
公共UTC时间为字符串*30
Const UTC_OFFSET=-5*3600'-5小时GMT(根据您的时区进行调整)

Const WUNDERGROUND_ ID=“;KFLVEROB32”;
Const WUNDERGROUND_PASSWORD=“$A4s5d6f”;

开始进度
扫描(10,最小,3,0)

'创建神童世界时间戳
SS1990=公共时间戳(1,1)
SS1990=SS1990+UTC_OFFSET
UTC时间=自1990年以来的秒数(SS1990,4)
UTCTime=左(UTCTime,19)
UTCTime=替换(UTCTime,“”,“+”)
UTCTime=替换(UTCTime,“:”,“%3A”)

'HTTP-获取信息至wunderground.com
http_get_header=“";
http_get_ response=";
http_get_uri=“;http://weatherstation.wunderground.com/weatherstation/updateweatherstation.php?action=updateraw"
http_get_uri=http_get_uri“&ID=“”WUNDERGROUND_ ID“&密码=“”神童世界密码
http_get_uri=http_get_uri“&日期utc=“”UTC时间
http_get_uri=http_get_uri“&winddir=“”圆形(风向,0)
http_get_uri=http_get_uri“&风速dmph=“”圆形(风速_mph,1)
http_get_uri=http_get_uri“&tempf=“”圆形(空气温度f,1)
http_get_uri=http_get_uri“&dewptf=“”圆形(露点,1)
http_get_uri=http_get_uri“&湿度=“圆形(相对湿度,0)
http_get_uri=http_get_uri“&太阳辐射=“”圆形(slrw,1)
http_get_uri=http_get_uri“&baromin=“”圆形(压力英寸,1)
http_get_uri=http_get_uri“&软件类型=cr1000”;
http_get_socket=HTTPGet(http_get_uri、http_get_response、http_get-header)

'TCP丢失(http_get_socket)

下一次扫描
结束程序

新对话如下:

这就解释了我的问题,谢谢!

新对话如下:

大家好,

我不确定你们中是否有人还在读这篇文章。我很好奇你是如何将降雨数据发送给Weather Underground的?

我问,因为目前这是我正在做的事情。

当做

新对话如下:

上有一篇很棒的博客文章 https://www.campbellsci.com/blog/post-cr6-data-to-weather-underground  ;这应该会让你得到你想要的信息。

新对话如下:

我一直在努力发布我们的天气数据,我遵循了这篇帖子上的指示:; https://www.campbellsci.com/blog/post-cr6-data-to-weather-underground  

我使用的是CR1000,我得到的结果值是:-2,当我在.dld文件中查找时,这意味着;已连接但未成功,没有从服务器接收到“200 OK”,我的PWS上也没有显示任何数据。

从以前的帖子来看,UTC时间似乎有问题 ;我是否需要在工作站设置的“时钟”选项卡中的时区偏移中为工作站在记录器中配置UTC偏移 ;或者,在发送到地下气象之前,我需要手动将时间更改为UTC吗?

此外,许多人说要看; http://wiki.wunderground.com/index.php/PWS_-_Upload_Protocol  ;但这似乎已经不存在了,我想知道他们是否不再支持这个功能 ;是人们的;PWS的坎贝尔记录仪仍在工作?

分享到:

原文链接:,转发请注明来源!
海洋仪器网 仪器使用 天气地下上传 _Campbellsci论坛问答
「天气地下上传 _Campbellsci论坛问答」评论列表

发表评论