Python Mqtt5

import paho.mqtt.client as mqtt
from datetime import datetime
import threading
import time
# MQTT Broker设置
BROKER_HOST = "emqx.x.cn"
BROKER_PORT = 1883
TOPIC_TO_SUBSCRIBE = "/9110000/#"

# MQTT 客户端ID和认证信息
CLIENT_ID = "backend-1234"
USERNAME = "hwplat"
PASSWORD = "12"

# 消息接收及存储
MESSAGE_LOG_FILE = "mqtt_messages-send.log"

def on_connect(client, userdata, flags, rc):
    if rc == 0:
        print("Connected to MQTT Broker!")
        # 订阅指定主题
        client.subscribe(TOPIC_TO_SUBSCRIBE,0)
    else:
        print("Failed to connect, return code %d" % rc)

def on_message(client, userdata, msg):
    timestamp = datetime.now().strftime('%Y-%m-%d %H:%M:%S')
    message_info = f"<-: {timestamp} {msg.payload.decode()}\n"
    print(message_info)
    # 将消息写入文件
    with open(MESSAGE_LOG_FILE, 'a') as file:
        file.write(message_info)
        #print(f"Message received and written to file: {message_info.strip()}")

# 创建MQTT客户端实例client_id="", clean_session=True, userdata=None,
                  
client = mqtt.Client(callback_api_version=mqtt.CallbackAPIVersion.VERSION1,client_id=CLIENT_ID)
#client = mqtt.Client(client_id=CLIENT_ID, clean_session=True)
#client.protocol_version = mqtt.MQTTv5

# 设置用户名和密码
client.username_pw_set(USERNAME, PASSWORD)

# 设置回调函数
client.on_connect = on_connect
client.on_message = on_message

# 连接到MQTT Broker
client.connect(BROKER_HOST, BROKER_PORT)

PUBLISH_TOPIC = "/9110000/app/msg/sub"
PUBLISH_PAYLOAD = "{\"appno\":\"1\",\"cmd\":\"req_tcp_data\",\"data\":{\"command\":\"QueryVersion\",\"module\":\"basic\"},\"msgid\":\"\"}"

def publish_timer():
    i=10
    while True:
        i=i+1
        timestamp = datetime.now().strftime('%Y-%m-%d %H:%M:%S')
        nnn=PUBLISH_PAYLOAD + str(i)
        client.publish(PUBLISH_TOPIC, nnn,1)
        print(f"->: {timestamp} {nnn}")
        time.sleep(1)  # 等待1秒后再次发送

# 创建并启动定时发送消息的线程
publish_thread = threading.Thread(target=publish_timer)
publish_thread.daemon = True  # 设置为守护线程,主线程结束时该线程也会结束
publish_thread.start()

# 开始消息循环
client.loop_forever()

  

posted @ 2024-04-10 16:41  ahuo  阅读(30)  评论(0编辑  收藏  举报