Pythonクイックハンドpaho-mqttモノネットワーク

3143 ワード

import jsonimport sys
mqttパッケージの導入
import paho.mqtt.client as mqtt
独立したスレッドで実行
from threading import Thread
mqtt接続の確立
def on_connect(client, userdata, flag, rc):
if rc == 0:
    #     
    print("Connection successful")
elif rc == 1:
    #       
    print("Protocol version error")
elif rc == 2:
    #         
    print("Invalid client identity")
elif rc == 3:
    #        
    print("server unavailable")
elif rc == 4:
    #          
    print("Wrong user name or password")
elif rc == 5:
    #     
    print("unaccredited")
print("Connect with the result code " + str(rc))
#     
# client.subscribe('31765425213673472', qos=2)

エージェントとの接続が切断されたときに呼び出されます
def on_disconnect(client, userdata, rc):
#  rc == 0        disconnect()  
#                 ,          。
if rc != 0:
    print("Unexpected disconnection %s" % rc)

お客様が購読したトピックに関するメッセージを受信すると呼び出されます.
def on_message(client, userdata, msg):
print(msg.topic + " " + str(msg.payload))
json_msg = json.loads(msg.payload.decode('utf-8'))
#       
pass

publish()を使用して送信されたメッセージがエージェントに転送されたときに呼び出される.
def on_publish(client, obj, mid):
print("on_Publish, mid: " + str(mid))

エージェントがサブスクリプションリクエストに応答すると呼び出されます
def on_subscribe(client, userdata, mid, granted_qos):
print("on_Subscribed: " + str(mid) + " " + str(granted_qos))

エージェントがサブスクリプション解除要求に応答すると呼び出されます.
def on_unsubscribe(client, userdata, mid):
print("on_unsubscribe, mid: " + str(mid))

クライアントにログ情報がある場合に呼び出す
def on_log(client, obj, level, string):
print("on_Log:" + string)

mqttサブスクリプション起動関数
def mqtt_subscribe():
global client
client.loop_forever()

mqttパブリッシュ起動関数
def mqtt_publish(sensor_data, topic='xxxxxxxx', qos=2):
global client
try:
    client.publish(topic=topic, payload=sensor_data, qos=qos)
except KeyboardInterrupt:
    print("EXIT")
    #            ,[    ](https://www.gendan5.com/futures/ff.html)       disconnect()     。          。
    client.disconnect()
    sys.exit(0)

client = mqtt.Client()
きどうかんすう
def mqtt_run():
#            
client.username_pw_set('user', 'user')
# client = mqtt.Client()
#   mqtt  
client.on_connect = on_connect
client.on_subscribe = on_subscribe
client.on_message = on_message
#            
client.on_disconnect = on_disconnect
client.on_log = on_log
#    MQTT      
broker_ip = ''
# MQTT       
# client.connect(host=broker_ip, port=1883, keepalive=6000)
client.connect(host=broker_ip, port=1883)
client.reconnect_delay_set(min_delay=1, max_delay=2000)
client.subscribe('xxxxxxxx', qos=0)
#              
subscribe_thread = Thread(target=mqtt_subscribe)
subscribe_thread.start()

if name == "__main__":
mqtt_run()