(一)MQTT连接阿里云物联网平台(小白向)

本文介绍了MQTT协议的基本概念,详细讲解了如何在阿里云物联网平台上创建产品和设备,以及如何使用网络调试助手和mqtt.fx工具模拟登录和进行数据交互。重点在于理解MQTT登录报文和配置连接参数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


前言

本次项目使用的是MQTT协议,首先需要了解一下使用的MQTT协议,本篇文章将简单介绍MQTT协议的原理,接着讲解阿里云物联网平台的使用方法,并讲解如何使用网络调试助手模拟连接阿里云物联网平台及mqtt.fx如何连接阿里云平台物联网设备。


一、MQTT协议基本介绍

在MQTT协议通讯中,有两个最为重要的角色。它们分别是服务端和客户端。

MQTT服务端
MQTT服务端通常是一台服务器。它是MQTT信息传输的枢纽,负责将MQTT客户端发送来的信息传递给MQTT客户端。MQTT服务端还负责管理MQTT客户端。确保客户端之间的通讯顺畅,保证MQTT消息得以正确接收和准确投递。

MQTT客户端
MQTT客户端可以向服务端发布信息,也可以从服务端收取信息。我们把客户端发送信息的行为成为“发布”信息。而客户端要想从服务端收取信息,则首先要向服务端“订阅”信息。“订阅”信息这一操作很像我们在视频网站订阅某一部电视剧。当这部电视剧上新后,视频网站会向订阅了该剧的用户发送信息,告诉他们有新剧上线了1

总之,就是客户端不会直接与另一客户端进行通信,而是通过服务器存储并转发消息。而其中说到的订阅操作是我们后面连接上服务器后之后想要收到消息时需要进行的操作。


二、初步了解阿里云物联网平台创建产品步骤

使用过阿里云生活物联网平台(飞燕平台)后将无法使用公共实例(新版),使用后会切换回公共实例(旧版)且无法再次变更。新版和旧版最大的区别就是是否收费(旧版的公共实例在实例概览处无ID和开通时间):
公共实例(新版):收发信息无需收费
公共实例(旧版):连接时长及收取费用见公共实例计费方式

接着进入正题,如何在旧版阿里云公共实例平台创建产品:

  1. 注册账号进入阿里云物联网平台
    Alt

  2. 选择创建产品
    在这里插入图片描述

  3. 创建产品如下图所示
    请添加图片描述

  4. 在刚刚的产品界面选择刚刚创建的产品旁的管理设备按钮
    在这里插入图片描述

  5. 单击添加设备
    在这里插入图片描述

  6. 对创建设备进行命名等信息创建(记住devicename最好要填写方便输入的,随机生成的老难打后面,问就是试过)
    在这里插入图片描述

  7. 创建成功,此时显示未激活
    在这里插入图片描述

  8. 点击查看进入产品页面,选择下图DeviceSecret旁的查看
    在这里插入图片描述

  9. 选择一键复制即得到当前产品实现静态连接测试所需要的信息
    在这里插入图片描述


三、求解阿里云登录所需的参数

名字形式
HOST_PORT1883
HOST_NAME*.iot-as-mqtt.&.aliyuncs.com (可在MQTT连接参数旁的查看-mqtthosturl中复制)
CLIENT_ID#|securemode=3,signmethod=hmacsha1| (前面的securemode表示加密方法,改为3表示不加密;后面的signmethod表示选取加密方法,这里测试选择简单的hmacsha1算法)
USER_NAME#&*
PASSWORDclientId#deviceName#productKey* (需进行hmacsha1加密,加密方法见下文)

*:productkey
#:devicename设备名称
&:所处地名
其中PASSWORD的hmacsha1加密可进入在线加密网站进行求解,在加密前字符串中输入加入自己三元组参数的结果,而后在密码处输入自己的密码,并选择hmacsha1加密方式,最终结果如下图所示。
在这里插入图片描述
最后得到的参数如下表所示

名字结果
HOST_PORT1883
HOST_NAMEa1yjZLBNYf0.iot-as-mqtt.cn-shanghai.aliyuncs.com
CLIENT_IDtest|securemode=3,signmethod=hmacsha1|
USER_NAMEtest&a1yjZLBNYf0
PASSWORDa1d68e2804f5b2481146be1479711fa1353fe08d

四、使用网络调试助手模拟产品登录

1.转换为MQTT登录报文过程

根据前面求出的参数,将其转换为MQTT协议所需要的形式,具体报头形式可参考mqtt报文解析中的2.5。

本例中的报头为:
10 ?? 00 04 4D 51 54 54 04 C2 00 78
其中第二个字节??表示10 ??后的报文长度的十六进制,需在计算后填入,其他可原封不动保留。

数据部分分为前面表中得到的CLIENT_ID,USER_NAME和PASSWORD,其中CLIENT_ID求解为:
?? ?? 74 65 73 74 7C 73 65 63 75 72 65 6D 6F 64 65 3D 33 2C 73 69 67 6E 6D 65 74 68 6F 64 3D 68 6D 61 63 73 68 61 31 7C
其中?? ??后面为CLIENT_ID转换为十六进制后的数据,前面的?? ??表示后面数据的长度,这里长度为38个,转换为十六进制可求出?? ??为00 26,即USER_NAME求解为:
00 26 74 65 73 74 7C 73 65 63 75 72 65 6D 6F 64 65 3D 33 2C 73 69 67 6E 6D 65 74 68 6F 64 3D 68 6D 61 63 73 68 61 31 7C
其中USER_NAME求解为:
?? ?? 74 65 73 74 26 61 31 79 6A 5A 4C 42 4E 59 66 30
其中?? ??后面为USER_NAME转换为十六进制后的数据,前面的?? ??表示后面数据的长度,这里长度为16个,转换为十六进制可求出?? ??为00 10,即USER_NAME求解为:
00 16 74 65 73 74 26 61 31 79 6A 5A 4C 42 4E 59 66 30
同理可得PASSWORD为:
00 28 61 31 64 36 38 65 32 38 30 34 66 35 62 32 34 38 31 31 34 36 62 65 31 34 37 39 37 31 31 66 61 31 33 35 33 66 65 30 38 64

最后再倒回去求解报头的10 ??中的??,??后数据长度为110,转换为十六进制求得??为6E,即本次登录报文为:
10 6E 00 04 4D 51 54 54 04 C2 00 78 00 26 74 65 73 74 7C 73 65 63 75 72 65 6D 6F 64 65 3D 33 2C 73 69 67 6E 6D 65 74 68 6F 64 3D 68 6D 61 63 73 68 61 31 7C 00 10 74 65 73 74 26 61 31 79 6A 5A 4C 42 4E 59 66 30 00 28 61 31 64 36 38 65 32 38 30 34 66 35 62 32 34 38 31 31 34 36 62 65 31 34 37 39 37 31 31 66 61 31 33 35 33 66 65 30 38 64

2. 测试

使用网络调试助手,设置协议类型为TCP Client,服务IP地址为139.196.135.135,服务器端口为1883,发送接收区均设置为HEX格式,然后将登录报文发送,可见接收区收到了20 02 00 00,表示登录成功!
在这里插入图片描述
同时在产品处也可以发现产品已连接。
在这里插入图片描述
登录后需要进行订阅和发布操作,因为我采用的JSON格式的报文,因此这里的订阅报文的具体含义及操作可以参照mqtt报文解析文章。

补充:将数据转换为十六进制方法
在这里插入图片描述

可将网络协议设置为UDP,并连接本地IP地址,而后在对话框中输入需要转换的数据,点击右下角发送区设置的按十六进制发送,即可将数据转换为十六进制数据。单击发送会在右下角有发送数据数,可快速得到相应数据。
在这里插入图片描述
在后续逐渐熟悉操作后还可以使用简单的数据库语句通过阿里云平台的数据流转实现两个产品间的数据转发,其过程可以参阅MQTT登录云服务器的讲解。


五、使用 mqttfx 登录阿里云

在这里插入图片描述
点击connect旁边的齿轮进入设置页面,并按照前面求出的表格结合下表对应填好其中所需要的参数。

名字对应前面的名字
Broker AddressHOST_NAME
Broker PortHOST_PORT
Client IDCLIENT_ID
User NameUSER_NAME
PasswordPASSWORD

将对应数据填好后如下图所示,点击OK。
在这里插入图片描述
点击connect即可连接,这时在设备中也可发现产品已经连接。
在这里插入图片描述
在之前创建的test01产品中找到topic类列表(注意不是设备),选择一个订阅权限的主题,将其复制到mqttfx的Subscribe框中,并将${deviceName}修改为你的设备名字并点击subscribe。
在这里插入图片描述
在这里插入图片描述
订阅后返回test设备页面(注意不是产品),在TOPIC列表中就可以看到已订阅的topic,点击发布消息,输入消息数据123后可在mqttfx上看到消息。
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
至此,已经完成了订阅一个主题的操作。接着讲讲发布消息的操作。
首先需要在test01产品中设置对应的功能。选择产品(注意不是设备)。
在这里插入图片描述
点击编辑草稿,添加自定义功能如下图所示:
在这里插入图片描述
同理添加湿度如下图所示:
在这里插入图片描述
记住下图中的标识符,这是在发布JSON消息时数据发布的重要依据。接着点击左下角的发布上线即可添加对应功能
在这里插入图片描述
接着在test01产品(注意不是设备)复制具有上报属性的主题/sys/a1yjZLBNYf0/\${deviceName}/thing/event/property/post,将其中的\${deviceName}换为自己的设备名字后粘贴到mqttfx中的publish框中。
在这里插入图片描述
在这里插入图片描述

接着在下列空白处输入如下JSON数据,并点击publish。

{
 "method" : "thing.event.property.post",
 "params" : {
   "temperature" : 25, 
   "Humidity":26,
    }, 
    "version" : "1.0.0"
}

在这里插入图片描述
可见test设备(注意不是产品)中的物模型数据-运行状态中的数据已经刷新。
在这里插入图片描述
至此,恭喜你已经完成了MQTT服务器的连接,主题的订阅,数据的发布过程。


总结

本文带领大家从MQTT的原理定义,到阿里云物联网平台产品及设备的创建,再到MQTT登录报文的分析,再到使用MQTTfx连接服务器、订阅主题、发布消息。其实第四点中登录报文的讲解是可有可无的,但是若是想更深入的了解数据传输,协议运作过程,接触这些报文,拾起计算机网络课程的知识是必不可少的。
最后也希望本文能够帮助到你!如果有什么问题,欢迎在评论区里一起沟通!


  1. MQTT是什么 ↩︎

03-11
<think>嗯,用户想了解如何配置和使用yum源。首先,我需要回忆下关于yum源的基本知识。记得yum源是软件仓库,用来管理RPM包的安装和依赖关系。配置yum源通常涉及编辑.repo文件,这些文件位于/etc/yum.repos.d/目录下。还有可能涉及到本地源和网络源的配置。 根据用户提供的引用内容,引用[2]提到yum的配置文件分为main和repository部分,main在/etc/yum.conf,而repository在/etc/yum.repos.d/里的各个文件。所以配置的时候需要关注这两个部分。用户可能遇到的问题包括如何创建新的源文件,如何指向本地或网络路径,以及如何处理GPG检查。 用户的问题可能包括步骤不清晰,比如如何挂载ISO镜像来配置本地源。引用[3]中提到了创建local.repo文件,并指定baseurl为file:///路径。这时候需要确保挂载点正确,并且权限设置没问题。另外,可能需要禁用默认的网络源,避免冲突。 用户还可能关心如何测试配置后的yum源是否生效,比如运行yum clean all和yum makecache。此外,常见问题如无法找到包,可能和baseurl的配置错误有关,或者网络源不可达。需要检查URL是否正确,网络连接是否正常。 可能还需要解释不同的源类型,比如本地、网络(如阿里云、清华源),以及如何备份原有的配置文件,避免出错后恢复。引用[1]提到可以将默认文件移到/opt下或重命名,这样可以禁用默认源,避免干扰。 总结下来,回答的结构应该分步骤,包括备份、创建repo文件、配置内容、清理缓存,然后验证。同时,常见问题部分需要列出可能的问题和解决方法,如GPG检查、路径错误等。还要注意使用正确的格式,行内变量用$符号,独立公式用$$,不过这里可能数学公式不多,但需要确保LaTeX正确。</think>### 如何配置和使用yum源? #### 、yum源的核心配置方法 1. **备份默认源** 操作前建议备份系统原有源配置: ```bash mv /etc/yum.repos.d/*.repo /opt/backup/ # 将默认源文件移动到备份目录 ``` 这是为了防止原有配置与新配置产生冲突[^1]。 2. **本地yum源配置** - **挂载镜像文件** 将CentOS镜像文件挂载到指定目录: ```bash mount -o loop /path/to/CentOS-ISO /mnt/cdrom ``` - **创建配置文件** 新建`/etc/yum.repos.d/local.repo`并写入: ```ini [local-base] name=Local-CentOS-Base baseurl=file:///mnt/cdrom gpgcheck=0 enabled=1 ``` 关键参数说明: - `baseurl`:本地路径使用`file://`协议头[^3] - `gpgcheck=0`表示跳过数字签名验证 3. **网络yum源配置** 以阿里云源为例,创建`/etc/yum.repos.d/aliyun.repo`: ```ini [aliyun-base] name=Aliyun-CentOS-Base baseurl=https://mirrors.aliyun.com/centos/$releasever/os/$basearch/ gpgcheck=1 gpgkey=https://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7 enabled=1 ``` 注意:`$releasever`和`$basearch`会自动解析为系统版本和架构[^2] #### 二、关键操作命令 1. **清理缓存并更新** ```bash yum clean all # 清除旧缓存 yum makecache # 生成新缓存 yum repolist all # 验证源状态 ``` 2. **典型使用场景** ```bash yum install httpd -y # 安装软件包 yum update # 更新所有软件 yum search python3 # 搜索软件包 ``` #### 三、常见问题排查 | 问题现象 | 解决方案 | |---------|----------| | `Could not resolve host` | 检查网络连接和`baseurl`地址 | | `Package not found` | 确认仓库是否包含该软件包版本 | | GPG签名校验失败 | 设置`gpgcheck=0`或导入正确密钥 | #### 四、进阶配置技巧 1. **多源优先级控制** 安装`yum-plugin-priorities`插件,在`.repo`文件中添加: ```ini priority=1 # 数字越小优先级越高 ``` 2. **仓库分组管理** 通过`[epel]`、`[docker]`等独立仓库配置实现分类管理
评论 22
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值