2026/10/28 9:36:58

Windows系统下 MQTT 代理服务器 Mosquitto 安装配置及简单使用

Windows系统下 MQTT 代理服务器 Mosquitto 安装配置及简单使用 Mosquitto 安装包下载链接下载 |日蚀莫斯基托https://mosquitto.org/download/1.创建账户和密码以管理员身份运行命令提示符点击「开始」菜单搜索 cmd。右键点击「命令提示符」选择 “以管理员身份运行”。再次执行你的命令cd C:\Program Files\mosquitto mosquitto_passwd.exe -c pwfile.example admin注意-c选项会覆盖已有密码文件。如果是首次创建可以使用-c后续添加用户请去掉-c提示连续两次输入密码、创建成功。命令解释 -c 创建一个用户、pwfile.example 是将用户创建到 pwfile.example 文件中、admin 是用户名2. 修改mosquitto.conf配置文件我这里在windows 终端里采用类似 nano 的命令行编辑器,在 CMD 窗口运行edit微软新版最推荐无模式类似 nanoedit mosquitto.confWin11 25H2 自带Win10 / 老 Win11 需要先装winget install Microsoft.Edit快捷键CtrlS 保存CtrlQ 退出⚠️ 注意64 位 Windows 原生不带老 DOS 的 16 位 edit老版本 Windows 直接敲 edit 大概率报错。listener 1883 0.0.0.0 allow_anonymous true # 如果你允许匿名连接测试时用生产环境建议用用户名/密码listener 1883 0.0.0.0让代理监听所有IP包括192.168.1.2端口默认1883。如果你想指定只监听无线IP可以改成你自己代理服务器的 ip 例如listener 1883 192.168.1.2但推荐用0.0.0.0更灵活为了通讯安全可在配置文件中指定密码文件所在路径#listener 1883 0.0.0.0 #allow_anonymous true # 如果你允许匿名连接测试时用生产环境建议用用户名/密码 listener 1883 0.0.0.0 password_file C:\Program Files\mosquitto\pwfile.example # 注释掉或删除 allow_anonymous true # allow_anonymous false # 明确禁止匿名可选但推荐3.启动 Mosquitto Broker在任务管理器下面的服务栏中找到 Mosquitto的服务右击启动这项服务下面分别提供一下发布者和订阅者的python 程序发布者import json import time from paho.mqtt import client def connect(client, userdata, flags, rc): if rc 0: print(successful) else: print(fail) device_id k003 will_topic ftopic/test will_message json.dumps({MessageName:DeviceLossMsg}) connect_message json.dumps({MessageName:DeviceConnectMsg}) disconnet_message json.dumps({MessageName: DeviceDisConnectMsg}) c1 client.Client(device_id,True) c1.on_connect connect c1.will_set(topicwill_topic,payloadwill_message,retainTrue) c1.connect(192.168.1.2,1883) c1.username_pw_set(usernameadmin,password123456) i 1 c1.loop_start() while 1: c1.publish(topicwill_topic,payloadconnect_message,retainTrue) print(success) time.sleep(2) c1.publish(topicwill_topic,payloaddisconnet_message,retainTrue) time.sleep(2)订阅者import json from paho.mqtt import client as mqtt_client # 配置 broker 192.168.1.2 port 1883 topic topic/test client_id subscriber_client username admin password 123456 def on_connect(client, userdata, flags, rc): if rc 0: print(✅ 成功连接到 MQTT Broker!) client.subscribe(topic) print(f 正在订阅主题: {topic}) else: print(f❌ 连接失败返回码: {rc}) def on_message(client, userdata, msg): try: payload msg.payload.decode(utf-8) data json.loads(payload) message_name data.get(MessageName, Unknown) print(f 收到消息 - 主题: {msg.topic} | 内容: {message_name} | 原始载荷: {payload}) except Exception as e: print(f⚠️ 消息解析错误: {e}) # 创建客户端 client mqtt_client.Client(client_id) client.username_pw_set(username, password) client.on_connect on_connect client.on_message on_message # 连接并开始循环 client.connect(broker, port) client.loop_forever() # 阻塞式循环持续接收消息注使用时需要将broker 的ip 设置为自己的ip另本人提供的发布者订阅者脚本示例是paho-mqtt 1.6.1版本的。可以通过下面的命令进行安装pip install paho-mqtt1.6.1 -i https://mirrors.aliyun.com/pypi/simple/如果你需要 MQTT 5.0 功能如原因码、用户属性、共享订阅等可尝试2.xpip install paho-mqtt2.1.0 -i https://mirrors.aliyun.com/pypi/simple/注安装 paho-mqtt2.x版本上面的发布者订阅者脚本示例运行会报错可以根据报错信息提示进行修改这里就不提供paho-mqtt2.x版本的示例程序了。