找回密码
 立即注册
查看: 544|回复: 0

[linux] 搭建自己的MQTT服务器,实现设备上云(Ubuntu+EMQX)

[复制链接]

279

主题

0

回帖

964

积分

超级版主

积分
964
发表于 2024-5-24 12:29:42 | 显示全部楼层 |阅读模式
本帖最后由 Shaw0xyz 于 2024-5-24 12:31 编辑

1. 引言

物联网(IoT)技术的快速发展使得设备互联和数据传输变得愈加重要。MQTT(Message Queuing Telemetry Transport)是一种轻量级的消息传输协议,适用于设备间的通信。通过搭建自己的MQTT服务器,可以实现设备数据的上云。本文将介绍如何在Ubuntu系统上安装和配置EMQX,以搭建自己的MQTT服务器。

1.1. 准备工作
在开始搭建MQTT服务器之前,需要准备以下工具和环境:
(1) 一台安装了Ubuntu系统的服务器或虚拟机;
(2) 具备管理员权限的Ubuntu账户;
(3) 互联网连接,以下载必要的软件包和工具。

1.2. 安装基础软件
在安装EMQX之前,需要确保系统已经安装了一些基础软件,如curl和wget。

1.2.1. 更新系统软件包
首先,更新系统软件包列表和已安装的软件包:

  1. sudo apt update
  2. sudo apt upgrade -y
复制代码



1.2.2. 安装curl和wget
安装必要的工具:

  1. sudo apt install curl wget -y
复制代码



2. 安装EMQX
EMQX是一款高性能、可扩展的开源MQTT消息服务器。下面将详细介绍如何在Ubuntu上安装EMQX。

2.1. 下载EMQX安装包
从EMQX的官方网站下载最新版本的安装包。

1. 访问EMQX下载页面,复制最新版本的下载链接;
2. 使用wget命令下载安装包:

  1.    wget <下载链接>
复制代码



2.2. 安装EMQX
下载完成后,使用dpkg命令安装EMQX:

  1. sudo dpkg -i emqx-<版本号>-ubuntu20.04-amd64.deb
复制代码


安装完成后,可以使用以下命令启动EMQX服务:

  1. sudo systemctl start emqx
复制代码


并设置开机自启动:

  1. sudo systemctl enable emqx
复制代码


3. 配置EMQX
安装完成后,需要进行基本配置,以确保服务器正常运行。

3.1. 检查服务状态
确认EMQX服务已启动并正在运行:

  1. sudo systemctl status emqx
复制代码


若服务未启动,可使用以下命令重新启动:

  1. sudo systemctl restart emqx
复制代码



3.2. 访问管理控制台
EMQX提供了一个Web管理控制台,便于管理和监控MQTT服务器。默认情况下,控制台地址为:http://localhost:18083

1. 打开浏览器,输入上述地址;
2. 使用默认账号(用户名:admin,密码:public)登录。

3.3. 修改默认账号密码
为了安全起见,首次登录后应立即修改默认密码。

1. 登录管理控制台后,进入“用户管理”页面;
2. 找到默认管理员账号,点击“编辑”;
3. 输入新密码并保存。

4. 实现设备上云

4.1. 配置设备连接
在设备端,需要配置MQTT客户端以连接到EMQX服务器。常见的MQTT客户端库有Paho、MQTT.js等。以下以Python的Paho MQTT为例:

4.1.1. 安装Paho MQTT
在设备上安装Paho MQTT库:

  1. pip install paho-mqtt
复制代码



4.1.2. 编写连接代码
编写Python脚本以连接MQTT服务器并发布消息:

  1. import paho.mqtt.client as mqtt

  2. # 定义事件回调函数
  3. def on_connect(client, userdata, flags, rc):
  4.     print("Connected with result code " + str(rc))
  5.     client.subscribe("test/topic")

  6. def on_message(client, userdata, msg):
  7.     print(msg.topic + " " + str(msg.payload))

  8. # 创建MQTT客户端对象
  9. client = mqtt.Client()
  10. client.on_connect = on_connect
  11. client.on_message = on_message

  12. # 设置MQTT服务器地址和端口
  13. client.connect("服务器IP地址", 1883, 60)

  14. # 发布消息
  15. client.publish("test/topic", "Hello MQTT")

  16. # 进入循环等待接收消息
  17. client.loop_forever()
复制代码


通过以上代码,设备可以连接到EMQX服务器,并通过“test/topic”主题发布和接收消息。

4.2. 测试连接
运行设备端的脚本,确保设备能够成功连接到EMQX服务器,并能发布和接收消息。

5. 结论
通过以上步骤,我们成功在Ubuntu系统上安装和配置了EMQX服务器,并实现了设备数据的上云。这种架构不仅为设备间的通信提供了高效、可靠的解决方案,还能通过EMQX的扩展功能,进一步提升系统的性能和安全性。无论是个人项目还是企业应用,搭建自己的MQTT服务器都能为物联网开发提供坚实的基础。

荔枝学姐爱吃荔枝!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

联系站长|Archiver|手机版|小黑屋|主机论坛

GMT+8, 2025-4-5 02:26 , Processed in 0.065234 second(s), 24 queries .

Powered by 主机论坛 HostSsss.Com

HostSsss.Com

快速回复 返回顶部 返回列表