APRS气象站数据格式解析
让我们用对比法来解析APRS气象站的数据格式:
这是我的气象站在aprs.cn上的截图:
这是对应这条数据的RAW数据(原始数据):
BH8UMP-13>APRSduino,WIDE1-1,qAS,bh8ump-10,Indoor:!2453.48N/10251.05E_000/000g000t064r000p000P000h48b08154,0,9,14,0,9,14,0.10 CO2:460 ppm
解析说明:
BH8UMP-13 呼号及台站说明,-13是气象站(WX)的含义,选-13时,不用选择图标,APRS地图上自动显示WX的气象站图标
> 连接符,从此连接符到:连接符之前的内容,是对台站的说明,即图中[……]的内容
APRSduino,WIDE1-1,qAS,bh8ump-10,Indoor 对台站的说明,将显示在数据弹框[……]中
: 连接符,意义同上
! 连接符,表示之后为气象站的详细数据
2453.48N 纬度,格式为XXXX.XX,后缀N表示北纬,S表示南纬
/ 连接符
10251.05E 经度,格式为XXXXX.XX,后缀E表示东经,W表示西经
_ 连接符
000/000 风向/风速,风向格式为XXX,数值范围000-359;风速单位英里/小时,格式为XXX,因为传感器给出的数据单位往往是m/s,因此上传前要转换成英里/小时。转换公式:1米/秒(m/s)=2.236936英里/时(mile/h)。注意气象站涉及到的数据格式是几位,就必须上传几位,如数据不足相应位数的在最高位用0补齐。
g000 g表示大风风速,单位英里/小时,格式为XXX,具体同风速格式。
t064 t表示温度,单位华氏度,格式为XXX,一定注意这里上传的是华氏温度!!!如果你的温度是摄氏度要转换成华氏度再上传。转换公式:华氏度=(摄氏度×9/5)+32。如数据不足3位在最高位用0不齐。
r000 r表示1小时雨量,单位百分之一英寸,格式为XXX,如传感器给出的数据单位是mm,上传前要将其转换为百分之一英寸。转换公式:1mm=3.937百分之一英寸。
p000 p表示过去24小时累计雨量,单位百分之一英寸,格式为XXX,同上。注意这里的p是小写。
P000 P表示自午夜以来累计雨量,单位百分之一英寸,格式为XXX,同上。注意这里的P是大写。
h48 h表示湿度,单位%,分辨率1%,格式为XX,对应0-99%。
b08154 b表示气压,单位十帕斯卡,格式为XXXXX,数据不足5位的在最高位用0补齐。转换公式:十帕斯卡=测量值(帕斯卡)/10。
, 分隔符,之前的都是标准aprs气象站必备数据,在任何aprs网站上数据格式都是一致的,这个分隔符之后的数据就是aprs.cn网站上的格式(我理解是专有格式,在aprs.fi等网站上这个之后的数据统统纳入comment字段进行显示)
0,9,14, 在aprs.cn上,表示美标PM1.0/2.5/10,即美标PM1.0,美标PM2.5,美标PM10的数据,单位微克/立方米,分辨率1微克/立方米。这些数据是动态长度,即如果你的数据是5,上传5即可,如果是50,上传50即可,无固定长度,不需用0补位。
0,9,14, 同上,只不过是反映国标PM1.0/2.5/10。一般美标国标我的数值都是写成一样的,可能不够科学,请自己斟酌。我的空气质量传感器只能检测PM2.5与PM10,所以PM1.0的数据我写的是0。
0.10 在aprs.cn上,跟在空气质量之后的是甲醛数值,单位微克/立方米,动态字长
空格 与后续数据分开
CO2:460 ppm 这是我自己定义的一个测量值,因为我有二氧化碳浓度传感器,所以上传该值。在aprs.cn上,甲醛之后就没有预定义字段了,但是你可以再加其他传感器,只要像我这样做出简要声明,系统会自动放在comment字段里显示出来。你也可以在这里写一些英文单词或句子,进行进一步说明。
以上介绍的格式解析针对的是气象站格式,更详细的解析及APRS其他种类数据的格式详见APRS手册。
最后,连接服务器的方法如下:
HTTP方式连接:
服务器地址:china.aprs2.net
服务器端口:14580
实现手段多样,用Arduino或者Raspberry Pi等都可以,我用的是Arduino,连接上服务器相应端口后,首先发送以下格式数据:
user XXXXXX pass YYYYY(换行回车符)
XXXXXX为你的呼号,YYYYY为你呼号的passcode
等待几秒(我设置是等待5秒),收到验证通过的反馈后(也可不收),再发送上面的RAW串即可。
(文章来自:BH8UMP)