python-mqtt发送数据

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


broker = 'ip'  # mqtt代理服务器地址
port = 5000  # 端口
keepalive = 60  # 与代理通信之间允许的最长时间段(以秒为单位)
topic = "topic"  # 消息主题
client_id = f'python-mqtt-send-{random.randint(0, 1000)}'  # 客户端id不能重复


def connect_mqtt():
    '''连接mqtt代理服务器'''

    def on_connect(client, userdata, flags, rc):
        '''连接回调函数'''
        if rc == 0:
            print("Connected to MQTT successfully!")

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

    # 连接mqtt代理服务器,并获取连接引用
    client = mqtt_client.Client(client_id)
    client.on_connect = on_connect
    # 如果有的话,如果没有就不要这句了
    client.username_pw_set('admin','admin')
    client.connect(broker, port, keepalive)
    return client


def publish(client):
    '''发布消息'''
    while True:
        # 每隔4秒发布一次信息
        time.sleep(4)
        # mqtt只能传输字符串数据
        # 一个info就是一条数据,里面可以替换成你想要的
        info = {
                "data": data_list,
                "age": 10,
                "name": "Lucy"}

        msg = json.dumps(info)
        # 默认retain=False,一个Topic只能有一个retained消息,后设置的会覆盖前面的消息
        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():
    '''运行发布者'''
    client = connect_mqtt()
    # 运行一个线程来自动调用loop()处理网络事件, 非阻塞
    client.loop_start()
    publish(client)


if __name__ == '__main__':
    run()
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容