热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

ESP8266移植MQTT连接中移ONENET

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


一、开发环境准备

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上实现。


推荐阅读
  • 本文档提供了详细的MySQL安装步骤,包括解压安装文件、选择安装类型、配置MySQL服务以及设置管理员密码等关键环节,帮助用户顺利完成MySQL的安装。 ... [详细]
  • 我们正在使用GNU Make来构建我们的系统,在makefile文件的末尾,我们通过一个名为Makedepends的包含来生成一系列的.d文件。然而,当文件被删除或移动时,依赖关系会中断,我们需要寻找一种方法来优雅地处理这种情况。 ... [详细]
  • 深入探讨Web服务器与动态语言的交互机制:CGI、FastCGI与PHP-FPM
    本文详细解析了Web服务器(如Apache、Nginx等)与动态语言(如PHP)之间通过CGI、FastCGI及PHP-FPM进行交互的具体过程,旨在帮助开发者更好地理解这些技术背后的原理。 ... [详细]
  • Web网络基础
    目录儿1使用HTTP协议访问Web2HTTP的诞生2.1因特网的起源2.2互联网、因特网与万维网2.3万维网与HTTP3网络基础TCPIP3.1TCPIP协议族3.2TCPIP的分 ... [详细]
  • 本文详细介绍如何在Spring Boot项目中集成和使用JPA,涵盖JPA的基本概念、Spring Data JPA的功能以及具体的操作步骤,帮助开发者快速掌握这一强大的持久化技术。 ... [详细]
  • Activity跳转动画 无缝衔接
    Activity跳转动画 无缝衔接 ... [详细]
  • 万事起于配置开发环境
    万事起于配置开发环境 ... [详细]
  • 深入解析Android Activity生命周期
    本文详细探讨了Android中Activity的生命周期,通过实例代码和详细的步骤说明,帮助开发者更好地理解和掌握Activity各个阶段的行为。 ... [详细]
  • Golang与微服务架构:构建高效微服务
    本文探讨了Golang在微服务架构中的应用,包括Golang的基本概念、微服务开发的优势、常用开发工具以及具体实践案例。 ... [详细]
  • 第三周课堂测试1、使用汇编语言编写指令时,用一些简单的容易记忆的符号来代替二进制指令,比机器语言更为方便,属于高级语言。(B ... [详细]
  • 深入理解Java类加载机制及安全防护
    本文探讨了Java类加载的过程,包括加载、验证、准备、解析和初始化五个阶段,并详细解释了每个阶段的具体操作和意义。此外,文章还讨论了Java如何通过双亲委派模型来保障核心API的安全性,以及在特定情况下如何打破这一机制。 ... [详细]
  • Java 中静态和非静态嵌套类的区别 ... [详细]
  • Unity3D入门:实现模型手势操作
    本文主要介绍如何在Unity3D中导入模型并实现基本的手势操作功能,包括模型的旋转、缩放等。通过简单的步骤,帮助初学者快速掌握Unity3D中的模型操作技巧。 ... [详细]
  • 深入解析 Zend Guard 4 功能与配置
    本文旨在通过图文并茂的方式详细介绍 Zend Guard 4 的核心功能及其配置方法,特别适合英文阅读能力有限的技术人员。文中不仅提供了详细的步骤说明,还附带了实际操作中的注意事项,帮助读者更好地理解和应用这一工具。 ... [详细]
  • VMware 15.5.7 中文版激活方法
    本文提供了一种有效的方法来激活 VMware 15.5.7 的中文版本,同时介绍了如何利用最新的激活码进行操作,确保用户能够顺利使用。 ... [详细]
author-avatar
学圆周_486
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有