官网DTU-Solution难用!!!!我教你啊

引言:

移远无线通信模组让万物互联成为现实, QuecPython开启全新的模组开发方式, 用最简单易用的编程语言开发最前沿的无线通信产品.

自QuecPython面世以来, 以解析型; 可嵌入; 面向对象; 可交互; 简单易学这些优于传统的开发方式的优点而深受广大开发者好评.

在此基础上为了更加快速地协助QuecPython客户项目开发落地, QuecPython团队除却提供网址WIKI/文档/在线支持外. 还提供大量Solutions方案供客户参考借鉴. 其中DTU方案最为受客户青睐. 目前DTU方案官方已出具两套: 一套精简(simplified version)版本; 一套全功能(Full-featured version)版本. 精简版本较为简单, 本文不做介绍. 以下内容均为全功能版本相应介绍. 

不少体验客户反馈拿到官方Solutions_DTU方案直接下载到模块进行运行, 却会发现会出现报错而不能运行的现象. 怎么回事呢? 移远QuecPython的Solutions方案有问题吗? 答案肯定不是的. 只是作为一个开源的Solutions方案, 肯定是聚合了众多功能于一体的. 这也导致了Solutions方案代码不能直接运行这一现状. 针对这一现状, 本文将分享实际运行Solutions_DTU方案所遇到的种种问题及解决方案.

说明: 由于DTU(Full-featured version)源码中有相关使用介绍, 本文不会详细介绍DTU的基础使用部分, 只介绍使用中容易遇到的"坑", 辅助大家快速调试. 有关基础使用部分直接参考开源项目中的文档说明.

DTU-Solution基础说明

DTU: 英文全称Data Transfer Unit, 数据传输单元, 是专门用于将来自于设备端MCU的串口数据通过无线通信网络传送至服务器的无线终端设备. 

业务逻辑: 传感器采集数据发送给设备端MCU, 设备端MCU通过串口将采集到的数据通过DTU发送到服务器, 服务器接收到数据可以进行分析/处理/显示/保存等操作. 

核心功能

  1. 支持本地参数配置, 可自行修改(dtu_config.json)配置文件; 也可通过(DTU-tool)工具配置.
  2. 通道支持TCP、MQTT、阿里云、腾讯云、移远云多种协议和云平台
  3. 支持OTA升级
  4. 支持数据离线存储
  5. 在网络连接不稳定情况下,将发送失败的数据暂存至本地,在网络恢复后优先将本地数据发送至云端

注意事项

正如引言所介绍DTU(Full-featured version)源码中有相关使用使用介绍, 本文就不重复赘述了. 本文主要辅助介绍一下具体使用中容易遇到的”坑”.

首先说明下所谓的这些坑的由来: 其主要原因就是因为”她”是全功能的. 因为全, 所以导致”她”对运行平台的要求比较苛刻. 但苛刻的要求却不是所有的模块或者说所有的固件都能满足, 这也导致了部分客户直接运行报错的问题. 当然也有部分就是BUG. 挨打我站稳了. 各位大侠手下留情. 

在正式介绍这些所谓的”坑”之前. 还是先介绍下初步使用中容易误解的点吧. 唱戏先搭戏台, 调试肯定需要先将环境搭建好. 相信看到看到这篇文章的客户对QuecPython的环境搭建已经不陌生了. 但DTU的环境却鲜为人知. 这个锅必须让DTU-Solution的编写者长期来背 - 为什么不把这块介绍清楚. 

怎么回事呢? 其实就是重要的事情没有说三遍. 正如上文提到的: DTU-Solution有其独特的开发使用环境, 这个环境跟QuecPython的开发环境是存在区别. 不但需要QuecPython开发还需要DTU参数的配置的环境. 而这个配置环境是独立于QuecPython开发环境的. 说白了就是: 

DTU_GUI配置交互工具的通信口不是Python交互口!!!

DTU_GUI配置交互工具的通信口不是Python交互口!!!

DTU_GUI配置交互工具的通信口不是Python交互口!!!

重要的事情说三遍. 这边DTU-GUI配置交互工具的通信口是DTU数据实际收发数据的物理串口. 如下图所选的COM口就是USB转TTL芯片对应的COM口, 转换芯片的引脚连接在模块的物理串口UART2(物理UART可以配置, 根据实际选择)上.  

DTU-Solution使用

经过上述的注意事项, DTU-Solution的开发环境总算是搭建起来了. 结合之前文章介绍的QuecPython开发环境的搭建介绍. 我们就可以实实在在的进行DTU-Solution的使用及修改了. 但绝大多数客户下载了源码运行后却直接报错no module named 'quecIot'. 接下来进入本文又一个重点: 

问题一. no module named 'quecIot'

DTU-Solutions方案默认会上电检查固件与代码是否需要迭代的情况. 默认使用的云服务器为移远云服务. 但值得一提的是并非所有的固件都能支持移远云, 这也就导致了本文说的第一次报错: ImportError: no module named 'quecIot'.

明白报错的原因, 那我们就可以着手解决了. 首先我们通过修改dtu_config.json文件可以开启或关闭部分功能. 这边我们关闭固件与代码的升级功能. 具体修改如下图:

但此时我们再次上次行的配置文件运行还是会保之前一样的错误. 这是为什么呢? 原因很简单. 因为配置功能只能屏蔽逻辑代码部分, 却没有屏蔽调用库添加部分. 所以我们还需要修改文件.\dtu\code\modules\QuecThing.py文件. 修改如下:

至此. Solutions_DTU的大部分功能都可以正常使用了. 但正常使用私有的MQTT部分却不管怎么传参都会报错. 这是为什么呢?

问题二. MQTT参数问题

通过了问题一的修改, DTU的测试功能基本可行, 但私有云的MQTT部分却还是会有问题. 提示是连接参数异常. 但即便尝试了dtu_config.json文件的所有参数修改. 发现都不能正常连接. 这是为什么呢?

通过底层代码的查看小编发现. DTU的作者在封装MQTT初始化主题函数的时候没有封装 用户名(产品ID): user 参数, 导致参数始终缺少一个导致不能正常连接.

: 该问题已与作者协商优化. 最新版本中已经优化该问题. 老版本客户更新版本(DTU-GUI也也同步优化, 更新记得同步)亦可解决. 

还是那句, 知道了问题, 下面就是代码的修改了. 直接截图截图展示.

dtu_config.json文件

dtu.py文件

mqttiot.py文件

重点修改上述三个文件的对应位置, 有关为何如此修改部分相信看到上图的源码大家也知道为什么了. 完成后官方的Solutions_DTU方案便能够正常使用所有功能了.

总结:

如上为小编亲身使用遇到的一些问题, 内容不是很多. 主要目的也不是真的介绍这么一个DTU的功能. 只是想抛砖引玉的介绍下开源代码Solution的调试过程; 遇到问题的分析思路. 不足之处也欢迎大佬指正. 附链接如下:

官方solution源码地址:

QuecPython · GitHub

DTU-solution源码地址:

GitHub - QuecPython/solution-DTU: DTU solution based on QuecPython

附言:

后期小Q也会陆续分享其他QuecPython学习心得,欢迎各位看官沟通交流。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值