tag 标签: MQTT协议

相关帖子
相关博文
  • 热度 5
    2024-10-10 11:38
    80 次阅读|
    0 个评论
    01 物联网行业中存在问题 MQTT是一个基于客户端-服务器的消息发布/订阅传输协议。MQTT协议是轻量、简单、开放和易于实现的,这些特点使它适用范围非常广泛。在很多情况下,包括受限的环境中,如:机器与机器(M2M)通信和物联网(IoT)。开发支持MQTT协议产品,需要搭建测试环境,才能测试本地设备与平台通信。利用公有云平台,如阿里,腾讯云,可以在方案前期,快速跑通产定义,初步完成测试,不依赖MQTT私有服务器搭建。 02 该问题带来的危害及影响 首先MQTT服务器需要时间搭建,如果前期没有在公有云基础上进行程序测试调试,等待服务器搭建完成,再进行测试联调,会耽误项目开发进度。 其次,一些项目的MQTT服务器部署在公司主服务器上,终端设备测试通信时需要和服务器维护人员沟通协调,有时需要服务器做调整,这些工作比较繁琐,消耗时间。如果终端设备在公有平台上,测试完成,最后迁移到正式的设备平台上,会大大节省项目开发时间。 03 解决方法 方法一 1、原理介绍 在阿里云上创建MQTT产品,先用模拟终端MQTTFX测试与阿里云通信,然后用MQTT设备(以 DTU为例)接入阿里云平台测试,MQTTFX与DTU既可以向平台发布消息,也可以订阅平台发送的消息,还可以订阅对方设备向平台发送的消息(需要添加规则引擎)。 2、方案详情 一、在阿里云平台创建产品及设备 阿里云-上云就上阿里云 ①进入阿里云官网完成注册登录,注意一定要实名认证,这样后面才可以创建实例 ②搜索物联网平台,找到物联网企业版实例,缴费,(公共实例免费,现已经无法注册新用户) 缴费之前选充值 这里以公共实例介绍 ③先要在平台创建产品,然后才可以创建相应的设备,填写相应的产品信息 ④在相应的产品下创建设备,并保存相应的设备信息,之后再进行通信的时候会使用 点击帮助文档,可以参数具体操作步骤 把设备证书信息记录下来,可以保存到记事本中 ⑤在产品中添加相应的功能模块 ⑥找到相应的topic,并记录下来 那么上面的步骤就已经完成了阿里云物联网平台上的产品设备创建,下面就可以进行通信测试。 二、使用MQTT.fx进行测试 ①MQTT.fx是pc端的客户端程序,我们可以使用其与服务器通信,实现相应的订阅发布功能 MQTT.fx下载网址 ②点击选择配置文件,填写相应的信息 注意以上填写的数据,我们需要使用到前面在前面在阿里云平台中保存的那些信息去计算出来。 值得注意的是:在User Credentials下的Password设置在文档里知名了signmethod为hmacsha1(哈希sha1算法),而productKey使用的是mqtt.fx工具,并不能直接带入哈希算法,所以我们可以通过以下的链接进行计算 http://xupan.unaux.com/jiami/?i=1 将上述相应的信息填写到配置文件中,注意要点击Apply,这样就完成了配置文件,再去点解connect,出现下图情况,则连接成功 这时候回到阿里云平台上查看相应的设备,会发现设备在线 ③接下来可以在MQTT.fx上先完成通信测试,先去阿里云平台产品找到相应的topic 先进行订阅测试 在平台上发布消息 回到MQTT.fx上,发现接收到消息,说明订阅成功 再来测试一下发布 回到阿里云平台找到相应的日志查看 三、本地设备测试 DTU设备上电,数据线接电脑USB口,用上位机配置另外一个阿里云设备的参数,点击确定配置成功后,重启DTU 设备在线后,观察阿里云平台第二个设备是否上线。 DTU向平台发送信息,信息显示在阿里云平台上 信息显示在阿里云平台上 平台下发指令,测试DTU接收平台订阅消息 3、需要的测试设备或测试环境 阿里云平台,公共实例或者企业版实例 MQTTFX软件 支持MQTT协议的DTU或其他终端设备 方法二 1、原理介绍 在腾讯云上创建MQTT产品,先用模拟终端MQTTFX测试与阿里云通信,然后用MQTT设备(以 DTU为例)接入阿里云平台测试,MQTTFX与DTU既可以向平台发布消息,也可以订阅平台发送的消息。 1、原理介绍 2、方案详情 打开腾讯云官网,注册并登录https://cloud.tencent.com/登录之后点击右上角的控制台点进去 点击控制台进去之后,我们在右侧上栏云产品下搜索《物联网通信》 然后我们点击产品概况,立即使用创建新产品 在认证方式这,我们一点要选择秘钥认证 创建完成之后,我们点击管理,进去创建一个设备! 点击设备列表,管理 显示三元组 以上设备创建好了之后,我们就用MQTT.fx接入。对于MQTT Broker Profile settings参数的说明: 在这里的话,我的参数配置为下: 然后我们点击ok就可以了,然后点击connect 当出现从红灯变成绿灯我们就实现了与腾讯云的连接: 二、使用MQTT.fx进行测试 我们进入设备中查看一下发布主题 然后我们把它复制到MQTT.fx中,发送一个数据,点击publish 然后我们进入云日志中,点击内容日志,就能看到我们给腾讯云发送的消息了 我们进入设备中查看一下订阅主题 然后我们把它复制到MQTT.fx中,点击subscribe 然后我们在腾讯云发送给MQTTFX, 打开腾讯云API Explorer,Publish Msg 如下图填写,Topic和产品ID到自己的腾讯云,产品设置和Topic管理里面找,数据是自己需要下发的真实数据,必须是string 设备在线时,点击发起调用即可 然后我们打开MQTT.fx中会收到我们腾讯云上发来的消息 我们在客户端订阅已经实现了,接下来我们要实现客户端给腾讯云发消息,从而实现双向通信 三、本地设备测试 DTU设备上电,数据线接电脑USB口,用上位机配置另外一个腾讯设备的参数,点击确定配置成功后,重启DTU 设备在线后,观察腾讯云第二个设备是否上线。 DTU向平台发送信息,信息显示在阿里云平台上 信息显示在阿里云平台上 平台下发指令,测试DTU接收平台订阅消息,设备订阅主题, 将此订阅主题,配置到RTU上 打开腾讯云API Explorer,Publish Msg,发起调用 数据在DTU接收窗口上位机上显示 3、需要的测试设备或测试环境 腾讯云平台,公共实例或者企业版实例 MQTTFX软件 支持MQTT协议的DTU或其他终端设备 本文章源自奇迹物联开源的物联网应用知识库Cellular IoT Wiki,更多技术干货欢迎关注收藏Wiki: Cellular IoT Wiki 知识库(https://rckrv97mzx.feishu.cn/wiki/wikcnBvAC9WOkEYG5CLqGwm6PHf) (如有侵权,联系删除)
  • 2024-9-24 15:09
    2 次阅读|
    0 个评论
    一、CAT1 RTU方案简介: 远程终端单元( Remote Terminal Unit,RTU),一种针对通信距离较长和工业现场环境恶劣而设计的具有模块化结构的、特殊的计算机测控单元,它将末端检测仪表和执行机构与远程控制中心相连接。 奇迹MQTT RTU+GNSS+Modbus版本的RTU,用于将远程现场的传感器和执行器数据传输到中央控制系统或监控中心。RTU 通常用于工业自动化、能源管理、环境监测等领域,它可以收集和传输各种类型的数据,如温度、压力、流量、电流、电压等,可以对各种类型的传感器进行远程控制。 二、CAT1 RTU方案的硬件设计分享 1.硬件功能概述 奇迹MQTT RTU+GNSS+Modbus版本的RTU具有5*6贴片卡/外置SIM卡/全网通卡功能,支持北斗/GPS定位,支持卡基站定位,内嵌看门狗,掉线自动恢复。标准工业RS232/485接口,可以支持6-20V的宽电压输入,支持5路DO,5路DI,1路AI。 MQTT RTU+GNSS+Modbus版本的RTU为用户提供标准固件以及对应源码,以及对应的MQTT透传、GNSS、DI、DO、AI、Modbus等功能的操作例程。 2.产品硬件定义 2.1 系统框图: 2.2 HaaS框图: AM430EV5系列SOM板: AM430EV5 SOM板4(5*6卡/GNSS)Haas框图 AM430EV5 SOM板5(全网通卡/GNSS)Haas框图 AM430EV5 SOM板6(插拔卡/GNSS)Haas框图 REV1主板Haas框图 2.3 SCH原理图拆解分析: AM430EV5系列SOM板SCH: 详情请进入奇迹物联wiki知识库获得详解 REV1主板SCH: 详情请进入奇迹物联wiki知识库获得详解 三、CAT1 RTU方案的软件设计分享 1.软件功能概述 功能概述: 网络通讯功能:为了实现远程控制中心对终端测控单元的控制,RTU首先应该具备联网的能力,通过网络将两者连接起来。实现了网络通讯,就要考虑网络稳定的问题,如果不稳定,需要实现断线重连等。服务器确定设备目前在线 参数配置功能:网络通讯可以选择TCP,MQTT等协议。连接TCP服务器,需要配置TCP服务器地址,端口号等参数;连接MQTT服务器需要配置鉴权信息,订阅和发布的Topic等参数。此外,其它复杂功能,也会涉及到一些参数的配置。 网络参数配置功能:上述功能实现后,可以考虑后期维护过程中,当RTU现场维护不方便,使用网络对其进行配置的方式。配置的方式可以选择多种形式,可以将上面的指令稍微修改,也可以另外写一份协议。 心跳功能:当RTU和远程服务器建立连接后,服务器判断设备是否在线,需要RTU定时发送一串数据给服务器,用通信来确认RTU在线。 远程控制功能:依托上述功能的实现,可以轻松地制定一些协议,远程服务器通过下发对应的协议,来控制RTU的DI、DO、AI等接口。控制方式包括读写、定时写、IO联动等。 Modbus功能:工业现场控制中,很多设备都支持Modbus协议。因此RTU实现Modbus协议很有必要。因为大多数设备都是通过01H、02H、03H、04H、05H、06H来控制,所以实现这些功能码基本可以满足工业现场控制设备的需求。 2.软件功能定义 2.1 软件实现功能: AT指令配置设备运行参数,包括:服务器连接IP、端口号;心跳包开启/关闭;心跳包内容;注册包模式;注册包内容。以及复位和查询相关配置参数指令。 可随时选择进入、退出透传模式 心跳保持功能,心跳间隔可配置 网络重连功能 理论上可以发送无限长度数据包 波特率固定为115200,可以根据客户需求定制 网络AT指令和JSON协议配置功能,可以通过服务器下发远程AT指令配置 支持远程升级 支持5路DI,DI可以配置为,上拉/下拉,初始电平,主动上报,定时上报,可以单独读某一路,可以5路同时读 支持5路DO,包含,可配上拉/下拉,初始电平,重启状态,可以单独设置某一路的输出电平,也可以同时设置5路的输出电平 支持1路AI,可以采集4 - 20mA的电流,可以配置阈值,按照配置触发报警,周期上报 闹钟功能,DO定时执行设置动作 IO联动,DI/AI作为输入源,DO跟随动作,包括正向跟随、反向跟随DI;阈值内、阈值外执行相应动作 支持设置50组(01H 02H 03H 04H 05H 06H)指令,设置两组(10H)指令。支持按照设置的功能码等配置,通过Modbus轮训,支持Modbus RTU,JSON三种协议格式上报。 2.2 软件功能模块分析: 按照上面的分析,开发的过程就是实现一个个组件,几个组件完成一个模块,几个模块完成一个项目的开发。 开发过程会从核心组件验证,完整代码详解,调试三个章节来讲,如何使用服务层API或应用层组件中的代码实现组件和模块,从而完成整个项目。 2.3 软件流程图: 3.基开发豆平台开发分析 我们的目的是做一款RTU,根据RTU应该具有的的功能,代码可以分为:数据存储模块,AT指令模块,切卡模块,透传模式切换模块,MQTT模块,心跳模块,掉线重连模块,GNSS模块,DI模块,DO模块,AI模块,JSON模块,闹钟模块,Modbus模块。 模块是根据相似的功能,把对应的代码放到同一个源文件中。每个功能算作一个组件,不同组件组合以来,构成了模块的主要功能。 数据存储组件:包括文件创建,初始化,读写,关闭等。 AT指令组件:包括串口初始化,串口数据接收,发送,数据分析,AT指令解析 切卡组件:包括GPIO初始化,复位切卡 透传模式切换组件:包括串口初始化,串口数据接收,发送,数据分析,切换模式 掉线重连组件:包括连接状态检测,掉线重连 MQTT组件:包括参数配置,创建Socket,连接服务器,发送,接收数据 心跳组件:包括参数配置,定时发送 GNSS组件:包括参数配置,串口初始化,串口数据接收,数据分析,模式切换,定时上报 DI组件:包括参数配置,GPIO初始化,中断检测,模式切换,定时上报,中断上报 AI组件:包括参数配置,ADC接口初始化,电流计算,定时上报 DO组件:包括参数配置,GPIO初始化,模式切换,定时上报,跟随DI或者AI 闹钟组件:包括参数配置,定时,超时动作 JSON组件:包括数据接收,解析,数据发送 Modbus组件:包括参数配置,数据接收,解析,数据发送 上述模块功能大致是按照依赖顺序来的,下面的模块实现可能要基于上面的组件。 AT指令模块 心跳模块 MQTT网络模块 网络AT模块 主任务模块 升级模块 IO模块 文件模块 JSON协议模块 DO模块 DI模块 AI模块 MODBUS模块 ( 注:点击每个组件的名称,可以进入奇迹物联wiki知识库获得详解 ) 四、CAT1 RTU方案成果展示 1.SCH的讲解和Geber文件资料 详情请进入奇迹物联wiki知识库获得详解 2.Datasheet 详情请进入奇迹物联wiki知识库获得详解 3.AT指令手册 详情请进入奇迹物联wiki知识库获得详解 4.产品BOM 详情请进入奇迹物联wiki知识库获得详解 5.固件下载链接 详情请进入奇迹物联wiki知识库获得详解 五、如何了解更多CAT1 RTU方案 本文章源自奇迹物联开源的物联网应用知识库Cellular IoT Wiki,更多技术干货欢迎关注收藏Wiki: Cellular IoT Wiki 知识库 (https://rckrv97mzx.feishu.cn/wiki/wikcnBvAC9WOkEYG5CLqGwm6PHf) 欢迎同学们走进AmazIOT知识库的世界! 这里是为物联网人构建的技术应用百科,以便帮助你更快更简单的开发物联网产品。 Cellular IoT Wiki初心: 在我们长期投身于蜂窝物联网 ODM/OEM 解决方案的实践过程中,一直被物联网技术碎片化与产业资源碎片化的问题所困扰。从产品定义、芯片选型,到软硬件研发和测试,物联网技术的碎片化以及产业资源的碎片化,始终对团队的产品开发交付质量和效率形成制约。为了减少因物联网碎片化而带来的重复开发工作,我们着手对物联网开发中高频应用的技术知识进行沉淀管理,并基于 Bloom OS 搭建了不同平台的 RTOS 应用生态。后来我们发现,很多物联网产品开发团队都面临着相似的困扰,于是,我们决定向全体物联网行业开发者开放奇迹物联内部沉淀的应用技术知识库 Wiki,期望能为更多物联网产品开发者减轻一些重复造轮子的负担。 Cellular IoT Wiki沉淀的技术内容方向如下: 奇迹物联的业务服务范围:基于自研的NB-IoT、Cat1、Cat4等物联网模组,为客户物联网ODM/OEM解决方案服务。我们的研发技术中心在石家庄,PCBA生产基地分布在深圳、石家庄、北京三个工厂,满足不同区域&不同量产规模&不同产品开发阶段的生产制造任务。跟传统PCBA工厂最大的区别是我们只服务物联网行业客户。 连接我们 ,和10000+物联网开发者一起 降低技术和成本门槛 让蜂窝物联网应用更简单~~ 哈哈你终于滑到 最重要 的模块了, 千万不!要!划!走!忍住冲动!~ 欢迎加入飞书“开源技术交流群”,随时找到我们哦~ 点击链接 如何加入奇迹物联技术话题群 可以获取加入技术话题群攻略 Hey 物联网从业者, 你是否有了解过奇迹物联的官方公众号“ eSIM物联工场 ”呢? 这里是 奇迹物联的物联网应用技术开源wiki 主阵地,欢迎关注公众号,不迷路~ 及时获得 最新物联网应用技术沉淀发布
  • 2024-9-24 12:23
    25 次阅读|
    0 个评论
    一、CAT1 DTU方案简介: 远程终端单元DTU,一种针对通信距离较长和工业现场环境恶劣而设计的具有模块化结构的、特殊的计算机测控单元,它将末端检测仪表和执行机构与远程控制中心相连接。 奇迹MQTT DTU版本DTU,用于将远程现场的传感器和执行器数据传输到中央控制系统或监控中心。DTU通常用于工业自动化、能源管理、环境监测等领域,它可以收集和传输各种类型的数据,如温度、压力、流量、电流、电压等。 二、CAT1 DTU方案的硬件设计分享 1.硬件功能概述 奇迹MQTT DTU版本DTU具有5*6贴片卡/外置SIM卡/全网通卡功能,支持卡基站定位,内嵌看门狗,掉线自动恢复。标准工业RS232/485接口,可以支持6-20V的宽电压输入。 MQTT DTU版本DTU为用户提供标准固件以及对应源码,以及对应的MQTT透传、AT指令配置等功能的操作例程。 2.产品硬件定义 2.1 系统框图: 2.2 HaaS框图: AM430EV5系列SOM板: AM430EV5 SOM板1(5*6卡)Haas框图 AM430EV5 SOM板2(全网通卡)Haas框图 AM430EV5 SOM板3(插拔卡)Haas框图 REV1主板Haas框图 2.3 SCH原理图拆解分析: AM430EV5系列SOM板SCH: 详情 点击此处 。 REV1主板SCH: 详情 点击此处 。 三、CAT1 DTU方案的软件设计分享 1.软件功能概述 功能概述: 网络通讯功能:为了实现远程控制中心对终端测控单元的控制,DTU首先应该具备联网的能力,通过网络将两者连接起来。实现了网络通讯,就要考虑网络稳定的问题,如果不稳定,需要实现断线重连等。服务器确定设备目前在线 参数配置功能:网络通讯可以选择TCP,MQTT等协议。连接TCP服务器,需要配置TCP服务器地址,端口号等参数;连接MQTT服务器需要配置鉴权信息,订阅和发布的Topic等参数。此外,其它复杂功能,也会涉及到一些参数的配置。 网络参数配置功能:上述功能实现后,可以考虑后期维护过程中,当DTU现场维护不方便,使用网络对其进行配置的方式。配置的方式可以选择多种形式,可以将上面的指令稍微修改,也可以另外写一份协议。 心跳功能:当DTU和远程服务器建立连接后,服务器判断设备是否在线,需要DTU定时发送一串数据给服务器,用通信来确认DTU在线。 2.软件功能定义 2.1 软件实现功能: AT指令配置设备运行参数,包括:服务器连接IP、端口号;心跳包开启/关闭;心跳包内容;注册包模式;注册包内容。以及复位和查询相关配置参数指令。 可随时选择进入、退出透传模式 心跳保持功能,心跳间隔可配置 网络重连功能 理论上可以发送无限长度数据包 波特率固定为115200,可以根据客户需求定制 网络AT指令和JSON协议配置功能,可以通过服务器下发远程AT指令配置 支持远程升级 2.2 软件功能模块分析: 按照上面的分析,开发的过程就是实现一个个组件,几个组件完成一个模块,几个模块完成一个项目的开发。 开发过程会从核心组件验证,完整代码详解,调试三个章节来讲,如何使用服务层API或应用层组件中的代码实现组件和模块,从而完成整个项目。 2.3 软件流程图: 3.基开发豆平台开发分析 我们的目的是做一款DTU,根据DTU应该具有的的功能,代码可以分为:数据存储模块,AT指令模块,切卡模块,透传模式切换模块,MQTT模块,心跳模块,掉线重连模块,闹钟模块。 模块是根据相似的功能,把对应的代码放到同一个源文件中。每个功能算作一个组件,不同组件组合以来,构成了模块的主要功能。 数据存储组件:包括文件创建,初始化,读写,关闭等。 AT指令组件:包括串口初始化,串口数据接收,发送,数据分析,AT指令解析 切卡组件:包括GPIO初始化,复位切卡 透传模式切换组件:包括串口初始化,串口数据接收,发送,数据分析,切换模式 掉线重连组件:包括连接状态检测,掉线重连 MQTT组件:包括参数配置,订阅,发布Topic等 心跳组件:包括参数配置,定时发送 上述模块功能大致是按照依赖顺序来的,下面的模块实现可能要基于上面的组件。 AT指令模块 心跳模块 MQTT网络模块 网络AT模块 主任务模块 升级模块 文件模块 四、CAT1 DTU方案成果展示 1.SCH的讲解和Geber文件资料 详情请进入奇迹物联wiki知识库获得详解 2.Datasheet 详情请进入奇迹物联wiki知识库获得详解 3.AT指令手册 详情请进入奇迹物联wiki知识库获得详解 4.产品BOM 详情请进入奇迹物联wiki知识库获得详解 5.固件下载链接 详情请进入奇迹物联wiki知识库获得详解 五、如何了解更多CAT1 DTU方案 本文章源自奇迹物联开源的物联网应用知识库Cellular IoT Wiki,更多技术干货欢迎关注收藏Wiki: Cellular IoT Wiki 知识库 (https://rckrv97mzx.feishu.cn/wiki/wikcnBvAC9WOkEYG5CLqGwm6PHf) 欢迎同学们走进AmazIOT知识库的世界! 这里是为物联网人构建的技术应用百科,以便帮助你更快更简单的开发物联网产品。 Cellular IoT Wiki初心: 在我们长期投身于蜂窝物联网 ODM/OEM 解决方案的实践过程中,一直被物联网技术碎片化与产业资源碎片化的问题所困扰。从产品定义、芯片选型,到软硬件研发和测试,物联网技术的碎片化以及产业资源的碎片化,始终对团队的产品开发交付质量和效率形成制约。为了减少因物联网碎片化而带来的重复开发工作,我们着手对物联网开发中高频应用的技术知识进行沉淀管理,并基于 Bloom OS 搭建了不同平台的 RTOS 应用生态。后来我们发现,很多物联网产品开发团队都面临着相似的困扰,于是,我们决定向全体物联网行业开发者开放奇迹物联内部沉淀的应用技术知识库 Wiki,期望能为更多物联网产品开发者减轻一些重复造轮子的负担。 Cellular IoT Wiki沉淀的技术内容方向如下: 奇迹物联的业务服务范围:基于自研的NB-IoT、Cat1、Cat4等物联网模组,为客户物联网ODM/OEM解决方案服务。我们的研发技术中心在石家庄,PCBA生产基地分布在深圳、石家庄、北京三个工厂,满足不同区域&不同量产规模&不同产品开发阶段的生产制造任务。跟传统PCBA工厂最大的区别是我们只服务物联网行业客户。 连接我们 ,和10000+物联网开发者一起 降低技术和成本门槛 让蜂窝物联网应用更简单~~ 哈哈你终于滑到 最重要 的模块了, 千万不!要!划!走!忍住冲动!~ 欢迎加入飞书“开源技术交流群”,随时找到我们哦~ 点击链接 如何加入奇迹物联技术话题群 可以获取加入技术话题群攻略 Hey 物联网从业者, 你是否有了解过奇迹物联的官方公众号“ eSIM物联工场 ”呢? 这里是 奇迹物联的物联网应用技术开源wiki 主阵地,欢迎关注公众号,不迷路~ 及时获得 最新物联网应用技术沉淀发布
  • 热度 14
    2023-5-16 10:50
    1018 次阅读|
    0 个评论
    上期文章中给大家介绍了MQTT规范版本5中基础更改的信息和CONNACK返回码,本篇文章我们继续介绍MQTT5协议中的基础更改中其他新功能的细节描述。 01 干净启动 MQTT 3.1.1的其中一个主流功能是MQTT客户端使用 清除会话(cleanSession ),即这些客户端可以通过临时连接的方式订阅消息或根本不订阅消息。当连接到MQTT代理时,客户端必须选择发送一个标注启用或禁用清除会话的CONNECT数据包。 在MQTT客户端使用清除会话后,一旦出现底层TCP连接断开、或客户端决定断开与代理的连接的情况,代理将会丢弃MQTT客户端的所有数据。此外,如果在代理上存在与客户端标识符关联的先前会话,清除会话CONNECT数据包将强制MQTT代理删除历史数据。 在MQTT v5中,客户端可以选择使用 干净启动(Clean Start) (由 CONNECT 消息中的“干净启动”标志指示)。使用这个标志时,代理会丢弃任何以前的会话数据,客户端则会开启新的会话。关闭客户端和服务器之间的 TCP 连接后,会话不会被自动清理。要在客户端断开连接后触发会话删除,必须将“会话到期间隔”的新头字段设置为值 0。 新的 Clean Start 功能简化了 MQTT 的会话处理,因为它提供了更大的灵活性,并且比 cleanSession/持久会话概念更易于实现。使用 MQTT 5,除非“会话到期间隔”为 0,否则所有会话都是持久的。在超时后或客户端使用干净启动重新连接时,将删除会话。 02 额外的MQTT数据包 MQTT 5引入了一个新的MQTT数据包: AUTH数据包 。这个新的数据包对于实现非简单的认证机制非常有用。 AUTH数据包可以在建立连接后由MQTT代理和客户端发送,以使用复杂的质询/响应认证方法(如SASL框架中定义的SCRAM或Kerberos)。也可以用于物联网的最先进的认证方法,如OAuth。这个数据包还允许在不关闭连接的情况下对MQTT客户端进行重新认证。 03 新的数据类型: UTF-8字符串对 自定义报头的出现也需要引入一种新的数据类型: UTF-8字符串对 。这种字符串对本质上是一个键-值结构,键和值都是字符串数据类型,这种数据类型目前只用于自定义报头。 有了这种新的数据类型,MQTT在网络上共有7种不同的数据类型可以使用: Bit Two Byte Integer Four Byte Integer UTF-8 Encoded String Variable Byte Integer Binary Data UTF-8 String Pair 大多数用户通常在其 MQTT 库的 API 中使用二进制数据和 UTF-8 编码字符串。在 MQTT 5 中,UTF-8 字符串对也经常被使用。所有其他数据类型对用户是隐藏的,但会被MQTT客户端和代理制作成网络上有效的MQTT数据包。 04 双向的DISCONNECT数据包 在MQTT 3.1.1中,客户端可以通过在关闭底层TCP连接之前,发送一个 DISCONNECT数据包 来表明它想断开连接。MQTT代理没有办法通知MQTT客户端发生了什么,并且代理将关闭TCP连接。 这一点在新的MQTT5中有所改变,现在允许代理在关闭套接字之前发送一个“MQTT DISCONNECT”包。客户端现在能够解释它被断开连接的原因并采取相应的行动,代理不需要指出确切的原因(例如出于安全原因)。但至少对于开发中的应用来说,这有助于找出代理关闭连接的原因。 当然,DISCONNECT数据包可以携带Reason Codes,所以很容易指出断开连接的原因(例如在无效权限的情况下)。 05 对QoS 1和2的消息不进行重试 MQTT客户端使用常设的TCP(或具有相同保证的类似协议)连接作为基础传输。TCP连接正常时提供双向连接,并且能保证消息符合恰好一次和按顺序传输,因此所有客户端或代理发送的MQTT数据包都会到达另一端。如果TCP连接中断,而消息正在进行时, QoS 1和2会通过多个TCP 连接提供消息传递保证 。 MQTT 3.1.1允许在TCP连接正常时重新交付MQTT消息。实际上,这可能会导致过载的MQTT客户端得到更多的过载。试想一下,一个MQTT客户端从MQTT代理处收到一个消息,需要11秒来处理这个消息(并且在处理后会确认数据包)。现在假设,代理会在10秒的超时后重新发送消息。这种方法没有任何优势,它只是占用了带宽,并加重了MQTT客户端的负荷。 06 使用没有用户名的密码 MQTT 3.1.1要求MQTT客户端在CONNECT数据包中使用密码时要发送一个用户名。对于某些用例来说,如果没有用户名是非常不方便的。使用 OAuth就是一个很好的例子,它使用 JSON Web 令牌作为唯一的身份验证和授权信息。在 MQTT 3.1.1 中使用此类令牌时,经常使用静态用户名,因为唯一的相关信息在密码字段中。 虽然MQTT 5 中有更简便的方式来携带令牌(例如通过 AUTH 数据包),但仍然可以使用 CONNECT 数据包的密码字段。现在,用户只需使用密码字段,不再需要填写用户名。 07 虹科HiveMQ MQTT解决方案 虹科HiveMQ 是一个基于 MQTT 数据传输的通信平台,旨在将数据快速、高效、可靠地传递给连接的物联网设备,HiveMQ 使用 MQTT 协议在设备和企业平台之间进行实时、双向的数据推送。 虹科HiveMQ 的建立是为了解决企业在构建新的物联网应用时面临的一些关键技术挑战,包括: 构建可靠、可扩展的关键业务物联网应用 快速的数据交付,以满足终端用户对响应式物联网产品的期望 通过有效利用硬件、网络和云资源降低运营成本 将物联网数据整合到现有的企业系统中 虹科HiveMQ 提供免费版、专业版、企业版 MQTT Broker 产品,并提供 Kafka、企业安全及 MQTT Broker 桥接三种企业级扩展套件,HiveMQ 还提供高效的 MQTT 客户端及云平台,多方位满足用户需求。
  • 热度 5
    2022-6-5 22:25
    1579 次阅读|
    0 个评论
    1. 背景 在之前一篇《T-Box功能自动化测试方案》的案例分享中,我们介绍了一种利用安卓系统的控制交互指令,实现T-Box和手机端交互功能的自动化测试方案。但是在项目开发前期,由于T-Box、TSP后台、App可能由不同的厂家负责开发,每个产品开发的进度和完整度是不一致的。所以为了更早的对T-Box的功能进行自动化测试和验证,如果T-Box与TSP后台的通信使用了MQTT协议,则可以利用MQTT协议的特点,通过CANoe仿真另外一个Client,实现CANoe、Broker和T-Box之间的信息交互。 MQTT 通信模型 MQTT(Message Queuing Telemetry Transport,消息队列遥测传输协议)是IBM在1999年发布的一种基于发布/订阅(Publish/Subscribe)模式的"轻量级"通讯协议。该协议可用极少的代码和有限的带宽,为连接远程设备提供实时可靠的消息服务。作为一种低开销、低带宽占用的即时通讯协议,MQTT在物联网等领域有很广泛的应用。 MQTT也是一种基于客户端-服务器的发布/订阅消息协议,包含发布者(Publisher)、代理(Broker)、订阅者(Subscriber)三个角色。发布者和订阅者之间没有直接的连接,需要通过Broker进行消息的存储和转发,而Broker又通过主题(Topic)进行消息的发送和接收。 图 1 MQTT 通信模型 一个典型的MQTT消息通信 流程 如图1所示: 1)发布者(Publisher)连接到Broker; 2)订阅者(Subscribers)连接到Broker,并订阅主题“vehiclespeed”; 3)发布者(Publisher)发送给Broker一条消息,主题为“vehiclespeed”; 4)Broker收到Publisher的消息后,发现Subscriber订阅了“vehiclespeed”主题,然后将消息转发给Subscriber; 5) 订阅者(Subscribers)从Broker接收发布者(Publisher)发送的消息。 2. CANoe CFS 介绍和配置 CANoe的连接特性服务(Connectivity Features Service)主要用于物联网或工业领域支持MQTT协议的设备,CANoe将这些设备抽象成分布式对象(Distributed Objects),通过本地网络(Local Network)或云端代理服务器实现各客户端之间的通信。同时CANoe 15.0版本新增了一种新的通信方式,让代理(Broker)在CANoe中运行来实现通信,从而实现一些故障注入的测试。 本文主要以本地网络的形式对MQTT的仿真和测试进行介绍,其中发布者和订阅者通过CANoe仿真实现,Broker可使用真实的服务器,或者在本地电脑搭建测试用Broker,将Broker地址(需使用外网的IP或域名)和端口配置到TBox中。 Broker搭建完成后,在CANoe的Options设置窗口中配置Broker的IP地址和端口( MQTT功能仅在连接CANoe license时可用 ),示例如图2所示: 图2 CANoe MQTT配置界面 3. MQTT 环境配置 在仿真MQTT Client之前,需要在CANoe的Communication Setup环境中手动创建DistributedObjects的接口(Interfaces)和对象(Objects),或者通过vCDL文件,创建MQTT的数据库。 手动创建MQTT数据库 流程 如下: 1) 创建需要的通信接口; 2) 选择Objects,创建需要通信的对象; 3) 为每个对象创建对应的数据; 4) 选择创建的Data数据,在右侧MQTT配置窗口中配置其属性值。 创建vCDL数据库的 流程 如下: 1) 打开 “Open vCDL Editor”; 2) 创建MQTT的接口、对象和数据; 3) 定义MQTT的属性值; 4) 选择import Data Source导入创建好的vCDL文件。 vCDL导入成功以后,可查看定义属性及参数,如图3所示: 图3 MQTT模型编辑界面 使用vCDL创建MQTT数据库的示例如图4所示: 图4 MQTT vCDL数据库开发界面 4. 测试介绍 通过上面的配置,下面以远程解闭锁控制测试为例,为大家介绍下测试执行过程: 图5 T-Box测试环境 测试环境如图5所示,由于此测试方案CANoe是调用测试电脑的网卡与Broker进行通信,所以需要测试电脑可连接外网。 当CANoe运行时,会自动连接到Broker。测试数据流如下: 1) CANoe(Publisher)首先仿真TSP发送远程解锁请求给Broker; 2) Broker根据Topic,自动转发该请求给T-Box(Subscriber)。T-Box收到该远程请求后,通过CAN或Ethernet将远程解锁请求发送至车内节点; 3) CANoe仿真车内节点反馈远程解锁成功的应答; 4) 收到远程解锁成功应答后,T-Box(Publisher)把远程解锁执行结果上传至Broker,Broker根据Topic,自动转发该请求给CANoe(Subscriber)。 测试交互的数据如图6所示: 图6 CANoe MQTT数据监控窗口 5. 总结 本方案利用MQTT协议的技术特点,无需TSP提供额外的API接口,即可实现T-Box 远程功能的自动化测试,可以在项目早期完成对T-Box的功能验证。根据不同的技术特点,北汇信息已实现在线测试、离线分析等不同的T-Box自动化测试的方案,欢迎大家进一步沟通交流。 注:文中部分图片来源于Vector。
相关资源
  • 所需E币: 3
    时间: 2019-6-2 15:55
    大小: 1.69MB
    上传者: royalark_912907664
    为了解决物联网系统网关复杂及网络传输问题,由树莓派卡片式计算机构建一个wifi传感终端,利用中国移动OneNET物联网云平台提供的多种网络通信协议,实现一个具有远程实时监控功能的物联网系统,可用于环境监测、工业生产控制和智能家居控制等。理论与实践证明,本系统具有成本低廉、功能强大、网络数据传输免费等特点,为组建远程实时监控物联网提供一个具有实用价值整体解决方案。