连接服务器调用天气预报

STM32+ESP8266获取心知天气的天气预报

  1. 获取心知天气服务器的IP地址
    win+r 后输入cmd进入操作终端,输入 ping api.seniverse.com 回车
    116.62.81.138 就是我们需要使用的心知天气API
    连接服务器调用天气预报_第1张图片
  2. AT指令配置ESP8266模块
    利用串口调试助手发送AT指令

(1)使用串口发送指令AT+CWMODE=3设置模块Wi-Fi应用模式为sttaion&ap模式

(2)发送指令AT+RST重启模块使应用模式更改生效

(3)发送指令AT+CWJAP =“热点名称”,“热点密码” 连接AP

(4)发送指令AT+CIPMUX=0设置模块为单路连接模式,模块默认为单路连接模式

(5)发送指令AT+CIPSTART=“TCP”," api.seniverse.com",80 与服务器建立TCP连接." api.seniverse.com"为第一步获取的的IP地址,即指令为:AT+CIPSTART=“TCP”,“116.62.81.138”,80

(6)发送指令AT+CIPMODE=1设置模块传输模式为透传模式

(7)发送指令AT+CIPSEND开启透传模式向服务器发送数据,模块收到此指令后先换行后返回“>”

(8)剩下只需要发送 GET https://api.seniverse.com/v3/weather/now.json?key=smtq3n0ixdggurox&location=zhanjiang&language=zh-Hans&unit=c,就能获取到天气信息了。

  1. 不同情况的请求地址及返回数据

(1)获取湛江当天天气信息
https://api.seniverse.com/v3/weather/now.json?key=smtq3n0ixdggurox&location=zhanjiang&language=zh-Hans&unit=c
AT指令发送:
GET https://api.seniverse.com/v3/weather/now.json?key=smtq3n0ixdggurox&location=zhanjiang&language=zh-Hans&unit=c

返回内容:

{“results”:[{“location”:{“id”:“WX4FBXXFKE4F”,“name”:“鍖椾含”,“country”:“CN”,“path”:“鍖椾含,鍖椾含,涓浗”,“timezone”:“Asia/Shanghai”,“timezone_offset”:"+08:00"},“now”:{“text”:“鏅?”,“code”:“1”,“temperature”:“1”},“last_update”:“2019-12-04T20:40:00+08:00”}]}

(2)返回湛江近3天天气信息
https://api.seniverse.com/v3/weather/daily.json?key=rrpd2zmqkpwlsckt&location=zhanjiang&language=en&unit=c&start=0&days=3
AT指令发送:
GET https://api.seniverse.com/v3/weather/daily.json?key=rrpd2zmqkpwlsckt&location=guangzhou&language=en&unit=c&start=0&days=3

返回内容:

{“results”:[{“location”:{“id”:“WS0E9D8WN298”,“name”:“Guangzhou”,“country”:“CN”,“path”:“Guangzhou,Guangzhou,Guangdong,China”,“timezone”:“Asia/Shanghai”,“timezone_offset”:"+08:00"},“daily”:[{“date”:“2019-12-04”,“text_day”:“Cloudy”,“code_day”:“4”,“text_night”:“Cloudy”,“code_night”:“4”,“high”:“22”,“low”:“12”,“precip”:"",“wind_direction”:“N”,“wind_direction_degree”:“0”,“wind_speed”:“25.20”,“wind_scale”:“4”,“humidity”:“21”},{“date”:“2019-12-05”,“text_day”:“Overcast”,“code_day”:“9”,“text_night”:“Cloudy”,“code_night”:“4”,“high”:“16”,“low”:“11”,“precip”:"",“wind_direction”:“CLM”,“wind_direction_degree”:“0”,“wind_speed”:“34.20”,“wind_scale”:“5”,“humidity”:“26”},{“date”:“2019-12-06”,“text_day”:“Cloudy”,“code_day”:“4”,“text_night”:“Clear”,“code_night”:“1”,“high”:“19”,“low”:“9”,“precip”:"",“wind_direction”:“CLM”,“wind_direction_degree”:“16”,“wind_speed”:“34.20”,“wind_scale”:“5”,“humidity”:“24”}],“last_update”:“2019-12-04T17:23:50+08:00”}]}

4.遇到的问题

如第三步所示,不同情况下,调试助手返回的数据格式不同,不知道为什么获取当天天气信息的那个方法返回的数据是乱码的,获取三天内的天气预报的话返回的数据又是正常的。

5.查阅资料及解决方法

(1)若返回的数据是乱码的话,是因为API返回的数据是json格式的,可以通过在浏览器中打开请求地址,便能自动解析json格式,看到正常的返回数据,并在网页上显示中文内容

(2)在单片机写程序调用cjson库对返回的数据进行解析即可

你可能感兴趣的:(连接服务器调用天气预报)