IoT物联网接入
阿里云平台功能页面
1.设备生命周期
设备注册、功能定义、数据解析、在线调试、远程配置、固件升级、远程维护、实时监控、分组管理、设备删除
2.阿里云平台API列表

2.1 API调用详情页 
2.2 OpenAPI Explorer(开放平台接口)

测试产品生命周期调用接口测试
1.注册产品
1 | CreateProduct-调用该接口新建产品。 |
1 | 返回数据 |
2.注册设备
1 | RegisterDevice-调用该接口在指定产品下注册设备。 |
1 | 返回数据-自动生成 |
3.启用设备
1 | EnableThing-调用该接口解除指定设备的禁用状态,即启用被禁用的设备。 |
1 | 返回数据-成功/失败 |
显示设备未激活(需要绑定真实的设备)

4.查询设备状态
1 | GetDeviceStatus-查看指定设备的运行状态。 |
1 | 返回数据 |
5.创建本地模拟设备(nodejs)
每5秒发送温度+湿度随机参数

6.创建物模型
1 | CreateThingModel-为指定产品的物模型新增功能 |
1 | 返回数据 |
7.显示设备即时数据


调用API请求结构
1.请求结构
1.接口
1 | http://Endpoint/?Action=xx&Parameters |
可发送HTTP/HTTPS请求
2.参数
| 参数 | 说明 |
|---|---|
| Endpoint | 调用云服务的接入地址。物联网平台的接入地址格式:iot.${RegionId}.aliyuncs.com。其中,变量${RegionId}需替换为您的物联网平台服务的地域代码。例如: 华东2(上海): iot.cn-shanghai.aliyuncs.com |
| Action | 要执行的操作,即云端API接口的名称。例如,调用Pub接口向指定Topic发布消息,Action对应的值就是Pub,即Action=Pub。 |
| Parameters | 请求参数。每个参数之间用(&)符号分隔。 请求参数由公共请求参数和API自定义参数组成。公共参数中包含API版本号、身份验证等信息。 |
公共请求参数如下:
公共请求参数是调用每个API时都需要使用的请求参数。
| 名称 | 类型 | 是否必需 | 描述 |
|---|---|---|---|
| Format | String | 否 | 返回值的类型,支持JSON和XML类型。默认为XML。 |
| Version | String | 是 | API版本号,为日期形式:YYYY-MM-DD,最新版本为2018-01-20 。每个接口可以存在多个版本。 |
| AccessKeyId | String | 是 | 阿里云颁发给用户的访问服务所用的密钥ID。登录阿里云控制台,将光标移至账号头像上,然后单击accesskeys,跳转至用户信息管理页,即可创建和查看AccessKey。 |
| Signature | String | 是 | 签名结果串。 |
| SignatureMethod | String | 是 | 签名方式,目前支持HMAC-SHA1。 |
| Timestamp | String | 是 | 请求的时间戳。日期格式按照ISO8601标准表示,并需要使用UTC时间。格式为YYYY-MM-DDThh:mm:ssZ。例如,2016-01-04T12:00:00Z表示北京时间2016年01月04日20点0分0秒。 |
| SignatureVersion | String | 是 | 签名算法版本。目前版本是1.0。 |
| SignatureNonce | String | 是 | 唯一随机数。用于防止网络重放攻击。用户在不同请求中要使用不同的随机数值。 |
| RegionId | String | 是 | 设备所在地域(与控制台上的地域对应),如cn-shanghai。 |
3.案例
调用Pub接口向指定Topic发布消息
1 | https://iot.cn-shanghai.aliyuncs.com/?Action=Pub |
4.返回参数
成功:
XML格式
1
2
3
4
5
6
7<?xml version="1.0" encoding="UTF-8"?>
<!—结果的根结点-->
<接口名称+Response>
<!—返回请求标签-->
<RequestId>4C467B38-3910-447D-87BC-AC049166F216</RequestId>
<!—返回结果数据-->
</接口名称+Response>JSON格式
1
2
3
4{
"RequestId": "4C467B38-3910-447D-87BC-AC049166F216"
/* 返回结果数据 */
}
失败
XML格式
1
2
3
4
5
6<?xml version="1.0" encoding="UTF-8"?>
<Error>
<RequestId>8906582E-6722-409A-A6C4-0E7863B733A5</RequestId>
<Code>UnsupportedOperation</Code>
<Message>The specified action is not supported.</Message>
</Error>JSON格式
1
2
3
4
5{
"RequestId": "8906582E-6722-409A-A6C4-0E7863B733A5",
"Code": "UnsupportedOperation",
"Message": "The specified action is not supported."
}
注意: 需要授权调用的接口的Action参数由原来的
操作名变为iot:操作名
2.签名机制
物联网平台会对每个接口访问请求的发送者进行身份验证,所以无论使用HTTP还是HTTPS协议提交请求,都需要在请求中包含签名(Signature)信息。
签名方法
签名时,您需在控制台 AccessKey 管理页面查看您的账号的AccessKeyId和AccessKeySecret,然后进行对称加密。其中,AccessKeyId用于标识访问者身份;AccessKeySecret是用于加密签名字符串和服务器端验证签名字符串的密钥,必须严格保密。
签名示例
以调用Pub接口为例。假设您的AccessKeyId=testid,AccessKeySecret=testsecret。
组成签名前的请求URL。
1
http://iot.cn-shanghai.aliyuncs.com/?MessageContent=aGVsbG93b3JsZA%3D&Action=Pub&Timestamp=2017-10-02T09%3A39%3A41Z&SignatureVersion=1.0&ServiceCode=iot&Format=XML&Qos=0&SignatureNonce=0715a395-aedf-4a41-bab7-746b43d38d88&Version=2017-04-20&AccessKeyId=testid&SignatureMethod=HMAC-SHA1&RegionId=cn-shanghai&ProductKey=12345abcdeZ&TopicFullName=%2FproductKey%2Ftestdevice%2Fget
计算得到待签名字符串
StringToSign
1
GET&%2F&AccessKeyId%3Dtestid%26Action%3DPub%26Format%3DXML%26MessageContent%3DaGVsbG93b3JsZA%253D%26ProductKey%3D12345abcdeZ%26Qos%3D0%26RegionId%3Dcn-shanghai%26ServiceCode%3Diot%26SignatureMethod%3DHMAC-SHA1%26SignatureNonce%3D0715a395-aedf-4a41-bab7-746b43d38d88%26SignatureVersion%3D1.0%26Timestamp%3D2017-10-02T09%253A39%253A41Z%26TopicFullName%3D%252FproductKey%252Ftestdevice%252Fget%26Version%3D2017-04-20
计算签名值。
因为
AccessKeySecret=testsecret,用于计算的Key为testsecret&,计算得到的签名值为:1
Y9eWn4nF8QPh3c4zAFkM/k/u7eA=
将签名作为
Signature参数加入到URL请求中,最后得到的URL为:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15http://iot.cn-shanghai.aliyuncs.com/?MessageContent=aGVsbG93b3JsZA%3D
&Action=Pub
&Timestamp=2017-10-02T09%3A39%3A41Z
&SignatureVersion=1.0
&ServiceCode=iot
&Format=XML
&Qos=0
&SignatureNonce=0715a395-aedf-4a41-bab7-746b43d38d88
&Version=2017-04-20
&AccessKeyId=testid
&Signature=Y9eWn4nF8QPh3c4zAFkM%2Fk%2Fu7eA%3D
&SignatureMethod=HMAC-SHA1
&RegionId=cn-shanghai
&ProductKey=12345abcdeZ
&TopicFullName=%2FproductKey%2Ftestdevice%2Fget
企业基于物联网平台的业务链路

产品名词解释
| 名词 | 描述 |
|---|---|
| 产品 | 设备的集合,通常指一组具有相同功能的设备。物联网平台为每个产品颁发全局唯一的ProductKey。每个产品下最多可以包含50万个设备。 |
| 设备 | 归属于某个产品下的具体设备。物联网平台为设备颁发产品内唯一的证书DeviceName。设备可以直接连接物联网平台,也可以作为子设备通过网关连接物联网平台。 |
| 分组 | 物联网平台支持建立设备分组,分组中可包含不同产品下的设备。通过设备组来进行跨产品管理设备。 |
| 网关 | 能够直接连接物联网平台的设备,且具有子设备管理功能,能够代理子设备连接云端。 |
| 子设备 | 本质上也是设备。子设备不能直接连接物联网平台,只能通过网关连接。 |
| 设备证书 | 设备证书指ProductKey、DeviceName、DeviceSecret。ProductKey:是物联网平台为产品颁发的全局唯一标识。该参数很重要,在设备认证以及通信中都会用到,因此需要您保管好。DeviceName:在注册设备时,自定义的或系统生成的设备名称,具备产品维度内的唯一性。该参数很重要,在设备认证以及通信中都会用到,因此需要您保管好。DeviceSecret:物联网平台为设备颁发的设备密钥,和DeviceName成对出现。该参数很重要,在设备认证时会用到,因此需要您保管好并且不能泄露。 |
| ProductSecret | 由物联网平台颁发的产品密钥,通常与ProductKey成对出现,可用于一型一密的认证方案。该参数很重要,需要您保管好,不能泄露。 |
| 设备X.509证书 | 物联网平台支持设备使用X.509数字证书进行身份验证。您创建认证方式为X.509证书的设备后,物联网平台为设备颁发对应的X.509证书,证书信息包括:X.509数字证书(Certificate)、X.509证书ID(CertSN)和X.509证书密钥(PrivateKey)。 |
| Topic | Topic是UTF-8字符串,是发布(Pub)/订阅(Sub)消息的传输中介。可以向Topic发布或者订阅消息。 |
| Topic类 | 同一产品下不同设备的Topic集合,用${productkey}和${deviceName}通配一个唯一的设备,一个Topic类对一个ProductKey下所有设备通用。 |
| 发布 | 操作Topic的权限类型,对应的英文名称为Pub。可以往此类Topic中发布消息。 |
| 订阅 | 操作Topic的权限类型,对应的英文名称为Sub。可以从此类Topic中订阅消息。 |
| RRPC | 全称:Revert-RPC。RPC(Remote Procedure Call)采用客户机/服务器模式,用户不需要了解底层技术协议,即可远程请求服务。RRPC则可以实现由服务端请求设备端,并能够使设备端响应的功能。 |
| 标签 | 标签分为产品标签、设备标签和分组标签。产品标签:描述同一个产品下,所有设备所具有的共性信息。设备标签:通常根据设备的特性为设备添加的特有标记,您可以自定义标签内容。分组标签:描述同一个分组下,所有设备所具有的共性信息。 |
| Alink协议 | 阿里云定义的设备与云端之间的通信协议。 |
| 物模型 | 是对设备在云端的功能描述,包括设备的属性、服务和事件。物联网平台通过定义一种物的描述语言来描述物模型,称之为 TSL(即 Thing Specification Language),采用JSON格式,您可以根据TSL组装上报设备的数据。 |
| 属性 | 设备的功能模型之一,一般用于描述设备运行时的状态,如环境监测设备所读取的当前环境温度等。属性支持 GET 和 SET 请求方式。应用系统可发起对属性的读取和设置请求。 |
| 服务 | 设备的功能模型之一,设备可被外部调用的能力或方法,可设置输入参数和输出参数。相比于属性,服务可通过一条指令实现更复杂的业务逻辑,如执行某项特定的任务。 |
| 事件 | 设备的功能模型之一,设备运行时的事件。事件一般包含需要被外部感知和处理的通知信息,可包含多个输出参数。例如,某项任务完成的信息,或者设备发生故障或告警时的温度等,事件可以被订阅和推送。 |
| 数据解析脚本 | 针对采用透传格式/自定义数据格式的设备,需要在云端编写数据解析脚本,将设备上报的二进制数据或自定义的JSON数据,转换为物联网平台支持的Alink JSON数据格式;将平台下发的Alink JSON格式数据,转换为设备支持的格式。 |
| 设备影子 | 是一个JSON文档,用于存储设备或者应用的当前状态信息。每个设备都会在云端有唯一的设备影子。无论该设备是否连接到Internet,您都可以使用设备影子通过MQTT协议或HTTP协议获取和设置设备的状态。 |
| 规则引擎 | 通过创建、配置规则,以实现数据流转和场景联动。 |
| 数据流转 | 物联网平台规则引擎的数据流转功能,可将Topic中的数据转发至其他Topic或其他阿里云服务进行存储或处理。 |
| 场景联动 | 场景联动是一种开发自动化业务逻辑的可视化编程方式。您可以通过可视化的方式定义设备之间联动规则,并将规则部署至云端或者边缘端。 |
| 服务端订阅 | 服务端订阅产品下所有类型的消息:设备上报消息、设备状态变化通知、网关发现子设备上报消息、设备生命周期变更消息和设备拓扑关系变更消息。目前支持两种方式实现服务端订阅:AMQP:Advanced Message Queuing Protocol即高级消息队列协议。服务端通过AMQP协议接入云端,接收云端推送的消息。MNS:将消息流转到指定MNS队列中,您的服务端从MNS队列中接收消息。 |
| 一型一密 | 同一产品下所有设备可以烧录相同产品证书(即ProductKey和ProductSecret)。设备发送激活请求时,物联网平台进行产品身份确认,认证通过,下发该设备对应的DeviceSecret。 |
| 一机一密 | 每个设备烧录其唯一的设备证书(ProductKey、DeviceName和DeviceSecret)。当设备与物联网平台建立连接时,物联网平台对其携带的设备证书信息进行认证。 |
| 期望属性值 | 通过期望属性值功能,设置您希望的设备属性值。若设备在线,将实时更新属性值;若设备离线,期望属性值将缓存在云端。设备上线后,获取期望属性值,并更新属性值。 |
| 公共实例 | 在阿里云官网线上开通的物联网平台服务为公共实例。公共实例部署于阿里云经典网络。多账号共用一个公共实例,账号之间逻辑隔离。产品、设备、规则等资源可在阿里云物联网平台控制台上进行操作管理。 |
| 独享实例 | 部署于阿里云VPC网络的物联网平台独享实例。一个账号独享一个实例资源。独享实例适用于设备数量达10万及以上的客户、资源隔离性要求高的行业客户或物联网平台转售商等。购买独享实例,请联系阿里云商务人员(电话:95187转1)或提交工单。 |
API列表
https://help.aliyun.com/document_detail/69893.html