云智造接入云智造平台

接入云智造平台

更新时间:2022-03-02 03:46:32下载pdf

本文通过示例的方式为您介绍云智造平台的接入流程,旨在让您快速接入云智造平台,实现对设备生产流程的管控。

本文中我们为您提供:

  • 如何从零开始完成云智造平台的对接。
  • 完整的 Postman 接口文档。
  • 一份代码 Demo。只需要输入获取到的授权和账号信息,就可以完成业务调试。

准备工作

在接入云智造平台之前,请先确认已经完成以下两个准备工作:

说明

  • 示例中的请求地址为中国区地址,其他地址见 请求结构-接入地址
  • 在本文中 PMS 系统和云智造平台是同义词。

符号约定

在进入接入流程之前,我们先对以下通用参数进行编号并加以解释,在下文中,我们以 通用参数 1通用参数 2等来替代这些参数。

编号 名称 类型 描述
通用参数 1 client_id String 通过 准备工作 1 所获取的授权信息中的 Access ID/Client ID。
通用参数 2 secret String 通过 准备工作 1 所获取的授权信息中的 Access Secret/Client Secret。
通用参数 3 username String 通过 准备工作 2 所获取的 PMS系统 用户名。
通用参数 4 password String 通过 准备工作 2 所获取的 PMS系统 密码。

接入流程

云智造平台完整的接入流程如下图所示:
接入云智造平台

一次完整的接入流程包括以下三步:

  1. 云开发鉴权。
  2. 云智造平台鉴权。
  3. 云智造业务请求。

第一步 云开发鉴权

云智造平台的鉴权依赖于云开发的鉴权,在执行云智造平台相关的操作之前,需要先完成云开发的鉴权。

  • 请求类型:Get

  • 请求地址:/v1.0/token?grant_type=1

  • Header 参数:具体参数说明请参考:请求结构-请求头参数

    说明

    • 本次请求不需要 access_token;
    • 参数 client_id通用参数 1
    • 参数 sign 的计算方式为:sign = HMAC-SHA256(client_id + t, secret).toUpperCase(),其中的 secret 为 通用参数 2,详细签名方式请参考 签名机制-令牌管理 API 签名算法
  • 请求参数:无

  • 响应参数:响应参数请参考 授权管理-获取令牌

  • 请求示例

curl -H "client_id:e7r9rp3fab1jtlja761b" -H "sign:14ADCB6FEDC822CC2CBA8537770453E90683B9E9C5B96C851AEB78C4F078C739" -H "sign_method:HMAC-SHA256" -H "t:1614851428586" -H "lang:en" "https://openapi.tuyacn.com/v1.0/token?grant_type=1"
  • 响应示例
{
    "result": {
        "access_token": "90987371be17bd35309ea325bd9b****",
        "expire_time": 7200,
        "refresh_token": "374e7ce2a93b590fb9566aff5119****",
        "uid": "ay15224842516504****"
    },
    "success": true,
    "t": 1616551714002
}

请求鉴权接口返回的信息中最主要的参数是访问令牌 access_token 和刷新令牌 refresh_token,在下文中会用到。

第二步 云智造平台鉴权

云智造平台的鉴权需要先获取登录 Token,然后使用登录 Token 请求登录接口。

获取登录 Token

详细接口说明见:获取登录 Token

  • 请求类型:Post
  • 请求地址:/v2.0/pms/production/login/token/get
  • Header参数:具体参数说明请参考 请求结构-请求头参数

说明

  • 参数 access_token 为 第一步 云开发鉴权 响应参数中的 access_token。
  • 参数 sign 的计算方式与 第一步 云开发鉴权 略有不同:sign = HMAC-SHA256(client_id + access_token + t, secret).toUpperCase(),其中的 secret 即为 通用参数 2,详细签名方式参考:签名机制-业务管理 API 签名算法
  • 其他参数同 第一步 云开发鉴权
curl -H "Content-Type:application/json" -H "client_id:e7r9rp3fab1jtlja761b" -H "sign:6B401BB9CBB6FA3911C8E33F8EA6C0509224B6010C1E39F8AB727C2594FD5766" -H "sign_method:HMAC-SHA256" -H "t:1614914099164" -H "lang:en"  -H "access_token:fa8b752dc54c54e3e53823b4f18f9c76" -X POST --data '{"username":"325"}' "https://openapi.tuyacn.com/v2.0/pms/production/login/token/get"
  • 响应示例
{
    "result": {
        "publicKey": "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCh1mJNULvlxSb+gwQiMeYa6wpVofkueBuCq2SgPxTBcaN1wXCRe84+jWpbCaXcyVh9IOM9/oc5U/KvdemS9ihTxv/hfXS657OE5q7WM4SgSvFC1YEfvQjFCw1kg7w246FCHit/zOmWhCMB52r9FEm/fy8ijvR3f1tMmuz4LQd1bwID****",
        "token": "7e5117fecc8079e7f0d08a3fa088****"
    },
    "success": true,
    "t": 1616551772155
}

本次请求的核心响应参数为 tokenpublicKey,在登录 PMS 系统时会用到。接口返回的 Token 有效时间仅为 10 秒,很快就会过期。

登录 PMS 系统

登录 PMS 系统接口说明参考:登录云智造平台

  • 请求类型:Post
  • 请求地址:/v2.0/pms/production/user/login
  • Header 参数:与上文 获取登录 Token 一致
  • 请求参数:参考 登录云智造平台

说明

  • username 与上文 获取登录 Token 一致。
  • password 采用 RSA 方式加密,Padding 类型为 RSA_PKCS1_PADDING:password = RSA(原password, publicKey)。
    • 原 password 为 通用参数 4
    • publicKey 为上文 获取登录 Token 中的响应参数。
  • token 参数为上文 获取登录 Token 中的响应参数。
curl -H "Content-Type:application/json" -H "client_id:e7r9rp3fab1jtlja761b" -H "sign:B3B970C5C3F2B90B98FED85BFDA250CFA66EC7837ADD86CB0FC747BFE0D0F60F" -H "sign_method:HMAC-SHA256" -H "t:1614916710311" -H "lang:en"  -H "access_token:fa8b752dc54c54e3e53823b4f18f9c76" -X POST --data '{"username":"325","password":"eTHqOJFhY8pDClWw1zOpPqEjwdoW2nL+RI93tPCnEd3flv/KI80naWrhx2y4PSyqMLUZxr4ZEEhrL7oE7aCEi/uPHLuo7opvdgEmS2Lyk97lWwPoFXmg2t65LtBGG869b8tQu2/72aqIsuVDkK47u3UKtTEGobb2U58IxW5CTWg=","token": "38af05ec752c24f8bdbe544b1179ad10"}' "https://openapi.tuyacn.com/v2.0/pms/production/user/login"
  • 响应示例
{
    "result": {
        "accessToken": "affd61d250d8ed27de7a0d955a5a****",
        "refreshToken": "9a473a56ea86b82a3ced1f254b24****"
    },
    "success": true,
    "t": 1616551775549
}

通过响应参数,我们知道登录 PMS 后的响应数据包含 accessTokenrefreshToken,这两个参数和 第一步 云开发鉴权 中的响应参数看起来只有命名风格不同(本次请求的响应值是驼峰式命名)。在后续的业务请求中,我们将会使用本次请求响应的值代替 第一步 云开发鉴权 中的响应值进行接口请求。

第三步 业务请求

这里我们以获取 SN 过站信息为例,为您展示如何进行一次业务请求,具体请求方式可以查看 云智造-API列表

  • 请求类型:Post
  • 请求地址:/v1.0/pms/station/sn/flows/get
  • Header 参数:与上文 获取登录 Token 一致

说明

  • access_token 需要使用上文 登录 PMS 系统 中的返回参数 accessToken
  • sign 的计算方式与上文 获取登录 Token 一致,但其中的 access_token 需要换成上文 登录 PMS 系统 中的返回参数 accessToken
  • 所有业务接口的请求消息头构造方式都是相同的。
curl -H "Content-Type:application/json" -H "client_id:e7r9rp3fab1jtlja761b" -H "sign:DB52E1A1599CE59FCB5E6970365566BB2E00B8D37759401BFCE255ED06E2D790" -H "sign_method:HMAC-SHA256" -H "t:1614917378432" -H "lang:en"  -H "access_token:c24bb01ee09fc7884f94c761d17722cf" -X POST --data '{"sn":"YZCB04ZZR00001"}' "https://openapi.tuyacn.com/v1.0/pms/station/sn/flows/get"
  • 响应示例
{
    "result": [
        {
            "craftLineCode": "j2***azn",
            "node": "firstTest",
            "nodeDesc": "烧录授权",
            "orderCode": "YZC***ZZR",
            "sn": "YZCB04***00001",
            "status": false,
            "time": 1612524780119
        }
    ],
    "success": true,
    "t": 1616551882179
}

第四步 (可选)刷新 Token

accessToken 的有效时间为两小时。过期后,可以通过刷新 Token 接口来刷新 Token,Token 一天只能刷新一次。

  • 请求类型:Get
  • 请求地址:/v1.0/token/{refreshToken}
  • Header参数:与上文 获取登录 Token 一致
  • 请求参数:无
  • 响应参数:参考 授权管理-刷新令牌
  • 请求示例
curl -H "client_id:e7r9rp3fab1jtlja761b" -H "sign:8480E421DD11E1ED972A6A121A4B78B4712D469859A204C366880DBF6D6D0081" -H "sign_method:HMAC-SHA256" -H "t:1614933327219" -H "lang:en" "https://openapi.tuyacn.com/v1.0/token/d415c1ecc7d742c5e1ca75634b75b73e"
  • 响应示例
{
    "result": {
        "access_token": "0c0e099651b1060ffafb9bfdf419****",
        "expire_time": 7200,
        "refresh_token": "169fca7561b8e5d393517e961df2****",
        "uid": "bay15911e11580224Q8AWQx34f48f89fca11ee502a445280-000****"
    },
    "success": true,
    "t": 1616551974215
}

使用 Postman 鉴权

我们提供了完整的 Postman 文档,您只需要依次完成下图中的前三个接口的 send 请求,就可以完成接口的鉴权操作。

注意:获取登录 Token 和 登录 PMS 系统的 send 操作间隔不要超过 10 秒。

如果你想了解接口中的参数填充是如何完成的,可以参考各个接口的 Pre-request ScriptTests 脚本。

接入云智造平台

安装配置 Postman

  1. 安装 Postman 7.12.0 及以上版本。
  2. 单击左上角的 Import,导入 云智造 API 接口包
    接入云智造平台
  3. 单击右上角的 Manage Environments,导入 云智造 API 环境包
    接入云智造平台
  4. 将环境变量修改为你申请的授权和账号信息。
    接入云智造平台

代码 Demo

为了方便接入,我们提供了 Java 版的接入 Demo,单击此处下载
方法入口:com.tuya.pms.openapi.util.PmsOpenApiHelper

常见问题

问题现象:登录 PMS 接口返回无效 Token 怎么办?
可能原因:可能因为输入参数时间超过 10 秒导致 Token 失效。
解决办法:Token 的有效时间只有10s,因此建议使用代码或者 Postman 的方式来进行调试。