ESP8266移植MQTT连接中移ONENET

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/zhuzhw/article/details/53573317


一、开发环境准备

a)         安装安可信IDE和cygwin, eclipse一套开发环境,说白了就是为eclipse配置了一套参数。确实方便。

b)        下载ESP8266 RTOS SDK,有安可信版本,可以在eclipse上按教程直接导入。

c)         自己的文件在APP目录下。编译时会编译APP目录下所有文件和目录。增加目录时需要在目录下复制一个MAKEFILE。

d)        按照文档在user_main.c里增加自己的初始化代码和创建任务。基本上用串口进行调试。操作系统相关调用需要参考FreeRTOS相关文档。

二、移植MQTT

a)         把MQTT Packet一个文件也不需要改整个目录复制到APP中,注意增加MAKEFILE。

b)        将MQTT C版本的 mqttclient.c,和.h以及两个RTOS相关的文件复制过来。

c)         Mqttclient需要的RTOS接口主要有创建任务,定时器,MUTEX。另外还有两个TCP连接,断开,读,写等传输的操作。

d)        先调试的是TCP传输,这部分还用不到MQTT协议。ESP8266移植的是LWIP,但接收接口都是阻塞接收。由于LWIP任务优先级高,阻塞接收让MQTT用于计算超时的操作系统调用都失去了作用,所以改成了非阻塞,非阻塞时没有接收成功只能从errno里体现,所以只能把errno extern过来。



e)        

f)          前面还有一系列设为station模式,联网等操作,RTOS SDK文档里都可以查到。

三、修改MQTT适应ONENET

a)         ONENET注册账号后可以添加项目和产品。项目和产品都有ID,协议选择公开协议,MQTT。

b)        产品在MQTT Connect时会用到这些ID。按ONENET要求版本要填4。

c)         连接成功后可subscribe和publish. 系统有保留的比如$creq是系统命令,不能订阅成功,但下发的命令都可以收到。因此就手动加了一个订阅函数,不向服务器订阅,只在本地增加一个个过滤器$creq/#,就可以用回调函数处理命令了。

d)        

e)        数据上传用publish到$dp的主题即可。格式可以参考文档。选择了json的格式,ESP8266 SDK里已经集成了现在的cjson可用。按格式上传后就能在网站上看到相应的数据了。

f)          用MQTT的协议不用ONENET网站的控制命令下发。但是看到了有通过HTTP下发命令的接口。看来想省事直接用ONENET的APP来控制是不行的了。后面考虑在Android上实现。

展开阅读全文

没有更多推荐了,返回首页