本帖最后由 hbzjt2011 于 2018-6-26 09:14 编辑
互联网信息展示器之GenieNo.1
一、方案设计与环境搭建- 设计目标:实现网络获取城市天气信息并进行实时显示,同时在实现基本功能的基础上视情况增加扩展信息展示和其他功能。先给这个小东西起个名字,美其名曰:精灵1号(GenieNo.1)。
- 硬件平台:
- 主控:NanoPi M1
- 操作系统:Debian
- 网络:有线网络或WIFI
环境搭建: 首先需要准备一张8G SD卡,格式化以后使用win32diskimager软件烧写Debian系统;系统启动成功后进行有线网络和无线网络配置,联网成功即可通过SSH登陆系统进行操作,同时可以使用VNC软件使用界面编程;文件传输可以使用FTP进行传输。 正好手里有一块OLED屏,于是先把它驱动起来作为后续采集信息的显示,经过一番折腾后终于做了个简单的Demo展示,直接上图。
二、调用天气API解析更新天气信息- API选择:目前可以使用的天气API很多,比如和风天气、墨迹天气、百度地图天气API等等,大多需要注册然后获取API Key使用,我选择的是OpenWeatherMap API,看大家习惯。调用API比较简单,直接发送http请求,然后使用JSON解析即可。
API返回的JSON天气信息:
{
"coord":{
"lon":116.39,
"lat":39.91
},
"weather":[
{
"id":501,
"main":"Rain",
"description":"moderate rain",
"icon":"10n"
}
],
"base":"stations",
"main":{
"temp":27,
"pressure":1003,
"humidity":74,
"temp_min":27,
"temp_max":27
},
"visibility":6000,
"wind":{
"speed":2,
"deg":80
},
"rain":{
"3h":4.1575
},
"clouds":{
"all":92
},
"dt":1529931600,
"sys":{
"type":1,
"id":7405,
"message":0.0086,
"country":"CN",
"sunrise":1529873231,
"sunset":1529927221
},
"id":1816670,
"name":"Beijing",
"cod":200
}
- 我使用了目前用的比较多的CJSON对天气数据进行了解析,选择自己需要的数据进行显示,可以通过设置城市来实现不同城市的天气获取,这里我以北京为例,天气信息一般10分钟内不会改变,所以最好15分钟或更长时间发送一次请求即可:
|