1. SDK
2. 设备接入
设备通过 SDK 接入腾讯物联网通信平台:
应用层基于 MQTT、CoAP 协议。
传输层基于 TCP、UDP 协议,并在此基础上引入安全网络传输协议(TLS、DTLS),实现客户端和服务器端的双向鉴权、数据加密传输。
SDK 支持 RTOS 移植能力,跨平台移植,框架抽离硬件平台抽象层,可基于不同平台快速、轻松接入物联网通信。
设备 SDK 支持 TLS(对应 MQTT)、DTLS(对应 CoAP)的非对称和对称加密两种鉴权方式,保护设备通信安全:
非对称加密
安全级别高,基于证书、非对称加密算法,适用于硬件规格较高、对功耗不是很敏感的设备。依赖设备证书、私钥,根证书等信息,在物联网通信创建设备时,会返回相关信息。
对称加密
安全级别普通,基于密钥、对称加密算法,适用于资源受限、对功耗敏感的设备。依赖于设备 psKey ,在物联网通信创建设备时,会返回相关信息。
除设备 SDK 接入外,腾讯物联网通信还提供 HTTP 接入,接入协议门槛低,适用低功耗、短连接的数据上报场景。
3. 设备管理
一个腾讯云账号下,最多可以创建2000个产品,每个产品下最多创建100万台设备。一个设备只能隶属于一个产品。产品名和设备名在同一云账号下唯一。
提供设备的启用/禁用功能。设备被禁用后将不能接入物联网通信平台,将无法执行与设备有关的操作,但与设备相关联的信息依然保留,仍可查询设备相关信息。
4. Topic 管理
在腾讯物联网通信,设备能够发布和订阅的 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. 消息管理
对于 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 形式),主要用于保存:
设备的当前配置
设备的当前状态
作为中介,设备影子可以有效实现设备和用户应用之间的数据双向同步:
对于设备配置,用户应用不需要直接修改设备,只需要修改服务器端的设备影子,由设备影子同步到设备。即使当时设备不在线,设备上线后仍能从设备影子同步到最新配置。
对于设备状态,设备将状态上报到设备影子,用户应用查询时,只需查询设备影子即可。这样可以有效减少设备和服务器端的网络交互,尤其是低功耗设备。
下图是“快速开始”里设备影子的应用示例:
注意:
设备影子和设备消息的适用场景并不一样。从实现机制上来说,服务器端设备影子总是保存最后一份数据,而先后达到的多条消息并不会相互覆盖。
对于设备上报数据的场景,设备影子更适用于上报一些设备自身信息(如设备能耗),设备消息更适用于上报设备收集的数据(如测量的温度)
对于设备接收数据的场景,设备影子更适用于通知设备更新配置(如更改目标运行温度),设备消息更适用于设备的实时控制(如让设备向左转45度)
7. 规则引擎
基于规则引擎,用户可以配置规则实现以下操作:
语法规则
支持类 SQL 语法和基础语义操作,可以通过简易的语法编写,实现对设备消息的内容解析和过滤提取、重新整合,进而转发到后端服务,无缝对接腾讯云后端的多种存储组件、函数计算、大数据分析套件等。
设备与设备互通
为了实现设备的数据隔离,设备只能发布和订阅自身的 Topic 消息(请参见 Topic管理)。为了实现互通,需要基于规则引擎的 repub 功能。
设备与用户服务器互通
规则提供简单的 forward 功能,可以将消息通过 HTTP 请求抄送给用户服务器。实现设备消息与用户服务的快速互通能力。
设备与云服务互通
对于用户需要对设备数据进行进一步处理的场景(如持久化存储、大数据分析),腾讯云提供相应的产品(如云数据库、大数据分析套件)。
详情请参见 规则引擎详情。
8. 控制台
9. 云 API
对于物联场景下对设备的管理流接口,提供后台快速、批量操作接口。当前支持 Python、PHP、Java、Go、NodeJS、.Net 工具包。目前腾讯物联网通信提供产品、设备、任务、消息、规则引擎、设备影子相关的 API,详细请参见 云 API。
10. 固件升级
支持 OTA 固件升级服务,当设备固件有安全隐患或者功能漏洞时,物联网服务端支持通过 OTA 升级,消除隐患,降低安全风险。