MQTT相关
[TOC]
1、什么是MQTT
- MQTT(Message Queuing Telemetry Transport,消息队列遥测传输协议),是一种基于发布/订阅(publish/subscribe)模式的"轻量级"通讯协议,该协议构建于TCP/IP协议上,由IBM在1999年发布。MQTT最大优点在于,可以以极少的代码和有限的带宽,为连接远程设备提供实时可靠的消息服务。作为一种低开销、低带宽占用的即时通讯协议,使其在物联网、小型设备、移动应用等方面有较广泛的应用。
- MQTT是一个基于客户端-服务器的消息发布/订阅传输协议。MQTT协议是轻量、简单、开放和易于实现的,这些特点使它适用范围非常广泛。在很多情况下,包括受限的环境中,如:机器与机器(M2M)通信和物联网(IoT)。其在,通过卫星链路通信传感器、偶尔拨号的医疗设备、智能家居、及一些小型化设备中已广泛使用。
2、MQTT协议优点
- 低协议开销。MQTT的独特功能是每个消息头都可以缩短为2个字节。对于HTTP,为每个新请求消息重新建立HTTP连接会产生可观的开销。 MQ和MQTT使用的持久连接可以大大减少这种开销。
- 包容不稳定的网络。MQTT和MQ可以从诸如断开连接之类的故障中恢复,无需进一步的代码要求。
- 低功耗。MQTT专为低功耗目标而设计。
- 推送通知。使用常规的轮询或推送方法,就电池,系统负载和带宽而言,推送是最佳解决方案。
- 客户端平台的差异。 HTTP和MQTT客户端都在许多平台上实现。 MQTT的简单性可帮助您以最少的努力在其他客户端上实施MQTT。
3、设备物模型是什么含义
物模型是物理空间中的实体(如传感器、车载装置、楼宇、工厂等)在云端的数字化表示,从属性、服务和事件三个维度,分别描述了该实体是什么、能做什么、可以对外提供哪些信息。定义了物模型的这三个维度,即完成了产品功能的定义。
4、MQTT网关架构
下图简单展示了瑞瀛 Zigbee 网关的主要模块
网关主要的模块主要包含了运行在模组上的 COO 固件和运行在嵌入式 Linux 系统上的 Wireless SDK、网关主应用、各类插件等。上层子系统依赖于下层子系统,但并不存在直接的跨层依赖关系。
5、是否支持既有平台的对接
我们内部定义了一版通用协议,可以支持客户对接调试。对于已有平台的客户,可以按照客户的MQTT协议定制开发网关
6、子设备入网流程
子设备入网需要子设备和网关同时开启配网(至少要求双方开启配网的时间窗重叠,先后不重要)。插件调用网关的配网命令 (CMD_PAIR) 让网关开启配网,如果有子设备成功入网,则会有入网通知(MSG_TYPE_NODE_ADDED) 通知到插件以方便通知平台。
7、子设备离网流程
8、子设备在、离线如何判断
子设备的在、离线判断由网关端直接实现,网关通过对应的子设备在、离线数据传输接口,上报给服务器
9、网关在、离线如何判断
网关有正常的上线/下线通知(遗嘱信息)通知平台服务器,使用过程中不存在网关心跳机制
10、网关是否支持那些程序或固件OTA
网关提供COO固件、插件、主应用程序、wireless sdk和子设备固件 OTA功能
11、如何缩短特殊子设备对接网关时间,使项目快速落地
对于复合型设备或新型设备,网关对接整体工作量大,为了节省开发周期,便于项目快速落地,网关提供了数据透传功能,网关不做数据解析,只按照固定格数上报子设备数据,相关解析工作由平台自行处理
12、网关如何升级COO
平台在需要时,将主动推送升级包要求网关进行 OTA 升级
数据下行
Topic: rex/R101Gateway/${gwMAC}/ota/device/upgrade
请求数据格式示例:
{"id": 1671602293,
"url": "https://rex-gitlab.oss-cn-beijing.aliyuncs.com/coo/COO_RWP_Stk6710_1.4.1.ota"
}
13、网关如何升级插件
数据下行
Topic: rex/R101Gateway/${gwMAC}/ota/device/upgrade
请求数据格式示例:
{
"id": 1671602294,
"url": "https://rex-gitlab.oss-cn-beijing.aliyuncs.com/gateway/rex_update_only_plugin.2.0.0-71.tgz"
}
14、网关如何升级主应用程序
数据下行
Topic: rex/R101Gateway/${gwMAC}/ota/device/upgrade
请求数据格式示例:
{"id": 1671602294,
"url": "https://rex-gitlab.oss-cn-beijing.aliyuncs.com/gateway/rex_update.2.1.6_2.0.0.72.tgz"
}
15、子设备固件如何通过MQTT网关OTA
数据下行
Topic: rex/${productKey}/${deviceName}/ota/device/upgrade
请求数据格式示例:
{"id": 1671602294,
"url": "https://192.168.1.101:5443/download/REX_HA_1EP_RANGE_EXTEND_3T258_JY_20230217.bin.ota.test.ota"
}
16、场景分类
场景主要分为本地场景和云端场景
17、本地场景联动含义
本地场景联动指网关根据收集到设备实时状态上报与事件上报、当前时间等要素,与事先设置好的场景规则进行匹配计算,如果匹配成功则自动触发执行场景规则中定义的动作,整个处理流程均在网关在本地独立进行,与是否连接到云服务器无关。 与基于服务器的场景联动,本地场景联动具有以下三个明显特点:
无须服务器界入。 网关是否连接到服务器不影响场景的联动执行。 联动的范围局限在同一个网关,不能跨网关联动。