对于IOT应用,需要把少量的数据定时上传到服务器上,而这不仅需要部署一个服务器,还需要复杂而可靠的协议。而现在,有很多物联网解决方案平台,可提供接入、储存、计算等等服务,其中OneNET是中国移动打造的平台,可以在上面注册一个账号即可使用。可把数据上传上去,它支持丰富的协议,其中MQTT协议(Message Queuing Telemetry Transport,消息队列遥测传输协议)是一种比较适合微处理器的协议,简单轻便、省流量、低功耗,提供即时通讯。
协议也不是太复杂,比较轻量。 在这里要做一个发送MQTT协议的程序,可以把采集数据通过MQTT发送到oneNET上。这里使用一个开源的MQTT库,定时把os_random() % 20 + 15 这个数发送到oneNET服务器上。
1.首先把开源代码下载下来,这里包含了两个,分别是oneNET连接程序和MQTT库,输入以下命令: - git clone https://github.com/tidyjiang8/esp32-onenet.git ~/project/onenet-esp32/
- git clone https://github.com/tidyjiang8/espmqtt.git ~/project/onenet-esp32/components/espmqtt
复制代码2.等下载完之后,在Eclipse新建一个project,同样选择Makefile project with existing code,点击下一步,选中<解压缩文件夹>\cygwin\home\aithinker\project\onenet-esp32,选中Cygwin GCC作为工具链编译器,点击Finish。
3.未有oneNET账号的去申请一下,有的话登陆网页版https://open.iot.10086.cn/,然后点击开发者中心,点击创建产品。
4.填写好产品名称等信息,联网方式选择wifi,接入方式选择公开协议,注意设备接入协议选择MQTT!!! 5. 为这个产品添加一个设备,在产品列表中点击产品名称打开产品管理页面,如下图所示。顺便把产品ID记下来,后面要用到。
6.点击页面中的“设备管理”菜单,进入设备管理页
7. 点击“立即接入设备”,弹出接入设备对话框,设置好设备名称和鉴权信息。最重要的是鉴权信息,这个要记下来,后面也要用。入设备名称和鉴权信息,选择设备的数据保密性,点击“接入设备”完成产品的设备添加。
8.新建好设备之后,记录设备ID,后面要用。现在需要添加数据流来记录数据。点击产品的“设备管理”菜单,找到已创建好的设备,如下图所示。
9. 为设备新建一条数据流,点击“数据流管理”进入设备的数据展示页面。
10. 点击“添加数据流”,弹出添加数据流对话框。此处可以建立多个数据流,但此处只建一个temperature,用以记录温度。
11.添加应用来在线显示数据。在产品管理页面点击“应用管理”菜单,进入应用管理页面,点击创建应用。把预先的控件拖入,此处不细讲了,数据流选择刚才设定的设备和数据流,按保存即可。
12.完成之后打开onenet-esp32/main/include/config.h文件,之后修改WIFI设置与onenet账号有关设定: - WIFI_SSID : ESP32连接上的WIFI名字
- WIFI_PASS : ESP32连接上的WIFI密码
- ONENET_DEVICE_ID : 上面新建设备之后系统生成的设备ID号码
- ONENET_PROJECT_ID : 上面新建产品之后系统生成的产品ID号码
- ONENET_AUTH_INFO : 上面新建设备的时候自己填写的鉴权信息
- ONENET_DATA_STREAM : 上面新建数据流的时候自己起的名字
- ONENET_PUB_INTERVAL : 设定数据更新间隔,单位为秒
复制代码
13.设置完之后保存一下。然后在build的时候按序运行Menuconfig和Download。在menuconfig中设置好串口端口号码,耐心等待一下即可编译下载完。(不会的,参考一下之前的教程)
14.路由器上看见多了一个设备,正是ESP32
15.数据上传服务器后,APP显示的效果。
|