python3 mqtt 发布以及订阅

安装库
pip3 install paho-mqtt
 
发布话题
import paho.mqtt.client as mqtt
import time
import sys
 
 
HOST = "103.77.337.89"
PORT = 1883
 
 
def on_connect(client, userdata, flags, rc):
    print("Connected with result code " + str(rc))
def on_subscribe(client,userdata,mid,granted_qos):
    print("消息发送成功")
 
 
client = mqtt.Client(protocol=3)
client.username_pw_set("admin", "password")
client.on_connect = on_connect
client.on_subscribe = on_subscribe
client.connect(host=HOST, port = PORT, keepalive=60)  # 订阅频道
time.sleep(1)
i = 0
 
 
while True:
    try:
        # 发布MQTT信息
        sensor_data = "test" + str(i)
        client.publish(topic="public", payload=sensor_data.encode("utf-8"), qos=0)
        time.sleep(3)
        i += 1
    except KeyboardInterrupt:
        print("EXIT")
        client.disconnect()
        sys.exit(0)
 
 
 
订阅话题
import time
import paho.mqtt.client as mqtt
# The callback for when the client receives a CONNACK response from the server.
 
 
HOST = "103.77.337.89"
PORT = 1883
 
 
def on_connect(client, userdata, flags, rc):
    if rc == 0:
        print("连接成功")
        print("Connected with result code " + str(rc))
 
 
def on_message(client, userdata, msg):
    print(msg.topic + " " + str(msg.payload))
client = mqtt.Client(protocol=3)
client.username_pw_set("admin", "password")
client.on_connect = on_connect
client.on_message = on_message
client.connect(host=HOST, port = PORT, keepalive=60)  # 订阅频道
time.sleep(1)
client.subscribe("public")
#client.subscribe([("public", 0), ("test", 2)])
client.loop_forever()
 
 
 
订阅话题
import time
import paho.mqtt.client as mqtt
# The callback for when the client receives a CONNACK response from the server.
 
 
HOST = "103.77.337.89"
PORT = 1883
 
 
def on_connect(client, userdata, flags, rc):
    if rc == 0:
        print("连接成功")
        print("Connected with result code " + str(rc))
 
 
def on_message(client, userdata, msg):
    print(msg.topic + " " + str(msg.payload))
client = mqtt.Client(protocol=3)
client.username_pw_set("admin", "password")
client.on_connect = on_connect
client.on_message = on_message
client.connect(host=HOST, port = PORT, keepalive=60)  # 订阅频道
time.sleep(1)
client.subscribe("SJHTopic2")
#client.subscribe([("public", 0), ("test", 2)])
client.loop_forever()
 
 
 
 
 
 
 
 
 
 
 
 
 
原文地址:https://www.cnblogs.com/sea-stream/p/13528676.html