52 lines
1.4 KiB
Python
52 lines
1.4 KiB
Python
import paho.mqtt.client as mqtt
|
|
import json
|
|
import time
|
|
import datetime
|
|
|
|
# MQTT 配置
|
|
# BROKER = "100.68.18.111" # 与发送端相同
|
|
BROKER = "192.168.0.244" # 与发
|
|
PORT = 1883
|
|
TOPIC = "#" # 与发送端相同
|
|
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}")
|
|
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)
|
|
client.subscribe(TOPIC)
|
|
print(f"已订阅主题: {TOPIC}")
|
|
print("等待消息... (按 Ctrl+C 退出)")
|
|
|
|
# 保持连接
|
|
try:
|
|
client.loop_forever()
|
|
except KeyboardInterrupt:
|
|
print("\n断开连接...")
|
|
client.disconnect()
|