目录
前段时间利用手边的ESP8266小WiFi模块尝试接入了Yeelink平台,今天想尝试把ESP8266接入乐为物联平台。有了上次的基础,所以今天一个上午就初步调通了。下面分享一下我们调试过程。
0.了解乐为物联
1.乐为物联的框架结构
物联网架构分为三层,即“云端服务器 -> 设备 -> 传感器&控制器”的架构。
- “传感器&控制器”是指可以采集、测量数据或者可以被控制的设备或仪器;
“设备”的作用是将设备的采集数据发送到云端服务器上或者将控制数据返回给设备,“
设备”前端能够与测量设备进行通信(例如RS232接口,RS485接口),后端需要具备网络功能(例如GPRS,WI-FI和以太网功能);
- “云端服务器”上部署了数据存储、分析等的数据库,最后用户通过客户端(电脑、手机)等可以以浏览器的形式访问数据库, 就可以实现丰富多样的基于数据的应用
我的理解
我的设备:
- 指我们连接乐联网的整个硬件平台系统 包括开发板,联网模组(这里是ESP8266),传感器模组,控制执行模组
- 目前支持Arduino 、lw_board、lw_modbus 、也可以自定义其他类型。
传感器与控制器 这里都是搭载在我们的某一个设备上的。
- 传感器 这里指的是我们感知外界 能够获取物理世界一些参数的媒介
目前支持
- 主要是我们的硬件设备 把数据上传到 乐联网
- 控制器 这里主要指 我们从乐联网对 硬件系统实施控制 目前可以定义 开关量和数值量控制。当然我们也可以监测到当前控制器的状态
所以要想实现把搭载ESP8266的硬件接入乐为物联,首先要大致了解乐为物联,然后自己申请一个账号,并且创建一个设备并且为其添加几个传感器和控制器。
2.ESP8266初试小结
安信可科技推出ESP8266系列的 WiFi芯片为如今特别热门的物联网提供了低成本的解决方案。内置WiFi前端和高性能的32位ESP32MCU,内置无线网络协议IEEE802.11b/g/n 协议栈以及 TCP/IP 协议栈,能够实现用户串口或 TTL 电平数据到无线网络之间的转换,从而实现数据借助WiFi模块在局域网的无线传输和网络传输 。想初步了解ESP8266怎么使用可以参考我的博文 ESP8266初识小结
1.模拟工具在线调试
在线调试 是乐联网我们调试API 提供的模拟工具。指的是我们虽然在乐联网申请了账号创建了设备。但是尚未把设备接入互联网,或者还不知道如何把设备接入乐联网。我们可以先用在线工具来进行测试。测试通了之后,你就知道连接乐联网的大致HTTP请求该怎么写,该包含哪些东西了。
API接口在线调试 页面
HTTP在线测试 页面
这里我们就简单的先测试 【上传测量设备数据】, 这也是大多是情况我们最常用的功能。
其实这一步还比较简单,按照要求写入自己的UserKey,稍微需要注意的两点就是
- 网关标识 这个根据自己的情况,根据你创建的设备的时候的标识,正常系统默认生成 01、02、03……,这里你想测试哪个设备,就写哪个标识。
数据格式 这里的数据格式是一个括号,里面也是一个或者几个JSON的数据形式。这里写入我们要上传这个设备哪一个传感器的当前值。
所以从这里我们也可以看到,要把数据上传到乐联网
使用的是POST请求
- 请求中应包含 UserKey、Host地址、JSON数据
- JSON数据可以单独发一个传感器,也可以一次发好几个传感器数据。
模拟调试成功的返回的响应应该是 successful true 如果是false就要找原因了。
2.PC端 串口调试
上面已经实现了模拟在线调试,这会我们才真正的使用ESP8266WiFi模块与乐为物联的Host建立连接,只不过我们是把ESP8266WiFi模块通过USB-TTL接在PC端的串口调试助手上,通过AT指令对ESP8266进行配置,建立连接,建立连接之后再发送POST请求。
我把这个过程大致分为四步:
- 初始化配置ESP8266 为STA模式,并且可搜索到附近的WiFi热点。
- ESP8266连接WiFi 。(这个WiFi一般指 可以接入Internet的无线路由,也可以是我们手机开的热点,关键是能联网就行)
- ESP8266与乐联网建立TCP连接 ESP8266是TCP Client, www.lewei50.com是TCP Server
- 发送POST请求,上传数据
具体过程如下:
123步都是通过AT指令操作的 所以我把它放在一起
//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,不能太过频繁的请求。
3.STM32硬件调试
其实只要第二个 PC串口的调试好了,任何有串口的硬件搭载上ESP8266都可以实现这个功能。我是常用STM32的核心板,所以就把ESP8266挂载STM32上了。代码不过是通过MCU的串口,模拟上面的AT 指令、POST请求。
4.参考资料
乐联网使用详细手册 html
快速搭建室内颗粒物测试系统 HTML
乐为物联 TCP 长连接 实现反向控制
爱好者】快速搭建室内颗粒物测试系统