现在的物联网平台还是很多的,像阿里云、ONENET、腾讯云、机智云平台等等(排名不分先后),都为开发者提供了免费的设备接入服务。这几节,咱们来研究下如何让ESP8266来接入这些平台。
今天先说下ONENET平台,之前搞活动,送了很多麒麟系列的开发板,玩的人应该不少。
接入物联网平台,进行数据通信,可用的协议有很多。例如HTTP、Modbus、EDP、MQTT、TCP透传等等,前段时间ONENET还搞了个MQTTS,算是对原有MQTT协议做了一些约束。如果是有过网络通信经验的人,看到这里应该是比较亲切的。如果没有这方面经验,也不用紧张。因为我们是应用工程师,会用就行。
以Modbus为例,就是用串口/网口做为通信接口,构建了一个使用方便、规则严格的通信协议。说它方便,是因为使用的时候,只要发送特定的几个指令,就能获得想要的数据。说它严格,是因为必须严格遵守Modbus的协议,通信才能正常进行。
那么MQTT协议到底是什么?这里摘用网上的一段说明:
简介:
MQTT协议(Message Queuing Telemetry Transport),翻译过来就是遥信消息队列传输,是IBM公司于1999年提出的,现在最新版本是3.1.1。MQTT是一个基于TCP的发布订阅协议,设计的初始目的是为了极有限的内存设备和网络带宽很低的网络不可靠的通信,非常适合物联网通信。
工作原理:
如上图所示,客户端A连接到消息代理(message broker),消息代理返回确认消息。客户B发布消息温度25度,客户A订阅‘温度’,消息代理把消息推给客户A,客户A发布温度20度,但客户B没有订阅,消息代理不推送。消息B又发布了温度38度,客户A就再次收到订阅的消息38度。最后客户端断开连接。整个过程非常简单清晰,容易理解。
废话有点多,不说了,开始吧!
1
平台账号注册
平台网址:https://open.iot.10086.cn/
这是中国移动的平台,感觉是跟物联网布局有关。
2
添加产品
添加产品的意义在于,你要告诉平台,你要把哪一种产品接入这个平台。可能是家用电器,灯、空调、电视;也可能是工业设备,电源开关、工厂传感器等等。
点击“开发者中心”,进入“控制台”,第一次进来的人可能会有一个引导。鼠标移动到左上角的六边形那里,弹出的下拉框选择“全部产品”,再弹出的页面选择“多协议接入”。
进入“多协议接入”的页面,在“MQTT旧版”下选择“添加产品”:
我这里显示了两个产品,是我之前测试时添加的,你们不用管。依次输入产品名称、选择产品行业、产品类别、产品简介。
然后填写技术参数:
最后点击确定。
3
添加设备
因为同一类产品下面,可能会有多个设备,例如设备1、设备2...所以接下来要添加设备相关的信息。点击刚刚创建的产品,进入 产品概况。在新页面中,记录两个信息:产品ID和Master-APIkey,稍后会用到。
点击左侧的“设备列表”,然后在新的页面中点击“添加设备”。依次填写下列信息:
设备名称随便写一下,鉴权信息写之前记录的Master-APIkey。数据保密性私有,描述信息、设备标签根据实际情况填写。你还能设置设备的坐标~~~
最后点击添加,设备列表会显示你刚刚添加的设备,如下所示:
我这里显示的是我之前添加的设备,仅供参考。其中一个设备在线,是因为我的8266正在工作,你们的刚刚添加的设备应该都不在线。
4
程序编写、调试
接下来,以我的设备mqtt_device_B为例,编写程序,使ESP8266以mqtt_device_B的身份在线工作。程序怎么写?其实官方的SDK中,已经提供了一个完整、可用的例程,我们只需要移植一下即可。
如图所示,按照03节说明的创建工程的方法,将该例程复制出来,创建工程即可。主要修改mqtt_config.h文件下的信息:
如图所示:
MQTT_HOST 指的是IP地址,这里用的是183.230.40.39。这个IP怎么来的?在ONENET的官网首页,有一个链接:开发文档,里面有关于设备开发所有的相关信息。IP也是在这里指定的,所以,这也说明一件事,想做好物联网设备的开发,要认真的看官网提供的文档。
MQTT_PORT 端口,同上。
MQTT_CLIENT_ID 设备ID
MQTT_USER 产品ID
MQTT_PASS 前面提到的Master-APIkey
下面两个是你当前环境下的wifi名称和密码。
除此之外,上面还有一个宏定义:CFG_HOLDER。看后面注释:Change this value to load default configurations。
意思就是说,如果你修改了下面的信息,那么要修改CFG_HOLDER后面的值,否则不会生效。
程序修改完成,保存、清理、编译、下载一条龙,然后重新上电。这里借助串口助手来查看效果。效果如下所示:
从截图上可以看到,当TCP显示收到一些数据的时候,说明已经连接到ONENET平台了。这个时候,在ONENET平台查看设备列表,就会出现设备在线的状态。
点击后面的更多操作,选择下发指令,在新页面中点击“下发指令”。在弹出的页面中选择“字符串”,输入信息:I love my country! 然后点击发送。
这时,在串口助手这里可以看到它收到了信息:
至此,平台和ESP8266的连接已经建立,基于MQTT协议。虽然整个工程代码比较庞大,对于一些新人来说,短时间难以完全掌握。但是前期,先掌握应用方法,后面逐步深入。
注意事项,工程代码下载之后,可以直接使用,但是要改成你的设备信息,不要用我的。
链接:
https://pan.baidu.com/s/1GcrOydhNPO9xbAQq3e3aeQ
提取码:both