3. 腾讯云IoT Hub产品架构与核心概念
腾讯云IoT Hub(物联网通信)是设备接入与数据上云的入口服务。要真正用好它,不能只记住几个名词,而要理解这些概念之间的从属与引用关系:产品是设备的集合与配置模板,设备是产品的实例,设备密钥与设备证书是设备身份的两类凭据,物模型描述设备"能做什么",Topic类规定设备"能往哪发、能从哪收",权限决定"谁被允许操作哪些Topic",规则引擎则负责把消息从Topic转发到其它云服务。下面逐一展开,并给出它们如何串成一条完整链路。
产品与设备:模板与实例
产品(Product)是同一类设备的集合,也是配置的载体。创建产品时需要确定:产品名称、设备类型(如"温湿度传感器")、认证方式(密钥认证或证书认证)、数据格式(JSON或自定义透传)、以及通信方式。产品创建后会得到一个全局唯一的 ProductId,它是后续所有设备、Topic、规则引用的根标识。
设备(Device)是产品的实例,代表一台真实硬件。每台设备有 DeviceName,与 ProductId 组合后形成全局唯一的设备标识。设备创建后处于"未激活"状态,首次成功连接并鉴权通过后变为"已激活",之后可被禁用、删除。设备状态(在线/离线)由平台根据连接心跳维护,是排障时最先查看的信息。
设备密钥与设备证书:两种身份凭据
设备接入必须证明"我是我"。腾讯云IoT Hub提供两种认证方式,二选一:
- 设备密钥(密钥认证):平台为每台设备生成
DeviceSecret。设备用ProductId + DeviceName + DeviceSecret按规则计算签名(常用 HMAC-SHA1),连接时提交clientId、username、password。密钥认证实现简单,适合资源受限的MCU。 - 设备证书(证书认证):平台签发设备证书(含公钥)与私钥,设备用私钥做TLS双向认证。安全性更高,适合Linux网关或对安全要求高的场景。
关键点:认证方式在产品创建时确定,同一产品下的设备必须使用同一种方式。密钥或证书一旦泄露,应通过"禁用设备"或"重置密钥/证书"处理,而不是删除重建,以免丢失历史数据关联。
物模型:设备的数字化描述
物模型(Thing Model)用JSON描述设备能力,包含三类元素:
- 属性(Property):设备状态,如
temperature(float,-40~125,单位℃),可读写或只读。 - 事件(Event):设备主动上报的通知,如"高温告警",可带参数。
- 行为(Action):云端可下发的指令,如"重启"。
物模型的价值在于:云端和APP无需理解设备私有协议,只需按物模型读写属性、调用行为。设备上报数据时,Topic固定为 $thing/up/property/{productId}/{deviceName},载荷为 {"temperature":26.5};云端下发属性设置走 $thing/down/property/...。物模型是"数据上云"能被规则引擎、数据库、可视化理解的前提。
Topic类与权限:消息的路由与边界
Topic类是消息通道的命名规则。腾讯云IoT Hub预置了系统Topic(以 $ 开头,如 $thing/up/property/...),也支持自定义Topic(如 /{productId}/{deviceName}/data)。设备只能发布/订阅被授权的Topic。
权限以"产品+Topic+操作(发布/订阅)"为粒度配置。例如允许设备发布到 $thing/up/property/...,订阅 $thing/down/property/...。权限配置错误是"连上了但收不到消息"的最常见原因:设备能连接说明密钥正确,但若未授权订阅下行Topic,云端下发的属性设置就不会到达设备。
规则引擎:从Topic到云服务
规则引擎把设备消息从Topic转发到其它云产品。一条规则由三部分组成:
- 数据源:选择要监听的Topic,如
$thing/up/property/{productId}/{deviceName}。 - SQL筛选:如
SELECT temperature FROM '$thing/up/property/xxx/yyy' WHERE temperature > 30,只转发满足条件的消息。 - 转发目标:写入云数据库、投递到消息队列CKafka、调用云函数SCF、写入时序数据库TSDB等。
规则引擎让"数据上云"从"设备发消息"变成"数据落到可用存储/计算服务",是IoT Hub与腾讯云生态的连接点。
概念关系总览
下图把上述概念串成一条从设备到云服务的链路,并标出各概念的从属与引用关系:
把概念用起来:一次属性上报的完整判断
假设产品 ProductId=P1,设备 DeviceName=dev01,认证方式为密钥。设备端计算签名后连接,平台校验 DeviceSecret 通过,设备变为在线。随后设备向 $thing/up/property/P1/dev01 发布 {"temperature":26.5}。平台先检查该产品是否授权"发布"到该Topic;若授权,消息进入规则引擎。规则SQL为 SELECT temperature FROM '$thing/up/property/P1/dev01' WHERE temperature > 30,由于26.5不满足条件,消息被过滤,不写入TSDB。若把阈值改为25,则消息被转发到TSDB,可在时序数据库中查到该点。
理解这些概念的关系后,后续配置产品、创建设备、定义物模型、授权Topic、编写规则,就都是在同一张关系图上填空,而不是孤立地记忆操作步骤。