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