python-mqtt發(fā)送數(shù)據(jù)

# publish_basic.py
import time
from datetime import datetime
import json
import random
from paho.mqtt import client as mqtt_client


broker = 'ip'  # mqtt代理服務(wù)器地址
port = 5000  # 端口
keepalive = 60  # 與代理通信之間允許的最長(zhǎng)時(shí)間段(以秒為單位)
topic = "topic"  # 消息主題
client_id = f'python-mqtt-send-{random.randint(0, 1000)}'  # 客戶端id不能重復(fù)


def connect_mqtt():
    '''連接mqtt代理服務(wù)器'''

    def on_connect(client, userdata, flags, rc):
        '''連接回調(diào)函數(shù)'''
        if rc == 0:
            print("Connected to MQTT successfully!")

        else:
            print("Failed to connect, return code {0}".format(rc))

    # 連接mqtt代理服務(wù)器,并獲取連接引用
    client = mqtt_client.Client(client_id)
    client.on_connect = on_connect
    # 如果有的話,如果沒(méi)有就不要這句了
    client.username_pw_set('admin','admin')
    client.connect(broker, port, keepalive)
    return client


def publish(client):
    '''發(fā)布消息'''
    while True:
        # 每隔4秒發(fā)布一次信息
        time.sleep(4)
        # mqtt只能傳輸字符串?dāng)?shù)據(jù)
        # 一個(gè)info就是一條數(shù)據(jù),里面可以替換成你想要的
        info = {
                "data": data_list,
                "age": 10,
                "name": "Lucy"}

        msg = json.dumps(info)
        # 默認(rèn)retain=False,一個(gè)Topic只能有一個(gè)retained消息,后設(shè)置的會(huì)覆蓋前面的消息
        result = client.publish(topic=topic, payload=msg, qos=0, retain=True)
        # 刪除retained消息
        # result = client.publish(topic=topic, payload=None, qos=0, retain=True)
        if result[0] == 0:
            print("Send {0} to topic {1}".format(msg, topic))
        else:
            print("Failed to send message {0} to topic {1}".format(msg, topic))



def run():
    '''運(yùn)行發(fā)布者'''
    client = connect_mqtt()
    # 運(yùn)行一個(gè)線程來(lái)自動(dòng)調(diào)用loop()處理網(wǎng)絡(luò)事件, 非阻塞
    client.loop_start()
    publish(client)


if __name__ == '__main__':
    run()
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容