Appearance
消息通信
MQTT通信方式
设备与设备管理平台、网关与设备管理平台的上下行通信数据传输协议,采用mqtt协议,每个设备间通信的通道和权限都独立,设备A只能监听和订阅设备A相关的消息topic,做到topic级别权限隔离。
设备与设备管理平台消息流转,设备管理平台与第三方应用数据流转,主要通过 MQ 消息队列,以满足合作伙伴对消息实时性和消息持久化的需求。
MQTT服务
简介
MQTT服务 是一个支持多租户、高性能的服务器到服务器之间消息通讯的解决方案。设备管理平台基于开源的 emq 系统进行了定制改进。
Emq 作为消息代理采用了Pub/Sub(发布订阅)的设计模式。该设计模式中,生产者将消息发布到主题,然后消费者可以订阅这些主题,处理传入消息,并在处理完成时发送确认。 当订阅被创建时(即使消息处理设备已断开连接)所有的消息都将被 Emq 保留一段时间。只有在消息处理设备确认消息被成功处理后,保留下来的消息才会被丢弃。 此外,一个主题可以由多个消费者订阅,并且当消费者成功处理消息时,它需要向代理发送确认,以便代理可以丢弃该消息。
安全
认证安全
设备管理平台 MQTT服务 消息系统针对身份认证进行了深度定制以满足高安全性要求,设备管理平台采用动态令牌机制增强安全,开发者可忽略实现细节,基于设备管理平台提供的设备接入 SDK 完成认证。
数据安全
传输安全: MQTT服务 消息推送系统基于 SSL 传输数据。
Topic说明
Topic是消息发布(Pub)者和订阅(Sub)者之间的传输中介。设备可通过Topic实现消息的发送和接收,从而实现服务端与设备端的通信。为方便海量设备基于Topic进行通信,简化授权操作,设备管理平台定义了设备Topic。本文介绍设备Topic的定义、使用和分类。
Topic定义
定义Topic功能。
Topic格式以正斜线(/)进行分层,区分每个类目。
- 消息topic示例:
tlink/${productKey}/${deviceName}/xxx
。
其中,消息是否需要持久存储,设备管理平台会根据topic功能,和数据重要程度,会自动区分,不需要用户自行配置。tlink/${productKey}/${deviceName}
在设备创建完成后替换生成。
${productKey} 表示产品的标识符ProductKey。需替换为实际的ProductKey值
${deviceName} 表示设备名称DeviceName。需替换为实际的DeviceName值
xxx 表示具体的功能定义topic,可以有多层,以 “/” 分隔,比如event/post,command/get等
定义Topic的操作权限。
发布:设备可以往该Topic发布消息。
订阅:设备可以订阅该Topic,从而获取消息。
发布和订阅:同时具备发布和订阅的操作权限。
设备Topic说明
使用tlink/${productKey}/${deviceName}/xxx
通配一个唯一的设备,与前缀、后缀类目组成的完整Topic,就是具体的设备Topic。
例如:用户为openvalley
的产品productKey:a19mzPZ***
下有设备deviceName:device1
和device2
的具体Topic如下:
tlink/a19mzPZ***/device1/xxx
tlink/a19mzPZ***/device2/xxx
Topic定义的功能和操作权限,会映射到具体的设备Topic。以下是设备Topic的使用说明:
具体的设备Topic可用于消息通信。在上下行测试时,请注意topic权限
指定的设备Topic只能被指定设备用于消息通信。如topic:
tlink/a19mzPZ***/device1/xxx
归属于设备device1,只能被设备device1用于发布或订阅消息,而不能被设备device2用于发布或订阅消息。设备的通信收发功能可以被禁用,如果发现异常行为可以在平台操作禁用设备
生成设备Topic
设备Topic自动生成流程如下
添加设备后,Topic会自动映射到设备上,生成具体的设备Topic。
开发设备,将设备联网上线,接入设备管理平台。发布或订阅Topic消息。
Topic权限说明
指定的设备Topic只能被指定设备用于消息通信。
如topic:
tlink/a19mzPZ***/device1/xxx
归属于设备device1,只能被设备device1用于发布或订阅消息,而不能被设备device2和其他设备用于发布或订阅消息。子设备的消息通信是借用网关设备的物理通道进行通信,所以网关有发布和订阅所有子设备的消息通信权限。前提是所有的网关子设备也必须经过平台的认证、同时必须通过网关-子设备的拓扑关系建立。
通过设备Topic通信
设备发送消息到设备管理平台。设备通过具有发布权限Topic,向设备管理平台发送消息。
设备管理平台流转数据到服务器。设备管理平台流转设备消息到应用服务器、其他Topic或其他消息中间件处理。
服务器远程控制设备。应用服务器调用设备管理平台的云端API,向指定设备发送消息。
设备管理平台下发消息到设备。在设备管理平台控制台,可以直接通过已订阅的Topic,向指定设备下发指令,或发送消息。
Topic分类和通信说明
设备管理平台定义的Topic包含基础通信Topic、物模型通信Topic和自定义Topic三类Topic,详细说明见下表。
基础通信Topic
Topic类 | 说明 |
---|---|
OTA升级 | OTA升级消息的Topic,包括设备上报OTA模块版本、设备管理平台推送升级包信息、设备上报升级进度和设备请求获取最新升级包信息。 |
时钟同步 | NTP服务同步请求和响应的Topic,解决嵌入式设备资源受限,系统不包含NTP服务,端上没有精确时间戳的问题。 |
设备影子 | 设备影子数据通过Topic进行流转,包括设备影子发布和设备接收影子变更。 |
物模型通信Topic
Topic类 | 说明 |
---|---|
属性上报 | 设备属性上报到平台 |
属性设置 | 平台对设备可写属性进行写入操作 |
属性获取 | 平台获取设备属性操作 |
事件上报 | 设备发生的事件信息上报到平台 |
命令下发 | 下发命令给设备,执行复杂的操作 |
自定义Topic
自定义Topic类及格式。
如topic: tlink/a19mzPZ***/device1/****
您可根据业务需求,自定义:****
。