python mqtt 客戶端實現


安裝paho-mqtt

pip install paho-mqtt -i http://pypi.douban.com/simple --trusted-host pypi.douban.com

python消息收發實現

import paho.mqtt.client as mqtt
from multiprocessing import Process
import camera_person_num

MQTTHOST = "172.19.4.4"
MQTTPORT = 1883
mqttClient = mqtt.Client()
 
 
# 連接MQTT服務器
def on_mqtt_connect():
    mqttClient.connect(MQTTHOST, MQTTPORT, 60)
    mqttClient.loop_start()

  
# 消息處理函數
def on_message_come(lient, userdata, msg):
    print(msg.topic + ":" + str(msg.payload.decode("utf-8")))
    # 消息處理開啟多進程
    p = Process(target=talk, args=("/camera/person/num/result", msg.payload.decode("utf-8")))
    p.start()

 
# subscribe 消息訂閱
def on_subscribe():
    mqttClient.subscribe("test", 1)  # 主題為"test"
    mqttClient.on_message = on_message_come  # 消息到來處理函數


# publish 消息發布
def on_publish(topic, msg, qos):
    mqttClient.publish(topic, msg, qos);


# 多進程中發布消息需要重新初始化mqttClient
def talk(topic, msg):
    cameraPsersonNum = camera_person_num.CameraPsersonNum(msg)
    t_max, t_mean = cameraPsersonNum.personNum()
    mqttClient = mqtt.Client()
    mqttClient.connect(MQTTHOST, MQTTPORT, 60)
    mqttClient.loop_start()
    mqttClient.publish(topic, '{"max":' + str(t_max) + ',"mean:"' + str(t_mean) + '}', 1)

 
def main():
    on_mqtt_connect()
    on_subscribe()
    while True:
        pass
 
 
if __name__ == '__main__':
    main()

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM