阿里云物联网平台学习
目录
一.概述
1.1什么是物联网平台
1.2实例管理
1.3监控运维
二.操作指南
2.1创建产品
2.1.1定义产品功能
2.2创建设备
2.2.1操作步骤
2.3配置物模型
2.3.1功能说明
2.3.2添加物模型
2.3.3更新模型
2.3.4物理型TSL字段说明
2.3.5物模型支持的数据类型
2.4使用消息通信Topic
2.4.1什么是Topic
2.4.2使用物理型Topic
三.公共实例快速入门
3.1创建产品与设备
3.2为产品定义物模型
四.如何获取MQTT签名参数
4.1 直接在物联网平台获取
4.2 使用网页工具计算
4.3 使用Node.js语言脚本计算
五.参考文档
一.概述
1.1什么是物联网平台
阿里云物联网平台是一个集成了设备管理、数据安全通信、消息订阅和数据服务等能力的一体化平台。向下支持连接海量设备,采集设备数据上云;向上提供云端API,服务端可通过调用云端API将指令下发至设备端,实现远程控制。
1.2实例管理
物联网平台提供公共实例和企业版实例,用于设备接入和业务管理

1.3监控运维

二.操作指南
2.1创建产品
1.登录物联网平台控制台。
2在控制台左上方,选择物联网平台所在地域。
3在实例概览页面的全部环境下,找到对应的实例,单击实例ID或备注名称

4. 在左侧导航栏,选择设备管理 > 产品,单击创建产品。
可以选择以下方式创建产品
| 参数 | 描述 |
| 产品名称 | 为产品命名。产品名称在账号内具有唯一性。例如,可以填写为产品型号。支持中文、英文字母、日文、数字、下划线(_)、短划线(-)、at(@)和英文圆括号(()),长度限制4~30个字符,一个中文或日文占2个字符。 |
| 所属品类 | 相当于产品模板。
|
| 节点类型 | 产品下设备的类型。
|
| 接入网关协议 | 节点类型选择为网关子设备的参数。表示该产品下的设备作为子设备与网关的通讯协议类型。
|
| 联网方式 | 直连设备和网关设备的连网方式。
|
2.1.1定义产品功能
1.定义产品功能
a.在产品页面的产品列表,单击产品对应操作列的查看。
b.在产品详情页面,单击对应功能页签,定义相关功能。
| 功能标签 | 说明 |
| 产品信息 | 查看产品信息,编辑产品标签。 |
| Topic类列表 | 查看物联网平台系统预定义的基础通信Topic类、物模型通信Topic类和自定义Topic类。您可添加自定义Topic类。 |
| 功能定义 | 定义物模型属性、服务和事件,用于物模型通信。 |
| 数据解析 | 产品数据格式为透传/自定义时,需提交数据解析脚本。 |
| 服务端订阅 | 若需订阅产品下设备上报数据,要创建订阅。 |
| 文件上传配置 | 若需设备将文件上传至您自己的OSS空间存储,要完成Bucket授权和配置。 |
2.开发设备。
单击产品详情页面的设备开发页签,跟随界面提示进行设备创建、功能开发、证书烧录、连接验证,完成设备开发,接入物联网平台。详细信息,请参见设备接入指南。
3.在该产品详情页面中,单击右上角发布,发布产品。
发布前需确认:产品各项信息已设置完成、设备开发调试工作已完成、产品已具备上线发布条件。
产品发布后,产品状态变为已发布。

4.(可选)在该产品详情页面中,单击右上角撤销发布,然后单击确定。
5.(可选)返回产品页面,在产品列表找到对应产品,可执行以下
| 操作 | 步骤 |
| 编辑 | 您可修改产品名称和产品描述。
|
| 删除 |
|
6.(可选)返回产品页面,在产品列表上方,单击备份产品数据。
您会进入对应实例下的数据服务 > 数据接入 > 产品列表页面,可选择目标产品开启数据备份。具体操作,请参见备份产品。

2.2创建设备
产品是设备的集合,通常指一组具有相同功能的设备。创建产品完成后,需在产品下添加设备,获取设备证书。您可在物联网平台上,同时创建一个或多个设备。本文介绍创建单个设备的步骤。
2.2.1操作步骤
1.登录物联网平台控制台。
2.在实例概览页面,选择目标环境,找到对应的实例,单击实例ID或备注名称。

3.在左侧导航栏,选择设备管理 > 设备。
4.在设备页面,单击添加设备。
5.在添加设备对话框中,输入设备信息,单击确认

| 参数 | 描述 |
| 产品 | 选择产品。新创建的设备会继承该产品定义好的功能和特性。 |
| Devicename | 设置设备名称。 设备名称在产品内具有唯一性。支持英文字母、数字、短划线(-)、下划线(_)、at(@)、英文句号(.)和英文冒号(:),长度限制为4~32个字符。 |
| 备注名称 | 设置备注名称。支持中文、英文字母、日文、数字和下划线(_),长度限制为4~64个字符,一个中文或日文占2个字符。 |
执行结果
创建设备成功后,会自动弹出添加完成对话框。您可以查看、复制设备证书信息。设备证书由设备的ProductKey、DeviceName和DeviceSecret组成,是设备与物联网平台进行通信的重要身份认证,建议您妥善保管。
| 参数 | 说明 |
| ProductKey | 设备所属产品的ProductKey,即物联网平台为产品颁发的全局唯一标识符。 |
| DeviceName | 设备在产品内的唯一标识符。DeviceName与设备所属产品的ProductKey组合,作为设备标识,用来与物联网平台进行连接认证和通信。 |
| DeviceSecret | 物联网平台为设备颁发的设备密钥,用于认证加密。需与DeviceName成对使用。 |
2.3配置物模型
物模型是阿里云物联网平台为产品定义的数据模型,用于描述产品的功能。本文介绍物模型相关概念和使用限制。
2.3.1功能说明
物模型是物理空间中的实体(如传感器、车载装置、楼宇、工厂等)在云端的数字化表示,从属性、服务和事件三个维度,分别描述了该实体是什么、能做什么、可以对外提供哪些信息。定义了物模型的这三个维度,即完成了产品功能的定义。
| 功能类型 | 说明 |
| 属性 | 用于描述设备运行时具体信息和状态。 例如,环境监测设备所读取的当前环境温度、智能灯开关状态、电风扇风力等级等。 属性可分为读写和只读两种类型。读写类型支持读取和设置属性值,只读类型仅支持读取属性值。 |
| 服务 | 指设备可供外部调用的指令或方法。服务调用中可设置输入和输出参数。输入参数是服务执行时的参数,输出参数是服务执行后的结果。 相比于属性,服务可通过一条指令实现更复杂的业务逻辑,例如执行某项特定的任务。 服务分为异步和同步两种调用方式。 |
| 事件 | 设备运行时,主动上报给云端的信息,一般包含需要被外部感知和处理的信息、告警和故障。事件中可包含多个输出参数。 例如,某项任务完成后的通知信息;设备发生故障时的温度、时间信息;设备告警时的运行状态等。 事件可以被订阅和推送。 |
物联网平台支持为产品定义多组功能(属性、服务和事件)。一组功能定义的集合,就是一个物模型模块。多个物模型模块,彼此互不影响。
物模型模块功能,解决了工业场景中复杂的设备建模,便于在同一产品下,开发不同功能的设备。
例如,电暖扇产品的功能属性有电源开关、档位(高、中、低)和室内温度,您可以在一个模块添加前2个属性,在另一个模块添加3个属性,然后分别在不同设备端,针对不同物模型模块功能进行开发。此时,该产品下不同设备就可以实现不同功能。
物联网平台已提供默认模块,您可根据需要新增自定义模块,总模块数量不超过20个。
使用说明
物联网平台通过定义一种物的描述语言来描述物模型模块和功能,称为TSL(Thing Specification Language)。
物模型模块下定义的功能不需要同时包含属性、服务和事件,按需配置即可。
物模型TSL文件格式为JSON。您可在物联网平台控制台产品详情页面,单击功能定义页签,单击物模型TSL,查看或导出JSON格式的TSL。
限制说明
物模型功能定义限制,请参见产品与设备的物模型功能定义。以下为批量导入物模型TSL文件时的使用限制。
| 使用方法 | 限制说明 |
| 单个物理模型文件 | 文件后缀名为.json;文件内容必须符合JSON格式;文件大小不能超过512 KB;文件中有效字符数量不能超过256 KB(256*1024个字符)。 有效字符,指JSON格式内容中,除换行和对齐字符之外的字符。 |
| 多个物模型TSL文件 |
|
2.3.2添加物模型
使用说明
-
基础型(MQTT)实例下不支持物模型功能,无法添加物模型。
-
物模型需要在模块中配置,每个产品中默认模块和自定义模块总个数不能超过20个。
-
如果产品已发布,不能编辑物模型。如需编辑物模型,需先撤销产品发布。
-
可以编辑物模型历史版本,生成新的版本。
-
同一物模型最多保存最近的10个版本,多余的历史版本将被覆盖。
-
物模型编辑后,需发布才会正式生效。
添加物模型功能
-
登录物联网平台控制台。
-
在控制台左上方,选择物联网平台所在地域。
-
在实例概览页面的全部环境下,找到对应的实例,单击实例ID或备注名称。
-
在左侧导航栏,选择设备管理 > 产品。在产品列表中,单击产品对应的查看。
-
在产品详情页面,单击功能定义页签,再单击编辑草稿,单击默认模块或添加模块。
-
可选:如果添加模块,完成参数配置,单击确认,然后单击已添加模块名称。
| 参数 | 说明 |
| 模块名称 | 支持中文、英文字母、日文、数字和下划线(_),长度限制为4~30个字符,一个中文、一个日文算1个字符。 |
| 模块标识符 | 模块唯一标识符,也是模块ID,在产品中具有唯一性。支持英文大小写字母、数字和下划线(_),长度限制为30个字符。 |
| 模块描述 | 输入文字,对模块进行说明或备注。长度限制为4096个字符。 |
7.可选:从历史版本下拉菜单选择要编辑的历史版本,再单击恢复此版本,在历史版本的基础上编辑草稿。
8.添加标准功能。如果您创建产品时选择了标准品类,则物联网平台已为该品类预定义标准功能。标准功能分为必选和可选,使用如下:
-
必选功能:已在物模型的默认模块中添加且不可删除。
-
可选功能:单击添加标准功能,然后在弹出的双列表框左侧中,选择适用于该产品的标准功能。
支持全选添加和全选删除。

9.添加自定义功能
选择添加自定义功能。您可以为产品自定义属性、服务和事件。
- 自定义属性:在添加自定义功能对话框,选择功能类型为属性。设置参数完成后,单击确认。
属性参数设置说明如下表。
| 参数 | 描述 |
| 功能名称 | 属性的名称,例如:用电量。同一产品下功能名称不能重复。 支持中文、英文字母、日文、数字、短划线(-)、下划线(_)、正斜线(/)和英文句号(.),且必须以中文、英文、日文或数字开头,不超过30个字符。 输入功能名称时,将从标准功能库中筛选匹配的标准功能供您选择,您可以参考标准功能进行配置。 |
| 标识符 | 属性唯一标识符,在产品中具有唯一性。即Alink JSON格式中的identifier的值,作为设备上报该属性数据的Key,云端根据该标识符校验是否接收数据。支持英文、数字和下划线(_),不超过50个字符,例如:PowerConsumption。 |
| 数据类型 |
|
| 取值范围 | 数据类型为int32、float、double时,可设置属性值的取值范围。 |
| 步长 | 属性值变化的最小粒度。数据类型为int32、float、double时,可根据您的业务需要设置步长。 例如:为温度计产品定义温度属性时,将数据类型设置为int32,步长为2,单位为℃,取值范围0~100。即温度每变化两度,设备上报温度值,例如:0℃、2℃、4℃、6℃、8℃等。 |
| 单位 | 单位可选择为无,或根据实际情况选择。 |
| 读写类型 |
|
| 描述 | 输入文字,对该功能进行说明或备注。长度限制为100个字符。 |
- 自定义服务:在添加自定义功能对话框,选择功能类型为服务。设置参数完成后,单击确认。
| 参数 | 描述 |
| 功能名称 | 服务名称。支持中文、英文字母、日文、数字、短划线(-)、下划线(_)、正斜线(/)和英文句号(.),且必须以中文、英文、日文或数字开头,不超过30个字符。 输入功能名称时,将从标准功能库中筛选匹配的标准功能供您选择,您可以参考标准功能进行配置。 |
| 标识符 | 服务唯一标识符,在产品下具有唯一性。即Alink JSON格式中该服务的identifier的值。支持英文、数字和下划线(_),不超过50个字符。 |
| 调用方式 |
|
| 输入参数 | 设置该服务的入参,可选。 单击增加参数,在弹窗对话框中添加服务入参。 当接入网关协议为OPC UA时,需设置参数索引,用于标记参数的顺序。 |
| 输出参数 | 设置该服务的出参,可选。 单击增加参数,在弹窗对话框中添加服务出参。 当接入网关协议为OPC UA时,需设置参数索引,用于标记参数的顺序。 |
| 扩展描述 | 扩展描述为设备通信协议到标准物模型的映射关系。对应物模型TSL中的物模型扩展配置。 仅网关子设备的接入网关协议为自定义或OPC UA时,需增加扩展描述。
|
| 描述 | 输入文字,对该服务功能进行说明或备注。长度限制为100个字符。 |
- 自定义事件:在添加自定义功能对话框,选择功能类型为事件。设置参数完成后,单击确认。
事件参数设置说明如下表。
| 参数 | 描述 |
| 功能名称 | 事件的名称。支持中文、英文字母、日文、数字、短划线(-)、下划线(_)、正斜线(/)和英文句号(.),且必须以中文、英文、日文或数字开头,不超过30个字符。 输入功能名称时,将从标准功能库中筛选匹配的标准功能供您选择,您可以参考标准功能进行配置。 |
| 标识符 | 事件唯一标识符,在产品下具有唯一性。即Alink JSON格式中该事件的identifier的值,作为设备上报该事件数据的Key,例如:ErrorCode。 支持英文、数字和下划线(_),不超过50个字符。 |
| 事件类型 | 您可以针对不同的事件类型进行业务逻辑处理和统计分析。
|
| 输出参数 | 该事件的出参。单击增加参数,在弹窗对话框中添加一个服务出参。您可以使用某个属性作为出参,也可以自定义参数。例如:将已定义的属性电压作为出参,则设备上报该故障事件时,将携带当前设备的电压值,用于进一步判断故障原因。 当接入网关协议为OPC UA时,需设置参数索引,用于标记参数的顺序。 |
| 扩展类型 | 扩展描述为设备通信协议到标准物模型的映射关系。对应物模型TSL中的物模型扩展配置。 仅网关子设备的接入网关协议为自定义或OPC UA时,需增加扩展描述。
|
| 描述 | 输入文字,对该事件功能进行说明或备注。长度限制为100个字符。 |
发布模型
1.单击功能定义的编辑草稿页面左下方的发布上线。控制台页面会弹出发布物模型上线?对话框。
2.可选:单击添加发布备注,输入版本号和版本描述。

3.如果存在已上线的版本,则需要进行比对,确认新版本的修改点。单击比对结果,在比对结果对话框中查看修改点。确认无误后,单击确认查阅,回到发布物模型上线对话框,自动选中“确认已查看当前版本与线上版本的比对结果”前的复选框。
如果不需要比对,您可直接手动选中“确认已查看当前版本与线上版本的比对结果”前的复选框。
4.单机确定,完成物模型的部署
执行结果
物模型发布后,物联网平台为该产品生成正式版本的物模型。在产品详情页面的功能定义页签下,您可以:
-
单击物模型TSL,查看JSON格式的物模型TSL。
-
单击生成设备端代码,下载物联网平台根据您定义的功能生成的设备端代码,用于设备端物模型功能开发。
2.3.3更新模型
添加前提条件
已添加物模型。具体操作,请参见单个添加物模型或批量添加物模型。
修改自定义物模型模块的名称
1.登录物联网平台控制台。
2.在实例概览页面的全部环境下,找到对应的实例,单击实例ID或备注名称。

3.在左侧导航栏,选择设备管理 > 产品。在产品列表中,单击产品对应的查看。
4.在产品详情页面,单击功能定义页签,再单击编辑草稿。
5.在功能定义的编辑草稿页面左侧,移动鼠标指针到自定义模块区域,单击自定义模块右侧的编辑按钮,如下图所示。

- 单击功能定义的编辑草稿页面左下方的发布上线。控制台页面会弹出发布物模型上线?对话框。
- 单击添加发布备注,输入版本号和版本描述。
修改物模型功能定义
- 在产品详情页,单击功能定义页签,再单击编辑草稿。
- 在功能定义的编辑草稿页面左侧,单击默认模块或自定义的模块。
- 在编辑草稿页面右侧的功能列表中,找到待更新的功能名称,单击操作列的编辑。
- 在弹出的对话框中,修改相关配置,单击确认。配置说明,请参见功能定义。
- 发布修改后的物模型。具体操作,请参见修改自定义物模型模块的名称的步骤7
删除自定义的物模型模块
- 在产品详情页面,单击功能定义页签,再单击编辑草稿。
- 在功能定义的编辑草稿页面左侧,移动鼠标指针到自定义模块区域,单击自定义模块右侧的删除按钮,如下图所示

删除物模型功能
- 在产品详情页,单击功能定义页签,再单击编辑草稿。
- 在功能定义的编辑草稿页面左侧,单击默认模块或自定义的模块。
- 在编辑草稿页面右侧的功能列表中,找到待删除的功能名称,单击操作列的删除。
- 在弹出的对话框中,单击确认。
- 发布删除后的物模型。具体操作,请参见修改自定义物模型模块的名称的步骤7
2.3.4物理型TSL字段说明
{"schema": "物模型结构定义的访问URL。","profile": {"productKey": "当前产品的ProductKey。"},"properties": [{"identifier": "属性唯一标识符(物模型模块下唯一)。","name": "属性名称","accessMode": "属性读写类型:只读(r)或读写(rw)。","required": "是否是标准功能的必选属性:是(true),否(false)。","dataType": {"type": "属性类型: int(原生)、float(原生)、double(原生)、text(原生)、date(String类型UTC毫秒)、bool(0或1的int类型)、enum(int类型,枚举项定义方法与bool类型定义0和1的值方法相同)、struct(结构体类型,可包含前面7种类型,下面使用"specs":[{}]描述包含的对象)、array(数组类型,支持int、double、float、text、struct)。","specs": {"min": "参数最小值(int、float、double类型特有)。","max": "参数最大值(int、float、double类型特有)。","unit": "属性单位(int、float、double类型特有,非必填)。","unitName": "单位名称(int、float、double类型特有,非必填)。","size": "数组元素的个数,最大512(array类型特有)。","step": "步长(text、enum类型无此参数)。","length": "数据长度,最大10240(text类型特有)。","0": "0的值(bool类型特有)。","1": "1的值(bool类型特有)。","item": {"type": "数组元素的类型(array类型特有)。"}}}}],"events": [{"identifier": "事件唯一标识符(物模型模块下唯一,其中post是默认生成的属性上报事件)。","name": "事件名称。","desc": "事件描述。","type": "事件类型(info、alert、error)。","required": "是否是标准功能的必选事件:是(true),否(false)。","outputData": [{"identifier": "参数唯一标识符。","name": "参数名称。","dataType": {"type": "属性类型: int(原生)、float(原生)、double(原生)、text(原生)、date(String类型UTC毫秒)、bool(0或1的int类型)、enum(int类型,枚举项定义方法与bool类型定义0和1的值方法相同)、struct(结构体类型,可包含前面7种类型,下面使用"specs":[{}]描述包含的对象)、array(数组类型,支持int、double、float、text、struct)。","specs": {"min": "参数最小值(int、float、double类型特有)。","max": "参数最大值(int、float、double类型特有)。","unit": "属性单位(int、float、double类型特有,非必填)。","unitName": "单位名称(int、float、double类型特有,非必填)。","size": "数组元素的个数,最大512(array类型特有)。","step": "步长(text、enum类型无此参数)。","length": "数据长度,最大10240(text类型特有)。","0": "0的值(bool类型特有)。","1": "1的值(bool类型特有)。","item": {"type": "数组元素的类型(array类型特有)。"}}}}],"method": "事件对应的方法名称(根据identifier生成)。"}],"services": [{"identifier": "服务唯一标识符(物模型模块下唯一,其中set/get是根据属性的accessMode默认生成的服务)。","name": "服务名称。","desc": "服务描述。","required": "是否是标准功能的必选服务:是(true),否(false)。","callType": "async(异步调用)或sync(同步调用)。","inputData": [{"identifier": "入参唯一标识符。","name": "入参名称。","dataType": {"type": "属性类型: int(原生)、float(原生)、double(原生)、text(原生)、date(String类型UTC毫秒)、bool(0或1的int类型)、enum(int类型,枚举项定义方法与bool类型定义0和1的值方法相同)、struct(结构体类型,可包含前面7种类型,下面使用"specs":[{}]描述包含的对象)、array(数组类型,支持int、double、float、text、struct)。","specs": {"min": "参数最小值(int、float、double类型特有)。","max": "参数最大值(int、float、double类型特有)。","unit": "属性单位(int、float、double类型特有,非必填)。","unitName": "单位名称(int、float、double类型特有,非必填)。","size": "数组元素的个数,最大512(array类型特有)。","step": "步长(text、enum类型无此参数)。","length": "数据长度,最大10240(text类型特有)。","0": "0的值(bool类型特有)。","1": "1的值(bool类型特有)。","item": {"type": "数组元素的类型(array类型特有)。"}}}}],"outputData": [{"identifier": "出参唯一标识符。","name": "出参名称。","dataType": {"type": "属性类型: int(原生)、float(原生)、double(原生)、text(原生)、date(String类型UTC毫秒)、bool(0或1的int类型)、enum(int类型,枚举项定义方法与bool类型定义0和1的方法相同)、struct(结构体类型,可包含前面7种类型,下面使用"specs":[{}]描述包含的对象)、array(数组类型,支持int、double、float、text、struct)。","specs": {"min": "参数最小值(int、float、double类型特有)。","max": "参数最大值(int、float、double类型特有)。","unit": "属性单位(int、float、double类型特有,非必填)。","unitName": "单位名称(int、float、double类型特有,非必填)。","size": "数组元素的个数,最大512(array类型特有)。","step": "步长(text、enum类型无此参数)。","length": "数据长度,最大10240(text类型特有)。","0": "0的值(bool类型特有)。","1": "1的值(bool类型特有)。","item": {"type": "数组元素的类型(array类型特有)。"}}}}],"method": "服务对应的方法名称(根据identifier生成)。"}],//仅自定义模块的TSL中有以下参数。"functionBlockId": "自定义模块的唯一标识符,模块ID。","functionBlockName": "自定义模块名称。",//当产品下添加了自定义模块,默认模块TSL中会包含以下参数,表示已添加的自定义模块列表。"functionBlocks": [{"functionBlockId": "自定义模块的唯一标识符,模块ID。","functionBlockName": "自定义模块名称。","productKey": "产品ProductKey。"}]
}
2.3.5物模型支持的数据类型
| 数据类型 | 说明 | 示例示例 |
| int32 | 32位整型。 | 10 |
| float | 单精度浮点型。 | 1.1 |
| double | 双精度浮点型。 | 1.23 |
| text | 字符串,对应的数据长度不能超过10240字节。 | "hello" |
| date | 时间戳。格式为String类型的UTC时间戳,单位:毫秒。 | "1635839462000" |
| bool | 布尔型。采用0(false)或1(true)来定义布尔值,且0和1为int32类型。 | 0表示关、1表示开。 |
| enum | 枚举型。定义枚举项的参数值和参数描述,参数值必须为整数。 | 整数0表示红色,整数1表示蓝色,整数2表示绿色。 |
| struct | JSON对象。定义一个JSON结构体,结构体内元素类型支持int32、float、double、text、date、bool和enum,不支持结构体嵌套。 | { "name":"Tom", "age":10 } |
| array | 数组。需声明数组内的元素类型、数组元素个数。元素类型支持int32、float、double、text或struct,需确保同一个数组元素类型相同。元素个数限制为1~512个。 | [1,2,3,4,5,6] |
2.4使用消息通信Topic
2.4.1什么是Topic
Topic是消息发布(Pub)者和订阅(Sub)者之间的传输中介。设备可通过Topic实现消息的发送和接收,从而实现服务端与设备端的通信。为方便海量设备基于Topic进行通信,简化授权操作,物联网平台定义了产品Topic类和设备Topic。本文介绍产品和设备Topic的定义、使用和分类。
Topic类定义
Topic类:产品维度的Topic,是同一产品下不同设备的Topic集合。一个ProductKey下有多个Topic类。一个Topic类对一个ProductKey下所有设备通用。
以下是Topic类的使用说明:
- 定义Topic类的功能。
Topic类格式以正斜线(/)开头并进行分层,区分每个类目。例如:
/${productKey}/${deviceName}/user/update。其中,${productKey}和${deviceName}两个类目为既定类目;后缀和前缀类目用于区分不同功能的消息。
- ${productKey}表示产品的标识符ProductKey。
在指定产品的Topic类中,需替换为实际的ProductKey值。
- ${deviceName}表示设备名称(DeviceName)。
在产品Topic类中,${deviceName}是该产品下所有设备的名称变量,不需要替换为实际设备名称。
- ${productKey}表示产品的标识符ProductKey。
- 定义Topic类的操作权限。
- 发布:产品下设备可以往该Topic类对应的设备Topic发布消息。
- 订阅:产品下设备可以订阅该Topic类对应的设备Topic,从而获取消息。
- 发布和订阅:同时具备发布和订阅的操作权限。
Topic定义
在产品Topic类基础上,使用具体的${productKey}/${deviceName}通配一个唯一的设备,与前缀、后缀类目组成的完整Topic,就是具体设备的Topic。
设备Topic与产品Topic类格式一致,区别在于Topic类中的变量${deviceName},在设备Topic中是具体的设备名称(DeviceName)。
例如产品a19mzPZ***下设备device1和device2的具体Topic如下:
/a19mzPZ****/device1/user/update。/a19mzPZ****/device2/user/update。
产品Topic类定义的功能和操作权限,会映射到具体的设备Topic。以下是设备Topic的使用说明:
- 具体的设备Topic可用于消息通信
- 指定的设备Topic只能被指定设备用于消息通信。
例如,Topic:
/a19mzPZ****/device1/user/update归属于设备device1,只能被设备device1用于发布或订阅消息,而不能被设备device2用于发布或订阅消息。 - 您可管控单个设备的消息收发。
您可在物联网平台控制台对应实例下的设备列表页面,或在服务端调用DisableThing接口,禁用该设备;或在业务上管控发送给设备的消息。
Topic分类和通信说明
物联网平台预定义的产品Topic类对应的设备Topic包含基础通信Topic、物模型通信Topic和自定义Topic三种类型,详细说明见下表。

2.4.2使用物理型Topic
前提条件
已完成以下操作:
- 创建产品:在物联网平台控制台创建产品。
- 单个添加物模型或批量添加物模型:在已创建产品下添加物模型。
- 完成设备端开发:完成物模型开发,将设备接入物联网平台。
使用流程
重要 下述设备与物联网平台通信中,如果是自定义模块的物模型功能,通信的数据格式中各功能字段必须携带自定义模块的标识符,格式为模块标识符:功能定义标识符(中间为英文冒号)。
例如,在物模型TSL中,自定义模块标识符为{tsl.functionBlockId},则通信数据格式中各功能定义标识符格式如下:
- 属性:
{tsl.functionBlockId}:{tsl.properties.identifier}。 - 事件:
{tsl.functionBlockId}:{tsl.event.identifier}。 - 服务:
{tsl.functionBlockId}:{tsl.service.identifier}。
- 设备上报数据:物联网平台根据封装的Alink协议数据格式生成数据,完成上报。
物联网平台也可以设置属性、设备期望属性值和调用服务。Alink协议的数据格式,请参见设备属性、事件、服务和设备期望属性值。
- 物联网平台校验数据:物联网平台校验设备端上报的属性、事件数据和服务调用数据(服务请求参数和服务调用结果),并将校验通过的数据显示在物联网平台控制台对应设备的设备详情页面下物模型数据页签。
- 可选:服务端订阅和云产品流转:您的服务器可通过数据流转规则,获取设备属性和事件数据,以及设备属性设置和服务调用指令的响应结果。
数据流转的格式说明,请参见数据格式。
三.公共实例快速入门
3.1创建产品与设备
背景信息
-
产品相当于一类设备的集合,同一产品下的设备具有相同的功能。您可以根据产品批量管理设备,如定义物模型、自定义Topic等。
-
您的每个实际设备需对应一个物联网平台设备。将物联网平台颁发的设备证书(ProductKey、DeviceName和DeviceSecret)烧录到设备上,用于设备连接物联网平台的身份验证,请参见设备获取设备证书文档。
操作步骤
-
登录物联网平台控制台。
-
在控制台左上方,选择物联网平台所在地域。
-
在实例概览页面,单击公共实例。
- 在左侧导航栏,选择设备管理 > 产品,单击创建产品。
-
在新建产品页面,配置参数后,单击确认。
本文示例的产品名称为路灯,所属品类为自定义品类,其他参数使用默认值,如下图所示。

6.在创建产品页面,单击前往添加。
7.在设备列表页签,单击添加设备,输入设备名称(DeviceName)为device1,设置备注名称为设备1,单击确认。
更多描述,请参见单个创建设备。

创建设备成功后,在弹出的添加完成对话框,单击一键复制设备证书获取设备证书。
您也可单击前往查看,在设备详情页面,单击DeviceSecret右侧查看,获取设备证书。
设备证书包含ProductKey、DeviceName和DeviceSecret,是设备与物联网平台进行通信的重要身份认证。
| 参数 | 说明 |
| ProductKey | 设备所属产品的ProductKey,即物联网平台为产品颁发的全局唯一标识符。 |
| DeviceName | 设备在产品内的唯一标识符。DeviceName与设备所属产品的ProductKey组合,作为设备标识,用来与物联网平台进行连接认证和通信。 |
| DeviceSecret | 物联网平台为设备颁发的设备密钥,用于认证加密。需与DeviceName成对使用。 |
3.2为产品定义物模型
物联网平台支持为产品定义物模型,将实际产品抽象成由属性、服务、事件所组成的数据模型,便于物联网平台管理和数据交互。产品创建完成后,您可以为它定义物模型,产品下的设备将自动继承物模型内容。
前提条件
已完成产品创建。具体操作,请参见创建产品与设备。
背景信息
本文介绍为路灯所属的产品,定义工作电流、主灯开关的物模型属性。定义完物模型,您可以接入更多路灯到该产品下,自动继承已定义的物模型。物模型相关介绍,请参见什么是物模型。
操作步骤
-
登录物联网平台控制台。
-
在实例概览页面,单击公共实例。
- 在左侧导航栏,选择设备管理 > 产品。在产品列表中,找到已创建的路灯产品,单击操作栏的查看。
- 在产品详情页,单击功能定义页签,然后单击编辑草稿。

5.在功能定义页面的默认模块,单击添加自定义功能,进行物模型配置,然后单击确认。
按照如下图设置路灯产品的主灯开关和工作电流属性。
- 主控开关属性

- 工作电流属性

6.发布模型
- 单击功能定义的编辑草稿页面左下方的发布上线。控制台页面会弹出发布物模型上线?对话框。
- 单击添加发布备注,输入版本号和版本描述。
- 如果存在已上线的版本,则需要进行比对,确认新版本的修改点。
单击比对结果,在比对结果对话框中查看修改点。确认无误后,单击确认查阅,回到发布物模型上线对话框,自动选中“确认已查看当前版本与线上版本的比对结果”前的复选框。如果不需要比对,您可直接手动选中“确认已查看当前版本与线上版本的比对结果”前的复选框。
- 单击确定,完成物模型的发布。
四.如何获取MQTT签名参数
设备通过您自研的MQTT接入工具连接物联网平台时,需输入MQTT的签名认证参数username、passwd和mqttClientId。本文介绍获取MQTT连接签名参数值的方法。
概述
您可根据实际业务需要,选择如下方法获取MQTT签名参数值。
| 方法 | 说明 |
| 直接在物联网平台获取 | 支持签名算法为hmacsha256。 设备的ClientId默认为 |
| 使用网页工具计算 | 支持签名算法为hmacmd5和hmacsha1。 |
| 使用Node.js语言脚本计算 | 支持签名算法为hmacsha256。 设备的ClientId默认为 |
4.1 直接在物联网平台获取

4.2 使用网页工具计算
- 单击下载MQTT_Password工具包,然后解压。
- 在文件夹MQTT_Password下,使用浏览器打开sign.html文件。

3.在MQTT签名计算页面,根据页面提示,输入对应信息,如下图所示。

| 参数 | 说明 |
| productKey | 您添加设备后,保存的设备证书信息,请参见设备证书信息。 您可在控制台中设备的设备详情页面查看。 |
| deviceName | |
| deviceSecret | |
| timestamp | 时间戳。当前时间毫秒值,自动填充。每刷新一次页面,更新一次。 |
| clientId | 设备的Client ID信息,可自定义,长度在64个字符以内。建议使用您设备的MAC地址或SN码,方便您识别区分不同的设备。 |
| method | 签名算法类型,支持hmacmd5和hmacsha1。 |
4.单击Generate,计算结果显示签名参数值。

4.3 使用Node.js语言脚本计算
五.参考文档
阿里云物联网平台产品文档
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

