1. 程式人生 > 實用技巧 >python3 mqtt 釋出以及訂閱

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()