功能组件

最近更新时间:2019-08-08 20:43:39

1. SDK

详情请参见 SDK 文档。目前支持 Linux、Android 平台的设备 SDK、并支持移植到不同的硬件平台 。

2. 设备接入

设备通过 SDK 接入腾讯物联网通信平台:

  • 应用层基于 MQTT、CoAP 协议。
  • 传输层基于 TCP、UDP 协议,并在此基础上引入安全网络传输协议(TLS、DTLS),实现客户端和服务器端的双向鉴权、数据加密传输。
  • SDK 支持 RTOS 移植能力,跨平台移植,框架抽离硬件平台抽象层,可基于不同平台快速、轻松接入物联网通信。

设备 SDK 支持 TLS(对应 MQTT)、DTLS(对应 CoAP)的非对称和对称加密两种鉴权方式,保护设备通信安全:

  • 非对称加密
    安全级别高,基于证书、非对称加密算法,适用于硬件规格较高、对功耗不是很敏感的设备。依赖设备证书、私钥,根证书等信息,在物联网通信创建设备时,会返回相关信息。
  • 对称加密
    安全级别普通,基于密钥、对称加密算法,适用于资源受限、对功耗敏感的设备。依赖于设备 psKey ,在物联网通信创建设备时,会返回相关信息。

除设备 SDK 接入外,腾讯物联网通信还提供:

  • MQTT over WebSocket 接入,适用于浏览器类应用与物联网通信平台建立连接与通信能力。
  • HTTP 接入,接入协议门槛低,适用低功耗、短连接的数据上报场景。

3. 设备管理

img

一个腾讯云账号下,最多可以创建2000个产品,每个产品下最多创建200000个设备。一个设备只能隶属于一个产品。产品名和设备名在同一云账号下唯一。

4. 权限管理

在腾讯物联网通信,设备能够发布和订阅的 Topic 受到严格管理。一个产品下的所有设备具备相同的 Topic 类 权限,默认包括:

Topic 说明
${productId}/${deviceName}/event 发布权限,用于设备上报数据
${productId}/${deviceName}/control 订阅权限,用于设备获取后台下发的数据

上述$符包含的 productId、deviceName,针对具体创建的设备,将映射为具体的产品 Id 和设备名字。举例,一个产品名字为 pro 的产品(假设产品Id是“pro_id”)下有2个设备(假设设备名字分别为 “dev_1”、“dev_2”),那么 dev_1 可以发布的 Topic 包括 pro_id/dev_1/event,可以订阅的 topic 包括 pro_id/dev_1/control,但是不可以发布 pro_id/dev_2/event,不可以订阅 pro_id/dev_2/control。

用户可以通过控制台进行 Topic 权限的编辑修改、增删产品的 Topic 类权限。

为了方便设备 SDK 订阅批量的 Topic ,设备进行订阅和取消订阅时可以使用通配符来表示多个符合的 Topic :

通配符 描述
# 此通配符只能出现在 topic 的最后,代表本级以及所有子级 Topic ,例如,通配符 Topic 为 pro_id/dev_1/# ,这不仅可以代表 pro_id/dev_1/event ,也可以代表 pro_id/dev_1/event/subeventA
+ 代表本级所有 topic ,只能出现在 deviceName 后,例如通配符 topic 为 pro_id/dev_1/event/+,可以代表 pro_id/dev_1/event/subeventA,又可以代表 pro_id/dev_1/event/subeventB,但不能代表 pro_id/dev_1/event/subeventA/close。可以出现多次,如 pro_id/dev_1/event/+/subeventA/+

通配符必须作为完整的一级,${productId}/${deviceName}/e# 和 ${productId}/${deviceName}/e+ 都是非法格式。
腾讯物联网通信定义的系统主题($shadow,$ota,$sys)不支持通配符。

  • 增加订阅时通配符的表现为:对通配符 Topic 匹配到的该产品下有订阅权限的 Topic 进行订阅,若匹配到的 Topic 列表为空也返回成功。
  • 取消订阅时通配符的表现为:对通配符 Topic 匹配到的已经订阅了的 Topic 进行取消订阅,若匹配到的 Topic 列表为空也返回成功。${productId}/${deviceName}/# 为清除所有用户主题的订阅。

5. 消息管理

img

对于 MQTT 的数据传输,腾讯物联网通信支持 QoS=0 或 1,但不支持 QoS=2。基于 MQTT 协议。设备消息支持离线存储。

  • QoS=0,最多只往设备发一次
    对数据传输可靠性要求一般的场景,请在 Publish、Subscribe 时选择这个 QoS。
  • QoS=1,至少让设备收到一次
    对数据传输可靠性要求高的场景,请在 Publish、Subscribe 时选择这个 Qos。

其他参数见下表:

参数 说明
topic 名字长度 不超过64字节
MQTT 协议包大小 不超过16K字节
QoS=1 的消息存储时长(接收方离线或在线发不通) 24小时
未被设备确认的 QoS=1 消息数量 不超过150条

6. 设备影子

设备影子本质上是一份在服务器端缓存的设备数据(JSON 形式),主要用于保存:

  • 设备的当前配置
  • 设备的当前状态

作为中介,设备影子可以有效实现设备和用户应用之间的数据双向同步:

  • 对于设备配置,用户应用不需要直接修改设备,只需要修改服务器端的设备影子,由设备影子同步到设备。即使当时设备不在线,设备上线后仍能从设备影子同步到最新配置。
  • 对于设备状态,设备将状态上报到设备影子,用户应用查询时,只需查询设备影子即可。这样可以有效减少设备和服务器端的网络交互,尤其是低功耗设备。

下图是“快速开始”里设备影子的应用示例:

imgimg

注意:

设备影子和设备消息的适用场景并不一样。从实现机制上来说,服务器端设备影子总是保存最后一份数据,而先后达到的多条消息并不会相互覆盖。

  • 对于设备上报数据的场景,设备影子更适用于上报一些设备自身信息(如设备能耗),设备消息更适用于上报设备收集的数据(如测量的温度)
  • 对于设备接收数据的场景,设备影子更适用于通知设备更新配置(如更改目标运行温度),设备消息更适用于设备的实时控制(如让设备向左转45度)

详情请参见 设备影子详情

7. 规则引擎

基于规则引擎,用户可以配置规则实现以下操作:

  • 语法规则
    支持类 SQL 语法和基础语义操作,可以通过简易的语法编写,实现对设备消息的内容解析和过滤提取、重新整合,进而转发到后端服务,无缝对接腾讯云后端的多种存储组件、函数计算、大数据分析套件等。
  • 设备与设备互通
    为了实现设备的数据隔离,设备只能发布和订阅自身的 Topic 消息(请参见 权限管理)。为了实现互通,需要基于规则引擎的 repub 功能。
  • 设备与用户服务器互通
    规则提供简单的 forward 功能,可以将消息通过 HTTP 请求抄送给用户服务器。实现设备消息与用户服务的快速互通能力。
  • 设备与云服务互通
    对于用户需要对设备数据进行进一步处理的场景(如持久化存储、大数据分析),腾讯云一方面提供相应的产品(如云数据库、大数据分析套件),另外也即将支持物联网通信平台和这些云产品之间的直接打通。

详情请参见 规则引擎详情

8. 消息队列

作为设备的唯一接口,物联网通信平台支持将设备指定消息写入腾讯云 CMQ、CKafka 消息队列,第三方服务可通过 CMQ、CKafka 的 SDK 接口获取设备消息,从而打通实现与设备的异步消息通信。在此基础上完成后端的数据存储、计算分析或设备控制逻辑。

9. 控制台

控制台提供了可视化的管理界面,支持产品管理、设备管理、权限管理、规则引擎配置等功能。您可以前往 物联网通信控制台 进行体验。

10. 云 API

对于物联场景下对设备的管理流接口,提供后台快速、批量操作接口。当前支持 Python、PHP、JAVA、Go、NodeJS、.Net 工具包。目前腾讯物联网通信提供产品、设备、任务、消息、规则引擎、设备影子相关的 API,详细请参见 云 API 概览

11. 固件升级

支持 OTA 固件升级服务,当设备固件有安全隐患或者功能漏洞时,物联网服务端支持通过 OTA 升级,消除隐患,降低安全风险。

12. 协作管理

物联网通信平台支持通过 CAM 安全地访问、使用和管理云账号的资源。通过对子账号与协作者的身份管理和策略管理,来实现物联网通信资源的隔离与协作。