本文以Windows系统下MQTT.fx为例,介绍如何将MQTT协议云网关设备模拟接入物联网平台,并上报数据。
前提条件
已完成以下操作:
背景信息
MQTT.fx是一款基于Eclipse Paho使用Java语言编写的MQTT客户端,支持Windows、Mac和Linux操作系统,可用于验证设备是否可与物联网平台正常连接,并通过Topic通信。
MQTT协议云网关提供一方认证和三方认证两种认证方式,设备可选择任一认证方式,使用自定义证书、服务端认证和自定义Topic通信等能力,实现与物联网平台连接并进行通信。
MQTT协议云网关设备认证和通信说明,请参见MQTT协议云网关概述。
设备使用MQTT.fx接入(一方认证)
步骤一:创建云网关产品和设备
创建云网关产品(MQTT):配置如下图所示,服务端证书私钥为
server.key
和服务端证书为server.crt
。在云网关列表,复制网关URL保存。
批量添加设备:本示例添加一个设备,MQTT Username为
device_01
,MQTT Password为hello123
。
步骤二:配置MQTT.fx接入
打开MQTT.fx软件,单击菜单栏中的Extras,选择Edit Connection Profiles。
在Edit Connection Profiles页面,完成以下参数的设置。
设置以下基本信息,其他参数使用默认值。
参数
说明
Profile Name
输入您的自定义名称。
Profile Type
MQTT服务器连接,选择MQTT Broker。
Broker Address
MQTT云网关接入地域,即已创建云网关产品的网关URL中域名。
Broker Port
设置为自定义端口号,默认为
1883
。Client ID
(可选)客户端ID,需自定义,长度不可超过64个字符。建议使用设备的MAC地址或SN码,方便您识别区分不同的客户端。
单击User Credentials,选中Use Username/Password复选框,设置User Name和Password。
User Name和Password分别对应已添加云网关设备的MQTT Username和MQTT Password。
单击SSL/TLS,选中Enable SSL/TLS,设置Protocol为TLSv1.2。
选中CA certificate file,然后选择根证书文件
root-ca.crt
的路径。
设置完成后,单击右下角的OK。
单击Connect。
右侧亮绿灯,表示连接成功。在物联网平台控制台实例下的设备管理 > 设备页面,设备
device_01
状态显示为在线。
设备使用MQTT.fx接入(三方认证)
步骤一:创建设备认证的FC函数
在顶部菜单栏,选择华东2(上海)地域,然后在服务列表页面,单击创建服务。
在创建服务面板,填写服务名称,例如:IoT_Service,然后单击确定。
在函数管理页面,单击创建函数。
在创建函数页面,配置以下配置项,然后单击创建。
在函数详情页面,将示例代码替换为以下代码,单击部署代码。
认证函数将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)
步骤二:创建云网关产品
创建云网关产品(MQTT):配置如下图所示,其中服务端证书私钥为
server.key
和服务端证书为server.crt
,设备认证FC服务和设备认证FC函数,选择为已添加的IoT_Service和three_part_auth。在云网关列表,复制网关URL保存。
步骤三:配置MQTT.fx接入
打开MQTT.fx软件,单击菜单栏中的Extras,选择Edit Connection Profiles。
在Edit Connection Profiles页面,完成以下参数的设置。
设置以下基本信息,其他参数使用默认值。
参数
说明
Profile Name
输入您的自定义名称。
Profile Type
MQTT服务器连接,选择MQTT Broker。
Broker Address
MQTT云网关接入地域,即已创建云网关产品的网关URL中域名。
Broker Port
设置为自定义端口号,默认为
1883
。Client ID
(可选)客户端ID,需自定义,长度不可超过64个字符。建议使用设备的MAC地址或SN码,方便您识别区分不同的客户端。
单击User Credentials,选中Use Username/Password复选框,设置User Name(例如:
threeParty_device_001
)和Password。说明User Name支持英文字母、数字、短划线(-)、下划线(_)、at(@)、英文句号(.)和英文冒号(:),长度限制为4~32个字符。User Name在产品维度下不可重复。
Password支持英文字母、数字、短划线(-)、下划线(_)、at(@)、英文句号(.)和英文冒号(:),长度限制为1~32个字符。
单击SSL/TLS,选中Enable SSL/TLS,设置Protocol为TLSv1.2。
选中CA certificate file,然后选择根证书文件
root-ca.crt
的路径。
设置完成后,单击右下角的OK。
单击Connect。
右侧亮绿灯,表示连接成功。通过FC认证函数返回的deviceName:
threeParty_device_001
会作为物联平台设备的DeviceName,在物联网平台控制台实例下的设备管理 > 设备页面,自动创建设备threeParty_device_001
,设备状态显示为在线。