热门标签 | 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上实现。


推荐阅读
  • baresip android编译、运行教程1语音通话
    本文介绍了如何在安卓平台上编译和运行baresip android,包括下载相关的sdk和ndk,修改ndk路径和输出目录,以及创建一个c++的安卓工程并将目录考到cpp下。详细步骤可参考给出的链接和文档。 ... [详细]
  • intellij idea的安装与使用(保姆级教程)
    intellijidea的安装与使用(保姆级教程)IntelliJ在业界被公认为最好的java开发工具,尤其在智能代码助手、代码自动提示、重构、JavaEE支持、各类版本工具(gi ... [详细]
  • android listview OnItemClickListener失效原因
    最近在做listview时发现OnItemClickListener失效的问题,经过查找发现是因为button的原因。不仅listitem中存在button会影响OnItemClickListener事件的失效,还会导致单击后listview每个item的背景改变,使得item中的所有有关焦点的事件都失效。本文给出了一个范例来说明这种情况,并提供了解决方法。 ... [详细]
  • Mac OS 升级到11.2.2 Eclipse打不开了,报错Failed to create the Java Virtual Machine
    本文介绍了在Mac OS升级到11.2.2版本后,使用Eclipse打开时出现报错Failed to create the Java Virtual Machine的问题,并提供了解决方法。 ... [详细]
  • Android Studio Bumblebee | 2021.1.1(大黄蜂版本使用介绍)
    本文介绍了Android Studio Bumblebee | 2021.1.1(大黄蜂版本)的使用方法和相关知识,包括Gradle的介绍、设备管理器的配置、无线调试、新版本问题等内容。同时还提供了更新版本的下载地址和启动页面截图。 ... [详细]
  • 本文介绍了Android 7的学习笔记总结,包括最新的移动架构视频、大厂安卓面试真题和项目实战源码讲义。同时还分享了开源的完整内容,并提醒读者在使用FileProvider适配时要注意不同模块的AndroidManfiest.xml中配置的xml文件名必须不同,否则会出现问题。 ... [详细]
  • 基于移动平台的会展导游系统APP设计与实现的技术介绍与需求分析
    本文介绍了基于移动平台的会展导游系统APP的设计与实现过程。首先,对会展经济和移动互联网的概念进行了简要介绍,并阐述了将会展引入移动互联网的意义。接着,对基础技术进行了介绍,包括百度云开发环境、安卓系统和近场通讯技术。然后,进行了用户需求分析和系统需求分析,并提出了系统界面运行流畅和第三方授权等需求。最后,对系统的概要设计进行了详细阐述,包括系统前端设计和交互与原型设计。本文对基于移动平台的会展导游系统APP的设计与实现提供了技术支持和需求分析。 ... [详细]
  • 本文概述了JNI的原理以及常用方法。JNI提供了一种Java字节码调用C/C++的解决方案,但引用类型不能直接在Native层使用,需要进行类型转化。多维数组(包括二维数组)都是引用类型,需要使用jobjectArray类型来存取其值。此外,由于Java支持函数重载,根据函数名无法找到对应的JNI函数,因此介绍了JNI函数签名信息的解决方案。 ... [详细]
  • 本文介绍了Android平台各个版本的API级别、版本号以及平台亮点,从Android 1.0到Android 10.0,共涵盖了多个版本的特点和发展历程。详细内容请参考https://developer.android.google.cn/guide/topics/manifest/uses-sdk-element.html。 ... [详细]
  • 初探PLC 的ST 语言转换成C++ 的方法
    自动控制软件绕不开ST(StructureText)语言。它是IEC61131-3标准中唯一的一个高级语言。目前,大多数PLC产品支持ST ... [详细]
  • 原文地址:https:www.cnblogs.combaoyipSpringBoot_YML.html1.在springboot中,有两种配置文件,一种 ... [详细]
  • XML介绍与使用的概述及标签规则
    本文介绍了XML的基本概念和用途,包括XML的可扩展性和标签的自定义特性。同时还详细解释了XML标签的规则,包括标签的尖括号和合法标识符的组成,标签必须成对出现的原则以及特殊标签的使用方法。通过本文的阅读,读者可以对XML的基本知识有一个全面的了解。 ... [详细]
  • 使用eclipse创建一个Java项目的步骤
    本文介绍了使用eclipse创建一个Java项目的步骤,包括启动eclipse、选择New Project命令、在对话框中输入项目名称等。同时还介绍了Java Settings对话框中的一些选项,以及如何修改Java程序的输出目录。 ... [详细]
  • 如何实现JDK版本的切换功能,解决开发环境冲突问题
    本文介绍了在开发过程中遇到JDK版本冲突的情况,以及如何通过修改环境变量实现JDK版本的切换功能,解决开发环境冲突的问题。通过合理的切换环境,可以更好地进行项目开发。同时,提醒读者注意不仅限于1.7和1.8版本的转换,还要适应不同项目和个人开发习惯的需求。 ... [详细]
  • Hibernate延迟加载深入分析-集合属性的延迟加载策略
    本文深入分析了Hibernate延迟加载的机制,特别是集合属性的延迟加载策略。通过延迟加载,可以降低系统的内存开销,提高Hibernate的运行性能。对于集合属性,推荐使用延迟加载策略,即在系统需要使用集合属性时才从数据库装载关联的数据,避免一次加载所有集合属性导致性能下降。 ... [详细]
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社区 版权所有