MQTT协议云网关设备使用MQTT.fx接入

更新时间:2023-03-07 05:59:20

本文以Windows系统下MQTT.fx为例,介绍如何将MQTT协议云网关设备模拟接入物联网平台,并上报数据。

前提条件

已完成以下操作:

  • 购买企业版实例:本示例购买华东2(上海)地域的尊享型实例。

  • 下载并安装MQTT.fx软件。MQTT.fx软件安装和使用说明,请参见MQTT.fx

    本文操作以mqttfx-5.2.0-windows-x64版本为例演示具体操作。由于第三方软件不定期更新,建议您以实际页面为准。

  • 自定义证书。

    本文示例需自定义证书包含:根证书root-ca.crt、服务端证书私钥server.key和服务端证书server.crt

    您可以使用OpenSSL工具生成自定义证书,制作方法,请参见生成自定义证书

背景信息

MQTT.fx是一款基于Eclipse Paho使用Java语言编写的MQTT客户端,支持Windows、MacLinux操作系统,可用于验证设备是否可与物联网平台正常连接,并通过Topic通信。

MQTT协议云网关提供一方认证和三方认证两种认证方式,设备可选择任一认证方式,使用自定义证书、服务端认证和自定义Topic通信等能力,实现与物联网平台连接并进行通信。

MQTT协议云网关设备认证和通信说明,请参见MQTT协议云网关概述

设备使用MQTT.fx接入(一方认证)

步骤一:创建云网关产品和设备

  1. 创建云网关产品(MQTT):配置如下图所示,服务端证书私钥server.key服务端证书server.crt

    image
  2. 在云网关列表,复制网关URL保存。

    image
  3. 批量添加设备:本示例添加一个设备,MQTT Usernamedevice_01MQTT Passwordhello123

步骤二:配置MQTT.fx接入

  1. 打开MQTT.fx软件,单击菜单栏中的Extras,选择Edit Connection Profiles

  2. Edit Connection Profiles页面,完成以下参数的设置。

    1. 设置以下基本信息,其他参数使用默认值。

      参数

      说明

      参数

      说明

      Profile Name

      输入您的自定义名称。

      Profile Type

      MQTT服务器连接,选择MQTT Broker

      Broker Address

      MQTT云网关接入地域,即已创建云网关产品的网关URL中域名。

      Broker Port

      设置为自定义端口号,默认为1883

      Client ID

      (可选)客户端ID,需自定义,长度不可超过64个字符。建议使用设备的MAC地址或SN码,方便您识别区分不同的客户端。

    2. 单击User Credentials,选中Use Username/Password复选框,设置User NamePassword

      User NamePassword分别对应已添加云网关设备的MQTT UsernameMQTT Password

    3. 单击SSL/TLS,选中Enable SSL/TLS,设置ProtocolTLSv1.2

    4. 选中CA certificate file,然后选择根证书文件root-ca.crt的路径。image

  3. 设置完成后,单击右下角的OK

  4. 单击Connect

    右侧亮绿灯,表示连接成功。在物联网平台控制台实例下的设备管理 > 设备页面,设备device_01状态显示为在线image

设备使用MQTT.fx接入(三方认证)

步骤一:创建设备认证的FC函数

  1. 登录函数计算控制台,在左侧导航栏,单击服务及函数

  2. 在顶部菜单栏,选择华东2(上海)地域,然后在服务列表页面,单击创建服务

  3. 创建服务面板,填写服务名称,例如:IoT_Service,然后单击确定。

  4. 函数管理页面,单击创建函数

  5. 创建函数页面,配置以下配置项,然后单击创建

    image
  6. 函数详情页面,将示例代码替换为以下代码,单击部署代码

    认证函数将UserName作为deviceName返回。

    # -*- coding: utf-8 -*-
    import logging
    import json
    import time
    import enum
    import random
    import string
    
    class Request:
        def __init__(self, json_str):
            self.clientId = None
            self.username = None
            self.password = None
            self.certificateCommonName = None
    
            for key, value in json.loads(json_str).items():
                setattr(self, key, value)
    
    class Response:
        def __init__(self):
            self.deviceName = None
            self.result = 'true'
            self.message = 'success'
    
        def handler(self, request):
            # 按照业务需求验证UserName和Password的合法性
        
            self.deviceName = request.username
            
            
            return json.dumps(self.__dict__)
    
    def handler(event, context):
        request = Request(event)
        return Response().handler(request)

步骤二:创建云网关产品

  1. 创建云网关产品(MQTT):配置如下图所示,其中服务端证书私钥server.key服务端证书server.crt,设备认证FC服务和设备认证FC函数,选择为已添加的IoT_Servicethree_part_auth

    image
  2. 在云网关列表,复制网关URL保存。

    image

步骤三:配置MQTT.fx接入

  1. 打开MQTT.fx软件,单击菜单栏中的Extras,选择Edit Connection Profiles

  2. Edit Connection Profiles页面,完成以下参数的设置。

    1. 设置以下基本信息,其他参数使用默认值。

      参数

      说明

      参数

      说明

      Profile Name

      输入您的自定义名称。

      Profile Type

      MQTT服务器连接,选择MQTT Broker

      Broker Address

      MQTT云网关接入地域,即已创建云网关产品的网关URL中域名。

      Broker Port

      设置为自定义端口号,默认为1883

      Client ID

      (可选)客户端ID,需自定义,长度不可超过64个字符。建议使用设备的MAC地址或SN码,方便您识别区分不同的客户端。

    2. 单击User Credentials,选中Use Username/Password复选框,设置User Name(例如:threeParty_device_001Password

      说明
      • User Name支持英文字母、数字、短划线(-)、下划线(_)、at(@)、英文句号(.)和英文冒号(:),长度限制为4~32个字符。User Name在产品维度下不可重复。

      • Password支持英文字母、数字、短划线(-)、下划线(_)、at(@)、英文句号(.)和英文冒号(:),长度限制为1~32个字符。

    3. 单击SSL/TLS,选中Enable SSL/TLS,设置ProtocolTLSv1.2

    4. 选中CA certificate file,然后选择根证书文件root-ca.crt的路径。image

  3. 设置完成后,单击右下角的OK

  4. 单击Connect

    右侧亮绿灯,表示连接成功。通过FC认证函数返回的deviceNamethreeParty_device_001会作为物联平台设备的DeviceName,在物联网平台控制台实例下的设备管理 > 设备页面,自动创建设备threeParty_device_001,设备状态显示为在线image

设备使用自定义Topic上报数据

  1. MQTT.fx上,单击Publish,在Publish文本框中,输入自定义Topic:/home/garden/fountain

  2. 在文本编辑页面,输入要发送的消息内容,然后单击Publish

  3. 登录物联网平台控制台,在对应实例下的监控运维 > 日志服务页面,查看设备到云消息日志消息。具体操作,请参见查询云端运行日志image

  • 本页导读 (1)
  • 前提条件
  • 背景信息
  • 设备使用MQTT.fx接入(一方认证)
  • 步骤一:创建云网关产品和设备
  • 步骤二:配置MQTT.fx接入
  • 设备使用MQTT.fx接入(三方认证)
  • 步骤一:创建设备认证的FC函数
  • 步骤二:创建云网关产品
  • 步骤三:配置MQTT.fx接入
  • 设备使用自定义Topic上报数据
AI助理

点击开启售前

在线咨询服务

你好,我是AI助理

可以解答问题、推荐解决方案等