python链接mqtt订阅与发布
2024-08-30 01:44:22
什么是mqtt:
MQTT 全称为 Message Queuing Telemetry Transport(消息队列遥测传输)是一种基于发布/订阅范式的“轻量级”消息协议。该协议构建于TCP/IP协议上
MQTT三种服务:
“至多一次”,消息发布完全依赖底层 TCP/IP 网络。会发生消息丢失或重复。这一级别可用于如下情况,环境传感器数据,丢失一次读记录无所谓,因为不久后还会有第二次发送。
“至少一次”,确保消息到达,但消息重复可能会发生。
“只有一次”,确保消息到达一次。这一级别可用于如下情况,在计费系统中,消息重复或丢失会导致不正确的结果。
用python实现发布、订阅:
安装:pip install paho-mqtt 如何安装失败,可以尝试换豆瓣源pip install paho-mqtt -i https://pypi.douban.com/simple/
订阅:
import random from paho.mqtt import client as mqtt_client broker = #ip地址
port = 1883
topic = "/python/mqtt"
# generate client ID with pub prefix randomly
client_id = #client_id def connect_mqtt() -> mqtt_client:
def on_connect(client, userdata, flags, rc):
if rc == 0:
print("Connected to MQTT Broker!")
else:
print("Failed to connect, return code %d\n", rc) client = mqtt_client.Client(client_id)
client.on_connect = on_connect
client.connect(broker, port)
return client def subscribe(client: mqtt_client):
def on_message(client, userdata, msg):
print(f"Received `{msg.payload.decode()}` from `{msg.topic}` topic") client.subscribe(topic)
client.on_message = on_message def run():
client = connect_mqtt()
subscribe(client)
client.loop_forever() if __name__ == '__main__':
run()
消息发布
import random
import time from paho.mqtt import client as mqtt_client
#基本链接数据同上
topic=""
def clicent_main(client,message: str):
"""
客户端发布消息
:param message: 消息主体
:return:
"""
time_now = time.strftime('%Y-%m-%d %H-%M-%S', time.localtime(time.time()))
payload = {"msg": "%s" % message, "data": "%s" % time_now}
# publish(主题:Topic; 消息内容)
client.publish(topic, json.dumps(payload, ensure_ascii=False))
print("Successful send message!")
return True
最新文章
- net core 控制台中文乱码的解决方案
- ROW_NUMBER
- this 的工作原理
- ytu 2011: C语言实验——找中间数(水题)
- 获取枚举类型Description特性的描述信息
- MyBatis代码自动生成
- [selenium webdriver Java]隐式的等待同步
- ACM1024动态规划
- strcmp和==比较
- X-factor Chains(POJ3421 素数)
- (转)Windows重启延迟删除,重命名技术原理
- laravel+vue组合的项目中引入ueditor(打包成组件形式)
- Python 第五天
- 利用反射将IDataReader读取到实体类中效率低下的解决办法
- 设置Firefox(火狐)浏览器的中文菜单/界面
- AutoIt介绍
- JPA与EJB3的关系
- dfs1321
- python 安装wheel .whl文件
- ToString()格式和用法大全,C#实现保留两位小数的方法