ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

Python MQTT 简单 Demo

2022-07-16 00:05:01  阅读:190  来源: 互联网

标签:Python Demo mqtt MQTT CONNECT print Config def connect


依赖

下载 pahao-mqtt

pip install paho-mqtt

引用:

from paho.mqtt import client as MQTTClient
from time import sleep

示例

非匿名连接

初始化数据:

class Config:
    BROKER = "[MQTT 服务器 IP 或 域名]"
    PORT = [MQTT 服务器端口]
    TOPIC = "[主题]"
    CLIENT_ID = "[客户端 ID]"
    USERNAME = "[用户名]"
    PASSWORD = 口令"
    CONNECT = None
    MESSAGE = "[消息]"

建立连接

def connect_mqtt():
    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)
    Config.CONNECT = MQTTClient.Client(Config.CLIENT_ID)
    Config.CONNECT.username_pw_set(Config.USERNAME, Config.PASSWORD)
    Config.CONNECT.on_connect = on_connect
    Config.CONNECT.connect(Config.BROKER, Config.PORT)

通过主题发布消息

def publish():
    while(True):
        sleep(1)
        result = Config.CONNECT.publish(Config.TOPIC, Config.MESSAGE)
        status = result[0]
        if status == 0:
            print(f"Send `{Config.MESSAGE}` to topic `{Config.TOPIC}`")
        else:
            print(f"Failed to send message to topic {Config.TOPIC}")

def app():
    connect_mqtt()
    publish()
    Config.CONNECT.loop_forever()

通过主题订阅消息

def subscribe():
    def on_message(client, userdata, msg):
        print(f"Received `{msg.payload.decode()}` from `{msg.topic}` topic")
    Config.CONNECT.subscribe(Config.TOPIC)
    Config.CONNECT.on_message = on_message

def app():
    connect_mqtt()
    subscribe()
    Config.CONNECT.loop_forever()

运行

if __name__ == '__main__':
    app()

标签:Python,Demo,mqtt,MQTT,CONNECT,print,Config,def,connect
来源: https://www.cnblogs.com/Yogile/p/16473455.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有