全部产品
Search
文档中心

阿里云物联网平台:基于消息转发的M2M设备间通信

更新时间:Jun 02, 2026

本文以使用手机App控制智能灯为例,介绍基于物联网平台的消息转发中数据流转功能,构建一个M2M设备间通信架构的完整流程。

背景信息

使用手机App控制智能灯的流程:

M2M设备间通信

创建产品和设备

  1. 在物联网平台控制台的对应实例下,为手机App注册产品和设备。具体操作,请参见创建产品、单个创建设备。

    本示例中,创建产品的产品名称为手机App,节点类型为直连设备,其他参数使用默认值。

    创建设备的DeviceName为ControlApp。

    本示例中,假设手机App的ProductKey为al987654321。

    为手机App创建产品和设备后,手机App可以作为一个设备连接到物联网平台。

    当手机App用户注册登录时,您的服务器将App的设备信息发送给手机App,手机App即可作为一个设备连接到物联网平台。

  2. 添加具有发布权限的自定义Topic,用于发布控制指令。

    本示例添加Topic:/al987654321/ControlApp/user/command。具体操作,请参见使用自定义Topic通信。

  3. 开发手机App设备。

    本示例中,手机App与物联网平台间的通信协议使用HTTPS。

    手机App通过自定义Topic发送给智能灯的控制指令payload数据格式如下:

    {
        "TargetDevice": "light", 
        "Switch": 0, 
        "Timestamp": 1557750407000
    }

    设备端SDK开发详情,请参见设备接入Link SDK。

  4. 在物联网平台控制台的对应实例下,为智能灯设备创建产品和设备,定义功能等。具体操作,请参见创建产品、批量创建设备、单个添加物模型。

    本示例中,创建产品的产品名称为智能灯,节点类型为直连设备,其他参数使用默认值。

    创建设备的DeviceName为light。

    本示例中,假设智能灯的ProductKey为al123456789。

    您自行添加物模型功能,例如添加物模型属性开关(Switch),数据类型为布尔型(0是关,1是开),来控制智能灯开关。

  5. 添加具有订阅权限的自定义Topic,用于接收手机App下发的控制指令。

    本示例添加Topic:/al123456789/light/user/set。具体操作,请参见使用自定义Topic通信。

  6. 开发智能灯设备端,实现智能灯设备连接物联网平台,接收并执行指令等功能。

    本示例中,设备与物联网平台间的通信协议使用MQTT。智能灯设备需要订阅Topic:/al123456789/light/user/set,才能接收指令。接收指令后,需要开发执行指令的逻辑方法。

    设备端SDK开发详情,请参见设备接入Link SDK。

配置消息转发解析器

设置消息转发解析器,将手机App发布的指令流转到智能灯的Topic中。

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

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

  3. 在左侧导航栏,选择消息转发 > 云产品流转,依次执行以下操作,完成消息转发的解析器配置

添加数据源

以下操作中参数配置说明,请参见添加待流转的数据源。

  1. 单击数据源页签,执行以下步骤,添加数据源。

    重要

    若当前页面显示旧版功能,先单击右上角体验新版,进入新版功能页面,再单击数据源页签。

    1. 单击创建数据源。

    2. 在弹出的创建数据源对话框,输入数据源名称,例如:AppData。

    3. 单击确定。

  2. 在AppData页面,单击添加Topic。

  3. 在添加Topic对话框,选择需要处理的消息Topic,然后单击确定。

    本示例中,选择手机App设备ControlApp的Topic/al987654321/ControlApp/user/command,获取消息中的目标设备的名称TargetDevice,消息时间戳Timestamp和Switch三个字段的值。

配置数据目的

以下操作中参数配置说明,请参见添加转发到的数据目的。

  1. 返回云产品流转页面,单击数据目的页签。

  2. 单击创建数据目的。

  3. 在弹出的对话框中,输入数据目的名称,例如:OtherTopic,选择产品智能灯。

    选择操作选择发布到另一个 Topic。

  4. 单击确定。

配置并启动解析器

以下操作中参数配置说明,请参见配置解析器。

  1. 单击解析器页签,执行以下操作,添加解析器。

    1. 单击创建解析器。

    2. 在弹出的对话框中,输入解析器名称,例如:DataParser。

    3. 单击确定。

  2. 在DataParser页面,关联数据源。

    1. 在配置向导的数据源下,单击关联数据源。

    2. 在弹出的对话框中,单击数据源下拉列表,选择已创建的数据源AppData。

    3. 单击确定。

  3. 在DataParser页面,单击配置向导的数据目的,关联数据目的。

    1. 单击数据目的列表右上方的关联数据目的。

    2. 在弹出的对话框中,单击数据目的下拉列表,选择已创建的数据目的OtherTopic。

    3. 单击确定。

    4. 在数据目的列表,查看并保存数据目的ID,例如为1000。

      后续解析脚本中,需使用此处的数据目的ID。

  4. 在DataParser页面,单击配置向导的解析器脚本,完成脚本配置。

    1. 在脚本输入框,输入解析脚本,将智能灯设备具有订阅权限的Topic:/al123456789/light/user/set作为接收手机App指令的Topic。

      脚本配置说明,请参见脚本语法。流转数据的函数说明,请参见writeIotTopic()函数。

      //通过payload函数,获取设备上报的消息内容,并按照JSON格式转换。
      var data = payload("json");
      //指定设备时,需获取设备名称。本示例中TargetDevice值为智能灯设备light。
      var dn = data.TargetDevice;
      //智能灯设备接收手机App指令的Topic。
      var topic_set = "/al123456789/"+dn+"/user/set";
      //智能灯设备接收手机App设备的Topic数据。
      writeIotTopic(1000, topic_set, data)
    2. 单击脚本输入框下方保存。

    3. 单击调试,在右侧面板,选择产品和设备,输入Topic和Payload数据,验证脚本可执行。

      产品选择手机App,设备选择ControlApp,Topic输入/productKey/ControlApp/user/command,Payload 数据输入{"TargetDevice": "light", "Switch": 0, "Timestamp": 1557750407000}。

      运行结果如下,表示脚本执行成功。

      action: 
          transmit to republish[destinationId=1000], data:{"Switch":0,"Timestamp":1557750407000,"TargetDevice":"light"}
      variables: 
          data : {"Switch":0,"Timestamp":1557750407000,"TargetDevice":"light"}
          topic_set : /al123456789/light/user/set
          dn : light
    4. 在右侧面板左下方,单击关闭。

    5. 单击脚本输入框下方发布。

  5. 返回云产品流转页面的解析器页签,单击解析器DataParser对应操作列的启动。

  6. 单击确认,启动解析器。

设备间进行通信

  1. 手机App用户通过扫码将App与智能灯绑定。

    当App向您的服务器发送绑定某设备的请求后,您的服务器将返回绑定成功的智能灯设备名称(deviceName)。本示例中,智能灯设备名称为light。

  2. 手机App用户通过App发送控制指令。

    1. 手机App通过自定义Topic发送指令,如本示例中,App对应的发送指令Topic:/al987654321/ControlApp/user/command。

    2. 物联网平台再根据您定义的消息转发解析器,将指令信息发送给智能灯的Topic,如本示例中定义的Topic为:/al123456789/light/user/set。

    3. 智能灯接收到指令后,执行相关操作。

    说明

    手机App也可以向您的服务器发送解绑设备的请求。解绑后,该手机App将不再控制该智能灯。