# 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()
python-mqtt发送数据
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- maven的pom.xml引入包 mqtt.yml配置文件 初始化MQTT配置bean mqtt发送数据网关配置 ...
- 一、说明 基于上篇socket 通讯问题 ,今天给大家分享一个解决 用 socket 建立 长连接时 ,数据粘包的...
- 定时功能,即程序可以根据我们设定的时间自动爬取数据;通知功能,即程序可以把爬取到的数据结果以邮件的形式自动发送到我...