|
说完了【MCU实战经验】+stm32f4 + uCOS-III(V3.0.3) + LWIP(V1.4.0) ,总觉得该用网络做点什么来结尾。后来看到这个活动里,有人提到Yeelink ,后来看了下,觉得还是不错的。就玩了一下,之前的网友说的稍显简略,我在这里就狗尾续貂说一下,这个网站怎么用吧。 首先,主页http://www.yeelink.net/。进去之后注册,注册之后会有一个API-KEY用于验证你访问网站上注册设备的权限,然后是建立你的设备,传感器,同时网站会产生设备ID和传感器ID,这些会在后面的HTTP请求里用到。 层次结构是:一个设备包含很多传感器,一个传感器包含很多数据点。 其次,和网站进行互动,实质是通过HTTP协议传输一些请求,比如POST,PUT,DELETE。你可以通过查看相关API来了解什么样的请求完成什么样的功能,一看便知。令人欣慰的是,这个网站有个人性化的地方,就是这里http://www.yeelink.net/developer/debug,你可以通过设置相应的接口,API-KEY,HTTP请求方式,POST数据,在不用任何终端的情况下,进行调试。这些内容怎么填,根据你的需要(创建数据点?,编辑数据点?,删除数据点?或是管理传感器),去看网站上提供的API说明http://www.yeelink.net/developer/apidoc/11,填好之后,点击发送,相应的HTTP请求和服务器响应会出现在下面。 POST /v1.0/device/xxxx/sensor/xxxxx/datapoints HTTP/1.1 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.7; rv:9.0.1) Gecko/20100101 Firefox/9.0.1 Host: api.yeelink.net Accept: */* U-ApiKey: xxxxxxxxxxxxxxxxxxxxxxxx Content-Length: 11 Content-Type: application/x-www-form-urlencoded {"value":1} 而这些HTTP请求字符串就是你的终端要发给服务器的数据。所以就算你不了解HTTP,也可以玩。话多了,自己探索吧。待会儿上传个tcp/udp客户端服务器的软件。也可以用这个软件测试下,这个网站的功能,这样就避免了在网站内部测试忽略了实际上网络传输的过程。 实现与yeelink数据交互,首先要在网站上注册并创建设备和传感器。然后调好stm32的网络终端(这里要实现的是一个tcp客户端,对于带os的lwip来说,就是创建一个线程,具体过程可以参考老衲五木的最后一章API的使用说明,测试可以用我待会儿上传的那个软件)。然后连接到可以访问网络的路由器,注意路由器的设置与stm32网络终端的ip获得方式要一致,要么静态ip,要么dhcp。我用的dhcp,一旦成功获得ip地址,就可以正常访问网络了。接下来就是根据你的要求,进行建立,绑定,连接,发送,释放的过程了。服务器使用的端口是http通用的80端口。 最后再说一句,如果你想用dns的话,可以在lwipopts.h中设置LWIP_DNS为1,同时修改一个MEMP_NUM_SYS_TIMEOUT宏,这个宏是当前超时事件数,你添加了一个功能超时事件数就会增加,因此必须与之对应,实际上设置LWIP_DHCP为1的时候也可能出现这个状况。在定义了LWIP_DNS之后,在init.c的初始化函数中多调用一个dns_init函数。之后就可以用netconn_gethostbyname函数获得ip地址了,这个函数只有两个参数,一个const char* 是穿进去的网站网址,另一个是一个ip地址结构体指针,用于填充解析出来的ip地址。返回值是一个结果 * @return ERR_OK: resolving succeeded * ERR_MEM: memory error, try again later * ERR_ARG: dns client not initialized or invalid hostname * ERR_VAL: dns server response was invalid 一个细节,DNS采用的域名解析的服务器默认是208.67.222.222,查了一下,美国的resolver1.opendns.com。同样你也可以用dns_setserver设置DNS服务器ip地址。里面有两个参数,一个是索引号,一个是服务器的ip地址。索引号是不能大于DNS_MAX_SERVERS这个宏的。 另一说明,LWIP实现的DHCP和DNS都是客户端,有人想实现服务器可能要自己搞哦。 好了,终于说完了。热烈欢迎拍砖讨论! |
SocketTool.rar
下载404.84 KB, 下载次数: 230
【银杏科技ARM+FPGA双核心应用】STM32H7系列35——USB_VCP_FS
【银杏科技ARM+FPGA双核心应用】STM32H7系列28——USB_HID
粉丝分享 | 图说CRC原理应用及STM32硬件CRC外设
【银杏科技ARM+FPGA双核心应用】STM32H7系列56——CAN
【银杏科技ARM+FPGA双核心应用】STM32H7系列25——IWDG
如何在 Vitis 中使用 UIO 驱动框架创建简单的 Linux 用户应用
STM32 IAP应用中的几个常见问题
TFT LCD 控制接口FSMC/LTDC/DSI 应用文档
介绍FreeRTOS基础及其应用
【银杏科技ARM+FPGA双核心应用】STM32H750福利
微信公众号
手机版
回复:【MCU实战经验】+stm32f4 + uCOS-III(V3.0.3) + LWIP(V1.4.0)应用与结贴
回复:【MCU实战经验】+stm32f4 + uCOS-III(V3.0.3) + LWIP(V1.4.0)应用与结贴
回复:【MCU实战经验】+stm32f4 + uCOS-III(V3.0.3) + LWIP(V1.4.0)应用与结贴
不好意思 第二个问题解决了 应该是用冒号分隔数据
继续加油!
RE:【MCU实战经验】+stm32f4 + uCOS-III(V3.0.3) + LWIP(V1.4.0)应用与结贴
RE:【MCU实战经验】+stm32f4 + uCOS-III(V3.0.3) + LWIP(V1.4.0)应用与结贴