让你的WizFi250适应各种气候
这篇文章会具体描写叙述如何马上得到指定城市的天气状况(比方首尔)。由OpenWeatherMap提供。
用JSON(由OpenWeatherMap提供),XML和一个以太网模块。使WIZnet-WizFi250执行起来。
首先,在OpenWeatherMap上检查API内容。
由城市的名称调用。API用一列结果应答。来匹配一个搜索词。
在JSON中:
api.openweathermap.org/data/2.5/weather?q=London,uk 在XML:
api.openweathermap.org/data/2.5/weather?q=London&mode=xml
http://openweathermap.org/current
然后,尾随上面的指导。在电脑上将JSON和XML格式中的首尔天气数据提取出来。
以下有一个网络数据包的截屏能够作为參考。
红色高亮部分的数据是由PC发送的。我们准备消除不必要部分,并使用请求数据输入下面数据。
在这步。 \r(Carriage return, 0x0d), \n(Line Feed, 0x0a)必须准确输入,而且传送数据(72 Byte, 81 Byte)也要特别注意。
* JSON
GET /data/2.5/weather?q=Seoul HTTP/1.1\r\n
Host: api.openweathermap.org\r\n\r\n
(72 Byte)
* XML
GET /data/2.5/weather?q=Seoul&mode=xml HTTP/1.1\r\n
Host: api.openweathermap.org\r\n\r\n
(81 Byte)
既然初始化设置已完毕,我们将执行WizFi250.首先,在AP上建立联接。
AT+WSET=0,Team Wiki
[OK] AT+WSEC=0,,12345678
[OK] AT+WNET=1
[OK] AT+WJOIN
Joining : Team Wiki
Successfully joined : Team Wiki
[Link-Up Event] IP Addr : 192.168.101.33
Gateway : 192.168.101.1
[OK]
提取OpenWeatherMap API server的IP地址。
AT+FDNS=api.openweathermap.org,3000
128.199.164.95
[OK]
与OpenWeatherMap API server连接。
AT+SCON=O,TCN,128.199.164.95,80,,0
[OK] [CONNECT 0]
发送JSON请求数据到 OpenWeatherMap APIserver。
AT+SSEND=0,,,72
[0,,,72] (여기에서 위에 설명된 72 Byte를 전송하면 된다.)
[OK]
然后,OpenWeatherMap API server将用一个JSON回复(例如以下)来应答。
{0,128.199.164.95,80,857}HTTP/1.1 200 OK
Server: nginx
Date: Wed, 06 Aug 2014 00:06:49 GMT
Content-Type: application/json; charset=utf-8
Transfer-Encoding: chunked
Connection: keep-alive
X-Source: redis
Access-Control-Allow-Origin: *
Access-Control-Allow-Credentials: true
Access-Control-Allow-Methods: GET, POST
221
{“coord”:{“lon”:126.98,”lat”:37.57},”sys”:{“type”:3,”id”:8519,”message”:0.033,”country”:”KR”,”sunrise”:1407184771,”sunset”:1407234998},”weather”:[{"id":721,"main":"Haze","description":"haze","icon":"50n"},{"id":500,"main":"Rain","description":"light
rain","icon":"10n"},{"id":701,"main":"Mist","description":"mist","icon":"50n"}],”base”:”cmc stations”,”main”:{“temp”:297.26,”pressure”:1005,”humidity”:83,”temp_min”:295.15,”temp_max”:298.15},”wind”:{“speed”:1,”deg”:140},”clouds”:{“all”:40},”dt”:1407277800,”id”:1835848,”name”:”Seoul”,”cod”:200}
0
假设一旦完整接收,连接仍在进行。用OpenWeatherMap APIserver来终止连接。
AT+SMGMT=ALL
[DISCONNECT 0] [OK]
如今。分析如上接收的JSON数据,使用期望的天气数据(首尔的温度,湿度。风速等等)Enjoy!
以下是当你在XML格式下接收数据情况下。然而。WizFi250操作的基本规则是与JSON想死的。所以应该非常easy。
AT+SCON=O,TCN,128.199.164.95,80,,0
[OK] [CONNECT 0] AT+SSEND=0,,,81
[0,,,81] (여기에서 위에 설명된 81 Byte를 전송한다.)
[OK] {0,128.199.164.95,80,969}HTTP/1.1 200 OK
Server: nginx
Date: Tue, 05 Aug 2014 23:59:54 GMT
Content-Type: text/xml; charset=utf-8
Transfer-Encoding: chunked
Connection: keep-alive
X-Source: back
Access-Control-Allow-Origin: *
Access-Control-Allow-Credentials: true
Access-Control-Allow-Methods: GET, POST
29a
<current>
<city id=”1835848″ name=”Seoul”>
<coord lon=”126.98″ lat=”37.57″>
<country>KR</country>
<sun set=”2014-08-06T10:35:34″ rise=”2014-08-05T20:40:21″>
</sun></coord></city>
<temperature value=”297.38″ unit=”kelvin” min=”296.15″
max=”298.15″>
<humidity value=”83″ unit=”%”>
<pressure value=”1006″ unit=”hPa”>
<wind>
<speed value=”1″ name=”Calm”>
<direction value=”170″ name=”South” code=”S”>
</direction></speed></wind>
<clouds value=”75″ name=”broken clouds”>
<visibility>
<precipitation mode=”no”>
<weather value=”haze” number=”721″ icon=”50n”>
<lastupdate value=”2014-08-05T23:30:00″>
</lastupdate></weather></precipitation></visibility></clouds></pressure></humidity></temperature></current>
0
AT+SMGMT=ALL
[DISCONNECT 0] [OK]
欢迎登陆WIZnet官方站点:http://www.iwiznet.cn
WIZnet官方博客:http://weibo.com/wiznet2012
让你的WizFi250适应各种气候的更多相关文章
- 用Python下载美国国家气候数据中心(NCDC)的气候数据
美国国家气候数据中心的官网地址是https://www.ncdc.noaa.gov/ 气候数据的下载地址是: 长格式:ftp://ftp.ncdc.noaa.gov/pub/data/noaa/,这种 ...
- 怎么用Python写一个三体的气候模拟程序
首先声明一下,这个所谓的三体气候模拟程序还是很简单的,没有真的3D效果或数学模型之类的,只不过是一个文字表示的模拟程序.该程序的某些地方可能不太严谨,所以也请各位多多包涵. 所谓三体气候模拟,就是将太 ...
- 极端气候频现 五款开发天气预报应用的API
http://www.csdn.net/article/2014-02-07/2818322-weather-forecast-api-for-developing-apps
- 2015微软MVP全球峰会见闻
2015.10.31-2015.11.8 一周的时间完成微软MVP全球峰会旅程,这一周在不断的倒时差,行程安排非常的紧张,还好和大家请假了没有更新微信公众号,今天开始继续更新微信公众号,开始新的旅程, ...
- CSS常见居中讨论
先来一个常见的案例,把一张图片和下方文字进行居中: 首先处理左右居中,考虑到img是一个行内元素,下方的文字内容也是行内元素,因此直接用text-align即可: <style> .con ...
- 《Just for Fun》读后感
这本书有一个长长的中文名字:<只是为了好玩:Linux之父林纳斯自传>,所以博客标题我就用英文书名了. 读罢此书,不禁想起一位长者的名言:“一个人的成功当然要靠自我奋斗,但也要考虑历史的进 ...
- TODO:小程序的春天你想做什么
TODO:小程序的春天你想做什么 微信小程序是一种全新的连接用户与服务的方式,它可以在微信内被便捷地获取和传播,同时具有出色的使用体验. 初步了解小程序的特点 导航明确,来去自如 统一稳定, 视觉规范 ...
- WebService入门案例
关于WebService的作用和好处,大家应该都了解.但如何在Asp.Net中添加Web Service等问题一直是新手朋友的一大难题.鉴于网上没有一个像样的实际案例,特将课程设计中运用到的WebSe ...
- UML类图简单介绍
先上一张图: 概述 类图(Class Diagram)是面向对象系统建模中最常用和最重要的图,是定义其它图的基础.类图主要是用来显示系统中的类.接口以及它们之间的静态结构和关系的一种静态模型. 类图组 ...
随机推荐
- yzoi1109&&viojs1042最小步数的一点看法——回文数
Description - 问题描述 有一天,雄霸传授本人风神腿法第一式:捕风捉影..............的步法(弟子一:堂主,你大喘气呀.风:你给我闭嘴.)捕风捉影的关键是换气(换不好就会大喘气 ...
- 80端口被占用 PID = 4解决办法
请按照下面的步骤来运行命令:1. sc config http stat = demand2. reboot3. run the command(netsh http show servicestat ...
- PAT - 基础 - 龟兔赛跑
题目: 乌龟与兔子进行赛跑,跑场是一个矩型跑道,跑道边可以随地进行休息.乌龟每分钟可以前进3米,兔子每分钟前进9米:兔子嫌乌龟跑得慢,觉得肯定能跑赢乌龟,于是,每跑10分钟回头看一下乌龟,若发现自己超 ...
- js获取当前时间戳与日期比较
如何用javascript获取当前时间戳: 复制代码 代码示例: 方法1: var timestamp = date.parse(new date()); 结果:1280977330000 方法2: ...
- thinkphp 总结 转
用ThinkPHP做过几个项目后,感觉这个框架蛮不错的,很适合自己的逻辑习惯,开发起来也快捷,呵呵, 总结了一些项目中常用的东东,希望对初学TP的朋友有所帮助! 1. 模板中不能使用的标签 {$co ...
- PhotoSwipe.js 相册展示插件学习
PhotoSwipe.js官网:http://photoswipe.com/,在这个网站上可以下载到PhotoSwipe的文件以及相关的例子. 这个组件主要是用来展示图片.相册用的,还是很实用的. 一 ...
- Redux1
Redux 写在前面 写React也有段时间了,一直也是用Redux管理数据流,最近正好有时间分析下源码,一方面希望对Redux有一些理论上的认识:另一方面也学习下框架编程的思维方式. Redux如何 ...
- WebApp 中用 hashchange 做路由解析
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- 关于Java(标识符规则)
Java 是大小写敏感的语言. Java 标识符组成 Java 标识符组成: 字母,数字,下划线和美元符 $ Java 标识符规则 仅包含 字母,数字,下划线和美元符 开头不能使数字 不能使 Java ...
- Unity3D中的Coroutine详解
Unity中的coroutine是通过yield expression;来实现的.官方脚本中到处会看到这样的代码. 疑问: yield是什么? Coroutine是什么? unity的coroutin ...