1.这是获得json数据:
左边是标准官方api说明中的,右边是我用串口获取的:
2.首先找一个天气服务器,我的:YY天气,直接百度,注册,然后找api即可:
3.用接口工具测试接口是否正常:我的apifox,百度。
4.如何初始化4g模块,这才是重点,用的合宙模块。
拿好小本本,开始记录,我花了1个多小时的调试:串口工具回车换行。
AT
+AT:OK
ATE //关闭回显
OK
AT+CPIN? //插卡了没有
+CPIN:READY
OK
//获得基站分配的地址
AT+SAPBR=3,1,“CONTYPE”,“GPRS” //设置http的方式
OK
AT+SAPBR=3,1,"APN","" //请求基站分配ip
OK
AT+SAPBR=1,1 //设置PDP的cid
OK
AT+SAPBR=2,1 //查询一下分配的地址
+SAPBR: 1,1,"10.12.207.166" //ip地址
OK
//初始化http协议栈
AT+HTTPINIT
OK
AT+HTTPSSL=0 //关闭ssl
OK
AT+HTTPPARA="CID",1
OK
AT+HTTPPARA="URL","http://api.yytianqi.com/observe? city=CH210101&key=*********"
OK
AT+HTTPDATA=4,100000//
DOWLOAD
1234 //CONTENT中的内容
OK
AT+HTTPPARA?//查询协议炸填充数据是否正确
+HTTPPARA:
CID: 1
URL: http://api.yytianqi.com/observe? city=CH210101&key=**********
UA: AM_MODULE
PROIP: 0.0.0.0
PROPORT: 0
REDIR: 0
BREAK: 0
BREAKEND: 0
TIMEOUT: 120
CONTENT: 1234
USERDATA:
AT+HTTPACTION=0 //发送get请求 0;get 1:post 2:head
OK
+HTTPACTION: 0,200,241 //GET,codestate,接收数据长度
AT+HTTPREAD
+HTTPREAD:241
{"code":1,"msg":"Sucess","counts":19997,"data":{"cityId":"CH210101","cityName":"\u676d\u5dde","lastUpdate":"2024-01-24 14:51:22","tq":"\u6674","numtq":"00","qw":"4","numfl":1,"fl":"3-4\u7ea7","fx":"\u897f\u5357\u98ce","numfx":"5","sd":"24"}}
OK
5.接收的数据是json格式,请自行网上找,c/c++请找:cjson, java有自带的,将接收到的数据解析。
6.会发现cityName":"\u676d\u5dde"这样的,明明apifox和官方文档上是城市名。请看:
你需要将发给你的万国码转换成中文,嵌入式一般是GB2132,这个有规律和字库的支持。串口文具肯定没办法直接转。
7.用4g模块访问服务器获得数据再将数据解析成你想要的。可以多练练,天气服务器一般都是免费的,但是有金钱和次数限制。
8.参考资料
(1).合宙官方资料
(2)YY天气接口文档
工具:apifox接口测试工具,串口助手,Unicode转汉字在线工具。
9.硬件:
4G模块带有sim卡
ttl转usb模块
电脑。