python——发送mqtt消息
(1)创建mqtt连接
参考https://www.jianshu.com/p/06d23de47aed
文中写的发布消息代码如下:
文件名:mypub.py #!/usr/bin/env python #coding:utf-8 import time import json import psutil import random from paho.mqtt import client as mqtt_client broker = '127.0.0.1' # mqtt代理服务器地址 port = 1883 keepalive = 60 # 与代理通信之间允许的最长时间段(以秒为单位) topic = "/python/mqtt" # 消息主题 client_id = f'python-mqtt-pub-{random.randint(0, 1000)}' # 客户端id不能重复 def connect_mqtt(): '''连接mqtt代理服务器''' def on_connect(client, userdata, flags, rc): '''连接回调函数''' # 响应状态码为0表示连接成功 if rc == 0: print("Connected to MQTT OK!") else: print("Failed to connect, return code %d\n", rc) # 连接mqtt代理服务器,并获取连接引用 client = mqtt_client.Client(client_id) client.on_connect = on_connect client.connect(broker, port, keepalive) return client def publish(client): '''发布消息''' while True: '''每隔4秒发布一次服务器信息''' time.sleep(4) msg = "msg" result = client.publish(topic, msg) status = result[0] if status == 0: print(f"Send `{msg}` to topic `{topic}`") else: print(f"Failed to send message to topic {topic}") def run(): '''运行发布者''' client = connect_mqtt() # 运行一个线程来自动调用loop()处理网络事件, 非阻塞 client.loop_start() publish(client) if __name__ == '__main__': run()
(1.1)、我修改了自己对应的地址和端口,但是一直连接失败,因为没有配置连接需要的账号密码:
使用mqtt客户端工具就能连接成功:
然后发现是客户端工具——选项中,配置了登录时的账号、密码:
所以在截图位置,添加一行设置账号密码的配置,连接成功:
(1.2)、我的这个测试项目,要求topic有特定的格式,所以需要修改,还有这个topic不是以斜杠开头的:
(2)、重写publish,发布消息的方法
发送结果:
(2.1)要求发送多条数据,每条数据带一个单独的时间,所以这里使用pandas,nm、ts字段对应的时间需要替换为参数:
nm对应的参数是str格式的时间:使用xx.strftime
ts对应的是毫秒:使用int(time.mktime(time.strptime(str(pd),'%Y-%m-%d %H:%M:%S')))
(2.2)tags对应的内容,从打印的结果来看,其实是一个字典,但是字典里面的key是可变的,值也是随机的,所以需要单独生成字典后,再放进msg消息体中:
(2.3)关于发送的msg,一般是json格式,需要使用json.dumps(msg)进行格式转换,才能被识别:
分类:
python
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!