MQTT.fx是一款基于Eclipse Paho,使用Java语言编写的MQTT客户端工具,支持通过Topic订阅和发布消息。下面以使用第三方软件MQTT.fx为例,介绍模拟设备以MQTT协议接入物联网平台。

前提条件

已在物联网平台控制台创建产品和设备,并获取设备证书信息(ProductKey、DeviceName和DeviceSerect)。具体操作,请参见创建产品单个创建设备批量创建设备

使用MQTT.fx接入

  1. 下载并安装MQTT.fx软件。请访问MQTT.fx官网
  2. 打开MQTT.fx软件,单击菜单栏中的Extras,选择Edit Connection Profiles
    编辑mqtt的基本信息
  3. 进入Edit Connection Profiles页后,完成以下参数的设置。
    1. 设置基本信息。
      编辑mqtt.fx的基本信息
      参数 说明 示例
      Profile Name 输入您的自定义名称。 iot connection
      Profile Type 选择为MQTT Broker
      MQTT Broker Profile Settings
      Broker Address 接入域名。
      • 企业版实例的接入域名,请在物联网平台控制台,找到对应的实例,单击实例,进入实例详情页面查看。

        具体操作,请参见查看实例终端节点

      • 公共实例的接入域名格式:${YourProductKey}.iot-as-mqtt.${YourRegionId}.aliyuncs.com
        • ${YourProductKey}:请替换为设备所属产品的ProductKey。可登录物联网平台控制台,在对应实例的设备详情页面获取。
        • ${YourRegionId}:请参见地域和可用区,替换为您的Region ID。
      a1oGs******.iot-as-mqtt.cn-shanghai.aliyuncs.com
      本示例为公共实例接入。
      • a1oGs******为本示例的productKey
      • cn-shanghai为本示例所在地域。
      Broker Port 设置为1883
      Client ID

      固定格式:${ClientID}|securemode=${Mode},signmethod=${SignMethod}|

      此ID为MQTT.fx的Client ID,由以下几个参数构成:

      • ${ClientId}为设备、App或Web等场景下的Client ID信息,多数情况下为设备的ID信息。可取任意值,长度在64字符以内。建议使用设备的MAC地址或SN码。
      • securemode为安全模式。
        • TCP直连模式设置为securemode=3,无需设置SSL/TLS信息。
        • TLS直连模式设置为securemode=2,需要设置SSL/TLS信息。
      • signmethod为算法类型,支持hmacmd5hmacsha1
      说明
      • 请注意此处Client ID${ClientId}的区别,切勿混淆。
      • 请注意不要遗漏参数之间及最后的竖线(|)。
      • 设置参数时,请确保参数值中或参数值的前后均没有空格。
      • 输入Client ID信息后,请勿单击Generate
      12345|securemode=2,signmethod=hmacsha1|
      • 12345为示例设备的clientId
      • securemode=2为示例选择的模式,TLS直连模式。
      • signmethod=hmacsha1为示例选择的加密算法。

      General栏下的设置项可保持系统默认,也可以根据您的具体需求设置。

    2. 单击User Credentials,设置User NamePassword
      设置mqtt.fx的User Credentials
      参数 参数说明 示例
      User Name

      固定格式:${DeviceName}&${ProductKey}

      由设备名DeviceName、and(&)和产品ProductKey组成。

      Light&a1oGs******
      • Light为设备的DeviceName。
      • a1oGs******为设备的ProductKey。
      Password 通过选择的加密方法,以设备的DeviceSecret为密钥,将参数和参数值拼接后,加密生成Password。
      说明
      • 如果您使用的MQTT.fx版本,在粘贴Password后不显示具体的字符串,只要光标已从输入框的前部移至了后部,则表示粘贴成功,请勿重复粘贴。
      • 请注意参数和参数值中字母的大小写。

      通过以下两种方法生成Password。

      • 单击下载Password生成小工具。解压文件后,双击sign.html文件,即可使用。

      • 手动生成方法如下:
        1. 拼接参数。

          待加密字符串格式:clientId${clientId}deviceName${deviceName}productKey${productKey}timestamp${timestamp}

        2. 加密。

          加密计算格式:${signmethod}(${deviceSecret},clientId${clientId}deviceName${deviceName}productKey${productKey}timestamp${timestamp})

      其中的参数说明如下。

      • productKey:设备所属产品Key。可在控制台设备详情页查看。
      • deviceName:设备名称。可在控制台设备详情页查看。
      • deviceSecret:设备密钥。可在控制台设备详情页查看。
      • timestamp:(可选)时间戳。
      • clientId:设备的ID信息,与MQTT.fx的Client ID${clientId}一致。
      • method:选择签名算法类型,与MQTT.fx的Client IDsignmethod确定的加密方法一致。
      • 工具生成示例:工具生成密码示例
      • 手动生成

        待加密字符串的示例:clientId12345deviceNameLightproductKeya1oGs******

        加密计算格式示例:hmacsha1(8DTASg0cf8rEmSJwc6y6msF0On******,clientId12345deviceNameLightproductKeya1oGs******)

      其中的参数说明如下。

      • hmcsha1为加密算法。
      • 8DTASg0cf8rEmSJwc6y6msF0On******为设备的DeviceSecret。
      • 12345为设备的Client ID。
      • Light为设备的DeviceName。
      • a1oGs******为设备的ProductKey。
      • 本示例没有选择可选参数timestamp
    3. TLS直连模式(即securemode=2)下,需要选择SSL/TLS,选中Enable SSL/TLS,设置Protocol。建议Protocol选择为TLSv1.2
      说明 TCP直连模式(即securemode=3)下,无需设置SSL/TLS信息,直接进入下一步。
      设置mqtt.fx的SSL/TLS
  4. 设置完成后,单击右下角的OK
  5. 单击Connect进行连接。
    连接mqtt.fx到物联网

下行通信测试

从物联网平台发送消息,在MQTT.fx上接收消息,测试MQTT.fx与物联网平台连接是否成功 。
说明 MQTT.fx模拟的设备端,支持非透传的消息通信。要实现透传信息通信,您可以使用SDK或在真实设备上测试。
  1. 在MQTT.fx上,单击Subscribe
  2. Subscribe文本框中,输入一个设备具有订阅权限的自定义Topic后,再单击Subscribe,订阅这个自定义Topic。
    说明
    • 您可以在对应产品的产品详情页下的Topic 类列表页签下,单击自定义 Topic页签,查看自定义Topic的权限。
    • 输入自定义Topic时,其中的${deviceName}需更改为您的设备名称。
    • 更多信息,请参见自定义Topic

    订阅成功后,该Topic将显示在列表中。

    自定义Topic显示在mqtt.fx订阅列表中
  3. 登录物联网平台控制台,在对应实例下,找到该设备的设备详情页,在Topic列表页签下,单击已订阅的Topic对应的发布消息
    在mqtt.fx订阅的Topic下发布消息
  4. 输入消息内容,单击确认
    在mqtt.fx订阅的Topic下输入要发布的消息
  5. 回到MQTT.fx上,查看是否接收到消息。
    mqtt.fx接收到消息

上行通信测试

在MQTT.fx上发送消息,通过查看设备日志,测试MQTT.fx与物联网平台连接是否成功 。

  1. 在MQTT.fx上,单击Publish
  2. Publish文本框中,输入一个设备具有发布权限的Topic;然后在文本编辑页面,输入要发送的消息内容。单击Publish,向这个Topic推送一条消息。
    在mqtt.fx发布消息
  3. 登录物联网平台控制台,在对应实例下,选择监控运维 > 日志服务,在云端运行日志页签下查看该设备到云的消息。
    查看mqtt.fx发布到物联网平台的消息

查看日志

在MQTT.fx上,单击Log查看操作日志和错误提示日志。

查看mqtt.fx的log