设备分发

因为业务迁移,需要在其他地域、账号、实例下使用已注册的设备,可以使用设备分发功能。设备被分发后,物联网平台下发新的连接地址给设备,设备本地固化收到信息之后,直接连接新的地址,免去二次烧录设备信息。

使用限制

支持在所有已开通物联网平台的地域之间分发设备。

使用场景

  • 设备提前烧录:在设备出厂时,无需对设备的不同地域和不同实例的连接信息进行硬编码,仅需对设备统一烧录全球统一接入点信息(无地域信息)。设备出厂后,在物联网平台控制台对设备集中进行跨地域分发,实现设备全球接入。

  • 业务迁移:由于业务的迁移,需要更改设备的接入地域或接入实例,可通过设备分发,实现设备跨地域、跨实例、跨账号的变更。

针对使用场景,支持以下分发策略:

  • 指定地域:将设备分发到指定的地域、实例。如果能提前确认设备会接入到的地域、实例,推荐使用该策略,分发效率更高。

  • 就近接入:设备可能会被拿到全球不同的地域使用,配置分发时在每个地域选择一个实例,设备接入时根据设备的IP位置动态接入其中距离最近的地域。这样设备无论在哪,都能就近接入到指定地域。

使用说明

项目

说明

分发范围

  • 支持多次分发。

跨账号分发

指定地域分发

  • 若仅分发产品,分发对象仅为产品数据,且不包含该产品下的设备数据。

  • 若分发设备,分发对象为分发策略中指定设备的数据,及其所属产品数据。

分发对象说明,请参见分发对象

就近接入分发

  • 不支持仅分发产品。

  • 分发设备时,设备所属产品数据立即分发,设备数据根据设备接入的IP位置进行分发。

分发对象

设备分发实现设备跨实例、跨地域或跨账号的分发。

设备分发后,除了设备本身,部分设备数据、产品数据也被随之分发,具体分发对象请参见下表。

分发对象

限制与说明

设备

单次分发最大设备数:10,000。

设备数据

随设备分发设备证书(ProductKey、DeviceName和DeviceSecret),用于设备连接新实例时的认证。

以下设备数据不会分发:

  • 运行时数据:即设备状态、物模型数据、设备影子、文件、日志等设备运行时产生的数据。

    分发后,设备状态将变为未激活,设备成功重新连接物联网平台后,即被激活,可正常上下线。其他已产生的运行时数据将保留在源地域、实例、账号,如设备再次分发回原位置,可以继续使用。

  • 拓扑关系、标签数据、设备分组数据会清空。

产品数据

分发产品信息、Topic类、物模型、数据解析脚本。但接收者在被分发产品下只允许查看,不允许编辑、删除产品数据,即不可在控制台产品详情页面的产品信息Topic类列表功能定义数据解析页签,进行任何编辑或删除操作,也不可在被分发产品下创建新设备。

重要

设备分发成功后:

  • 在源实例的源产品下再创建设备时,DeviceName的值不可与已分发设备相同。

  • 若需删除已分发的设备,不可在目标实例中执行删除操作,请先将设备分发回源实例,然后在源实例的源产品中进行删除。

注意事项

设备分发影响的功能

说明

实例迁移

对于使用分发功能全球统一接入的设备,若设备所属产品创建了实例迁移任务,设备的全球统一接入域名说明如下:

  • 当执行设备灰度或者全量迁移任务时,设备会从公共实例迁移到目标企业版实例。设备接入请求全球统一接入域名时,会返回企业版实例接入域名。

  • 当执行迁移任务回滚时,设备会从企业版实例迁移回公共实例。设备接入请求全球统一接入域名时,会返回公共实例的接入域名。

实例详细说明,请参见实例概述。实例迁移的详细说明,请参见实例迁移

计费影响

  • 设备所属源实例和要分发的目标实例是否欠费,均不会影响设备分发。

  • 设备分发成功后,在目标实例下按照物联网平台计费方式正常计费。

设备授权与转移

同一产品和设备下,授权与转移功能,都不能和分发功能同时使用。

设备分发任务执行

  • 设备分发执行后,不能取消。

  • 设备分发时,若设备在线,该设备会被迫下线。

消息通信

设备分发成功后,若需使用AMQP服务端订阅和云产品流转功能,需在设备分发到的目标实例中重新进行AMQP服务端订阅和云产品流转配置。

OTA升级

设备分发成功后,若配置OTA升级,需注意:

  • 设备跨地域、跨实例分发成功:必须将物联网平台控制台切换到目标地域、目标实例后,再配置OTA升级。

  • 设备跨账号分发成功:由接收者配置OTA升级,升级包请从分发者获取。

OTA升级的更多信息,请参见OTA升级概述

产品数据更新

产品分发成功后,在源实例源产品详情页面的任何操作(自定义Topic、定义物模型和编辑数据解析脚本等),均不会同步到目标实例的产品中。

分发流程

  1. 对于新设备,需先在物联网平台控制台创建产品与设备,获取物联网平台颁发的设备证书(ProductKey、DeviceName和DeviceSecret)。具体操作,请参见创建产品单个创建设备批量创建设备

  2. 选择阿里云提供的4.x版本C Link SDK完成物理设备开发,或根据交互协议自行完成设备开发,使其实现如下功能。

    说明

    推荐使用阿里云的C Link SDK完成设备开发,请参见设备分发概述

    控制台对设备进行分发后,设备应按如下流程与物联网平台建立连接:

    1. 根据设备开发场景,选择以下方式,发起接口Bootstrap请求。

      • 阿里云C Link SDK接入方式

        设备调用SDK封装的Bootstrap接口,携带ProductKey和DeviceName,向设备分发中心的全球统一域名https://iot-auth-global.aliyuncs.com发送请求。

        其中,Bootstrap功能开发的具体操作,请参见概述

      • 非SDK的自行接入方式

        按照如下协议内容,向https://iot-auth-global.aliyuncs.com/auth/bootstrap发送请求。

        表 1. 请求参数

        参数

        是否必选

        说明

        productKey

        必选

        设备所属产品的ProductKey,从物联网平台控制台获取。

        具体操作,请参见单个创建设备

        deviceName

        必选

        设备名称DeviceName,从物联网平台控制台获取。

        clientId

        可选

        客户端ID,长度不大于64个字符。

        version

        可选

        认证服务的版本号。

        timestamp

        可选

        时间戳。时间戳不做时间窗口校验。

        resources

        可选

        希望获取的资源描述,如MQTT。 多个资源名称用逗号隔开。

        表 2. 返回参数

        参数

        类型

        说明

        resources

        Struct

        资源信息,如MQTT服务器地址等。

        请求示例

        POST /auth/bootstrap HTTP/1.1
        Host: iot-auth-global.aliyuncs.com
        Content-Type: application/x-www-form-urlencoded
        Content-Length: 123
        productKey=123&timestamp=123&version=default&clientId=123&resources=mqtt&deviceName=test

        返回示例

        HTTP/1.1 200 OK
        Server: Tengine
        Date: Wed, 29 Mar 2017 13:08:36 GMT
        Content-Type: application/json;charset=utf-8
        Connection: close
        {
          "code" : 200,
          "data" : {
            "resources" : {
              "mqtt" : {
                "host" : "xxx.iot-as-mqtt.cn-shanghai.aliyuncs.com",
                "port" : 1883
              }
            }
          },
          "message" : "success"
        }
    2. 设备分发中心根据分发的目标地域和实例(就近接入时,将根据设备IP位置动态判断目标地域和实例),返回设备目标实例接入点。

    3. 设备可以通过设备证书(ProductKey、DeviceName、DeviceSecret)和分发服务返回给设备的实例接入点信息,使用MQTT协议与物联网平台建立连接。

      • 阿里云C Link SDK接入方式

        建议使用SDK 4.x版本进行设备接入。具体操作,请参见概述

      • 非SDK的自行接入方式

        使用Paho提供的嵌入式C语言MQTT开源工程进行设备接入。具体操作,请参见Paho-MQTT C接入示例

    4. (可选)控制台分发设备后,设备会收到如下MQTT消息,提示设备发生了分发,设备将被迫下线。

      MQTT消息,数据下行。

      请求Topic:/sys/${productKey}/${deviceName}/thing/bootstrap/notify

      Alink请求数据格式:

      {
          "id": "****",
          "version": "1.0", 
          "method": "thing.bootstrap.notify", 
          "params": {
            "cmd": 0
          }
      }

      响应Topic:/sys/${productKey}/${deviceName}/thing/bootstrap/notify_reply

      Alink响应数据格式:

      {
          "id": "****",
          "code":200,
          "data" : {}
      }
    重要

    每次连接设备时,建议先完成上述的前3个流程,以免设备存储的接入点与物联网平台不一致,而导致设备连接失败。

    设备也支持本地存储接入点信息,当本地连接信息丢失或连接失败时,可发起Bootstrap请求,重新获取接入点信息。

  3. 完成设备开发后,针对不同情况进行以下操作:

    • 对于不具有设备分发能力的存量设备,通过OTA升级,升级到上一步中开发完成的版本,使设备获得分发能力。具体操作,请参见OTA升级概述

      重要

      不具有设备分发能力的存量设备,在进行设备分发前,必须通过OTA升级获得分发能力,否则在控制台操作分发后,设备将无法正常连接到物联网平台。

    • 对于新设备,要向设备烧录设备证书。具体操作,请参见烧录设备证书

  4. 根据业务需求在控制台操作设备分发,将设备分发到指定的地域、实例、账号。

    1. 登录物联网平台控制台

    2. 从顶部导航栏的地域下拉菜单选择华东2(上海),切换到华东2(上海)地域。

      重要

      设备分发功能仅在物联网平台控制台的华东2(上海)地域的标准型、尊享型企业版实例和公共实例下显示。设备分发功能的源地域和目标地域没有限制。

    3. 实例概览页签的全部环境下,找到对应的实例,单击实例卡片。

    4. 在左侧导航栏,选择设备划归 > 设备分发

    5. 设备分发页面,单击设备分发

    6. 按照页面提示填写信息。

      页面参数设置如下:

      参数

      描述

      分发方式

      设备分发方式:

      • 本账号:分发到本账号的其他地域、实例。

      • 跨账号:分发到其他账号。

        说明

        跨账号分发时,分发策略不支持就近接入。

      目标账号

      分发方式选择为跨账号时,需设置跨账号设备分发的接收者。

      选择目标账号的填写形式:

      • 目标账号名称:填写阿里云账号名称。

      • 目标账号ID:填写阿里云账号ID。

      说明

      阿里云账号ID,可登录物联网平台控制台,单击账号头像,跳转至安全设置页面查看。

      授权码

      填写目标账号后,单击获取授权码,系统会向目标账号绑定的手机发送一条授权码。授权码5分钟内有效,请联系设备接收者获取授权码。

      源地域

      要分发的设备所在的地域。

      源实例

      要分发的设备所在的实例。

      分发策略

      设备分发策略:

      • 指定地域:将设备分发到指定地域。

      • 就近接入:选择多个地域,设备将根据设备的IP位置动态接入其中距离最近的地域。

      目标地域

      分发策略选择为指定地域时的参数。

      选择设备要分发到的地域。

      目标实例

      分发策略选择为指定地域时的参数。

      设置设备要分发到的实例。

      • 分发方式选择为本账号时,选择目标实例。

      • 分发方式选择为跨账号时,填写目标实例ID,不填写默认为旧版公共实例。

        重要

        如果目标实例为新版公共实例或企业版实例,必须填写实例ID。

        实例的详细说明,请参见查看和配置实例终端节点信息(Endpoint)

      地域范围

      分发策略选择为就近接入时的参数。

      选择设备可能分发到的多个目标地域。当可能分发到源地域时,源地域也需要选择。

      若地域下有多个实例,可从下拉框选择要分发到的实例。

      设备选择方式

      可通过两种方式选择要分发的设备:

      • 手动勾选:从产品列表选择设备所在的产品,再从设备列表选择设备。设备列表翻页时会保持设备选中状态。

        分发策略选择为指定地域时,如果不选择设备,则仅分发产品。

      • 文件上传:上传设备分发列表文件。一个文件最多包含1,000条记录,格式为CSV,可单击下载模板获取文件模板。

    7. 单击确认

    物联网平台立即执行分发任务:

    • 分发策略为指定地域:将产品数据和设备数据分发到指定地域。

    • 分发策略为就近接入:将产品数据分发到所有地域。而设备数据会在设备连接时,根据设备的IP位置动态分发到就近地域。

    请关注批次列表中显示的任务状态,可能出现以下几种状态:

    状态

    说明

    任务初始化中

    正在初始化任务信息。

    分发任务进行中

    正在执行分发任务。

    如果长时间处于该状态,请您重试。

    分发任务完成

    已完成分发任务。

    分发任务完成不代表所有设备都分发成功。各设备是否分发成功,可以单击任务对应的下载分发结果,下载文件进行查看。部分设备分发失败可能是由于设备不存在等原因。

    分发任务异常

    可能由于网络抖动导致分发任务异常,请您重试。如果重试后仍有问题,请联系客服或提交工单处理。

    分发任务完成后,设备连接物联网平台时,将按步骤2中介绍的流程与目标地域和实例建立连接。

相关API

API

描述

CreateDeviceDistributeJob

创建设备分发任务,默认同时分发设备所属产品。

CreateProductDistributeJob

创建产品分发任务,分发指定产品到指定的目标实例。

QueryDeviceDistributeDetail

获取设备分发任务执行完成后的结果信息。

QueryDeviceDistributeJob

获取设备分发任务的详细信息。

ListDeviceDistributeJob

获取设备分发任务列表。

DeleteDeviceDistributeJob

删除设备分发任务。

ListDistributedDevice

查询已分发的设备列表。

ListDistributedProduct

查询已分发的产品列表。

QueryDeviceProvisioning

查询指定设备的分发结果。

常见问题