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配置文件:
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 = f'topic/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(topic=will_topic,payload=will_message,retain=True)
c1.connect('192.168.1.2',1883)
c1.username_pw_set(username='admin',password='123456')
i = 1
c1.loop_start()
while 1:
c1.publish(topic=will_topic,payload=connect_message,retain=True)
print('success')
time.sleep(2)
c1.publish(topic=will_topic,payload=disconnet_message,retain=True)
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-mqtt==1.6.1 -i https://mirrors.aliyun.com/pypi/simple/
如果你需要 MQTT 5.0 功能(如原因码、用户属性、共享订阅等),可尝试 2.x
pip install paho-mqtt==2.1.0 -i https://mirrors.aliyun.com/pypi/simple/
注:安装 paho-mqtt 2.x版本上面的发布者&订阅者脚本示例运行会报错,可以根据报错信息提示进行修改,这里就不提供 paho-mqtt 2.x版本的示例程序了。

2379

被折叠的 条评论
为什么被折叠?



