Files
python----/智慧校园/同文/班牌机mqtt_client.py
admin aac9f5934d feat: 添加多个功能模块和工具脚本
- 新增websocket客户端和服务端实现
- 添加图片压缩工具和快速压缩脚本
- 实现学生信息处理相关API
- 添加MQTT客户端和消息处理功能
- 更新.gitignore忽略更多文件类型
- 添加数据库操作工具和示例
- 实现多个测试脚本和工具类
2026-04-13 14:47:50 +08:00

59 lines
1.7 KiB
Python

import paho.mqtt.client as mqtt
import json
import time
import datetime
# MQTT 配置
# BROKER = "100.68.18.111" # 与发送端相同
BROKER = "band.hxzhxy.cn" # 与发
PORT = 1883
TOPICs = ["cmd/publicizeBanpai/#","upload/publicizeBanpai/#","common/publicizeBanpai/#"] # 与发送端相同
CLIENT_ID = "python-mqtt-receiver"
# 收到消息时的回调
def on_message(client, userdata, msg):
try:
payload = msg.payload.decode()
mac = msg.topic.split("/")[2]
print("\n" + "=" * 50)
print(f"收到新消息 [QoS: {msg.qos}]")
print(f"客户端 ID: {mac}")
print(f"主题: {msg.topic}")
if "message" in msg.topic:
data = json.loads(json.loads(payload)["data"])
ip = data["ip"]
mac = data["mac"]
print(ip,mac)
print(f"时间: {time.strftime('%Y-%m-%d %H:%M:%S')}")
print("内容:")
print(payload)
if "systeminfo" in msg.topic:
with open("mqtt_systeminfo.txt", "a+") as f:
f.write(f"{time.strftime('%Y-%m-%d %H:%M:%S')}\n")
f.write(f"客户端 ID: {mac}\n")
f.write(f"\n")
except Exception as e:
print(f"消息解析错误: {e}")
# 创建客户端
client = mqtt.Client(CLIENT_ID)
client.on_message = on_message
# 连接并订阅
print(f"连接到 MQTT 代理: {BROKER}:{PORT}")
client.connect(BROKER, PORT)
for topic in TOPICs:
client.subscribe(topic)
print(f"已订阅主题: {TOPICs}")
print("等待消息... (按 Ctrl+C 退出)")
# 保持连接
try:
client.loop_forever()
except KeyboardInterrupt:
print("\n断开连接...")
client.disconnect()