<<返回上一页

W5500EVB作为HTTP客户端


关键词:HTTP Client  W5500  WIZnet  W5500EVB  HTTP客户端


本节我们将在W5500上面实现一个HTTP Client程序去连接网络服务器Yeelink平台。野火开发板预留有温湿度传感器DHT11的接口,因此我们将通过W5500将采集到温度和湿度信息上传Yeelink平台, 并且在Yeelink平台实时观察温湿度变化情况。Yeelink是一个免费的云平台,旨在利用无线网络、开源硬件和软件,智能手机和App共同打造一个家庭智能中心打开。打开Yeelink平台服务器网页,点击“快速开始”,我们可以注册一个账号, 登陆后,可以添加自己的设备和传感器。它将复杂的传感器以极简的方式组到同一个网络内,可满足智能家居的各种需求。通过Yeelink提供的数据接口,用户可以把自己的传感器通过互联网接入Yeelink云平台,从而实现随时随地获取传感器数据, 为一些智能家居设备接入互联网提供了云平台支持。具体的设备添加过程,Yeelink平台有详细的介绍,在此就不多解释。在申请账号时要注意生成的API KEY,添加设备时会生成一个URL请求,里面提供了设备ID device/xxxx,传感器ID sensor/xxxx。 这几个信息与程序开头建立的请求报文中信息是一一对应的,因此应该把程序中这些信息修改为我们自己申请账号和添加设备是得到的信息。同大多数开源平台一样,Yeelink提供的API也是基于HTTP协议提交和接收数据。有关于API文档的详细介绍请参考Yeelink网站。 接下来简单分析一下程序,main.c主文件实现W5500上传数据的主流程,bsp_dht11.c文件实现对温湿度数据的采集,http_client文件实现W5500与服务器的的连接以及数据上传。初始化函数没有具体的变化,在此就不多讲解。为了使程序能方便地组建Yeelink所要求 的JSON数据格式,我们把采集到数据直接替代这个字符串中的xx即可。device/ID/sensor/ID 这两处ID 已经在Yeelink网站上注册得到,一个是设备ID,一个是设备上的传感器的ID,同时,一个设备可以有若干个传感器。U-ApiKey则是你的身份识别码,只有正确提交 U-ApiKey才可以在Yeelink上面更新数据。Content-Length:后面的12,指的就是 {"value":xx} 的长度,更具体的格式可以翻阅Yeelink的API文档。需要注意的是,在C语言中,双引号 “”需要使用转义字符。

HTTP Client实现原理图如下:

主循环代码如下:
	 while(1)
	{
		switch(getSn_SR(ch))
		{
			case SOCK_INIT:
				connect(ch, yeelink_server_ip ,yeelink_server_port);
			break;
			case SOCK_ESTABLISHED:
				if(getSn_IR(ch) & Sn_IR_CON)
				{
					setSn_IR(ch, Sn_IR_CON);
				}
				if( DHT11_GetValue(temp_rh))
				{
					memcpy(Buffer,post[i],strlen(post[i]));
					Buffer[231]=temp_rh[i]/10+0x30;		  
					Buffer[232]=temp_rh[i]%10+0x30;
					send(ch,(const uint8 *)Buffer,sizeof(Buffer));
					i=!i;
					printf("RH:%d, Temp:%d\r\n", temp_rh[0], temp_rh[1]);
				}
				Delay_ms(500);
				close(ch);
				break;
				case SOCK_CLOSE_WAIT: 
				break;
				case SOCK_CLOSED:  
						printf("Send to Yeelink:OK\r\n");                 
						socket(ch, Sn_MR_TCP,anyport++ , 0x00);   
				break;
				default:
				break;
			}   
	}
	
HTTP Client的测试步骤如下
  1. HTTP客户端例程采用默认的IP信息,所以在w5500_conf.c文件中设置ip_from为IP_FROM_DEFINE。
  2. 对代码进行编译,之后将程序烧录到野火开发板。
  3. 连接好网线,USB串口线。打开串口调试工具,复位野火开发板,从输出结果可以得到图1设置信息。
  4. 我们根据串口提示的信息登录Yeelink账号,打开我的设备→管理设备,就可以看到具体的温度和湿度信息,我们可以看到如图2的实时温湿度信息。

图1:httpc串口打印信息

图2:实时的温湿度读取信息


例程下载:【HTTP Client】
编译环境:keil V5.11
硬件要求:W5500EVB