目录
前段时间利用手边的ESP8266小WiFi模块尝试接入了Yeelink平台,今天想尝试把ESP8266接入乐为物联平台。有了上次的基础,所以今天一个上午就初步调通了。下面分享一下我们调试过程。
物联网架构分为三层,即“云端服务器 -> 设备 -> 传感器&控制器”的架构。
“设备”的作用是将设备的采集数据发送到云端服务器上或者将控制数据返回给设备,“
设备”前端能够与测量设备进行通信(例如RS232接口,RS485接口),后端需要具备网络功能(例如GPRS,WI-FI和以太网功能);
我的理解
我的设备:
传感器与控制器 这里都是搭载在我们的某一个设备上的。
所以要想实现把搭载ESP8266的硬件接入乐为物联,首先要大致了解乐为物联,然后自己申请一个账号,并且创建一个设备并且为其添加几个传感器和控制器。
安信可科技推出ESP8266系列的 WiFi芯片为如今特别热门的物联网提供了低成本的解决方案。内置WiFi前端和高性能的32位ESP32MCU,内置无线网络协议IEEE802.11b/g/n 协议栈以及 TCP/IP 协议栈,能够实现用户串口或 TTL 电平数据到无线网络之间的转换,从而实现数据借助WiFi模块在局域网的无线传输和网络传输 。想初步了解ESP8266怎么使用可以参考我的博文 ESP8266初识小结
在线调试 是乐联网我们调试API 提供的模拟工具。指的是我们虽然在乐联网申请了账号创建了设备。但是尚未把设备接入互联网,或者还不知道如何把设备接入乐联网。我们可以先用在线工具来进行测试。测试通了之后,你就知道连接乐联网的大致HTTP请求该怎么写,该包含哪些东西了。
API接口在线调试 页面
HTTP在线测试 页面
这里我们就简单的先测试 【上传测量设备数据】, 这也是大多是情况我们最常用的功能。
其实这一步还比较简单,按照要求写入自己的UserKey,稍微需要注意的两点就是
数据格式 这里的数据格式是一个括号,里面也是一个或者几个JSON的数据形式。这里写入我们要上传这个设备哪一个传感器的当前值。
所以从这里我们也可以看到,要把数据上传到乐联网
使用的是POST请求
上面已经实现了模拟在线调试,这会我们才真正的使用ESP8266WiFi模块与乐为物联的Host建立连接,只不过我们是把ESP8266WiFi模块通过USB-TTL接在PC端的串口调试助手上,通过AT指令对ESP8266进行配置,建立连接,建立连接之后再发送POST请求。
我把这个过程大致分为四步:
//AT指令发送时记得勾线发送新行
AT+RST //复位
AT+CIPMODE=1 //STA模式
AT+CIPMUX=0 //单连接模式
AT+CWMODE=1 //透传模式
AT+CWJAP="412","cxjlb412" //连接WiFi 这里是WiFi和密码
AT+CIPSTART="TCP","api.lewei50.com",80 //与乐联网建立TCP连接
AT+CIPSEND //进入透传开始发送数据
/* 这里使用透传模式有一个好处 就是一般不会轻易断开连接,如果不使用透传模式,TCP连接容易断开,下次发数据还要重新建立连接 */
//开机自动进入透传 并且连接到乐联网
AT+SAVETRANSLINK=1,"api.lewei50.com",80,"TCP"
建立了TCP连接之后 第4步最关键的了,就是要发送POST请求了。这是最后一步,也可以说是最关键的一步,我这一上午大多数时间都在折腾这一步。从模拟工具在线测试,我们可以看到POST 请求大致包含
请求类型 POST /api/V1/gateway/Updatesensors/01 HTTP/1.1
UserKey **
Host 地址:open.lewei50.com
JSON数据 [{“Name”:”T1”,”Value”:25}]
但是具体怎么放在一起,以什么形式发送过去,一直不知道,尝试了很多次也一直报错。
一直在查找这个问题的资料,后来在乐为物联的平台上一篇文章上找到了答案。
【爱好者】快速搭建室内颗粒物测试系统
这虽然是一个Arduino的工程项目,用的是W5100以太网控制器,但是它的源码中还是有有提及POST数据格式。具体格式如下:
POST /api/V1/gateway/Updatesensors/02 HTTP/1.1
userkey: afe8c5*************b2f6b7f69fa7
Host: open.lewei50.com
Content-Length: 26
Connection: close
[{"Name":"temp","Value":25}]
//1.数据长度就是最后一句JSON数据的字节长度
//2.JSON前面的的一行新行必不可少
//一次可以上传多个数据,但是这些传感器必须在同一个设备下,因为第一句已经写了01/02……
//还需要注意两次POST请求的间隔至少10s,不能太过频繁的请求。
其实只要第二个 PC串口的调试好了,任何有串口的硬件搭载上ESP8266都可以实现这个功能。我是常用STM32的核心板,所以就把ESP8266挂载STM32上了。代码不过是通过MCU的串口,模拟上面的AT 指令、POST请求。
在STM32上调试的代码分享在这里
乐联网使用详细手册 html
快速搭建室内颗粒物测试系统 HTML
乐为物联 TCP 长连接 实现反向控制
爱好者】快速搭建室内颗粒物测试系统