MQTT 服務器搭建,python控制消息發佈和接收

目的:實現手機終端和PC無線通信,然後做一些測試任務,經過查找資料,首先實現了PC之間的消息發送和接收實現步驟如下:

1. 搭建MQTT服務器

我選用的是EMQ,https://www.emqx.io/cn/downloads

下載後解壓,打開cmd終端,切到,解壓文件/bin路徑下,執行emqx.cmd start 啓動服務

注意:啓動這個服務的時候可能會報錯(XXX沒有權限),只需要以管理員權限打開終端,就能解決這個問題

2. 安裝客戶端UI軟件(客戶端可以在不同的PC上,服務器和客戶端所在的同一網段)

本步驟目的是圖形界面驗證服務和客戶端可用。代碼操作(不需要這個客戶端)在第3步,

下載 MQTT Utility windows客戶端,https://repo.eclipse.org/content/repositories/paho-releases/org/eclipse/paho/org.eclipse.paho.ui.app/1.1.1/

解壓,然後雙擊打開paho.exe,顯示界面如下,服務器地址填寫,服務器地址,比如:tcp://ip地址:端口號

  1. 服務器搭建好之後python代碼:

分兩部分,一部分是實時監聽接收,一部分是發送消息端,服務器只作爲消息的中轉。

監聽端

import sys
import os
import time
import paho.mqtt.client as mqtt

sys.path.append(os.path.abspath(os.path.dirname(__file__) + '/' + '..'))
sys.path.append("..")

REPORT_TOPIC = 'test'  # 主題


def on_connect(client, userdata, flags, rc):
    print('connected to mqtt with resurt code ', rc)
    client.subscribe(REPORT_TOPIC)  # 訂閱主題


def on_message(client, userdata, msg):

    message = msg.payload.decode()
    print(message)

def server_conenet(client):
    client.on_connect = on_connect  # 啓用訂閱模式
    client.on_message = on_message  # 接收消息
    client.connect("服務器IP地址", 1883, 60)  # 鏈接
    # client.loop_start()   # 以start方式運行,需要啓動一個守護線程,讓服務端運行,否則會隨主線程死亡
    client.loop_forever()  # 以forever方式阻塞運行。


def server_stop(client):
    client.loop_stop()  # 停止服務端
    sys.exit(0)


def server_main():
    client_id = time.strftime('%Y%m%d%H%M%S', time.localtime(time.time()))
    client = mqtt.Client(client_id, transport='tcp')
    server_conenet(client)


if __name__ == '__main__':
    # 啓動監聽
    server_main()

消息發送端

import paho.mqtt.client as mqtt

client = mqtt.Client()
# 參數有 Client(client_id="", clean_session=True, userdata=None, protocol=MQTTv311, transport="tcp")
client.connect("度武器IP地址", 1883, 60)  # 連接服務器,端口爲1883,維持心跳爲60秒
client.publish('test', 'test string',1)

上述兩端代碼連接的IP地址需要修改爲服務器所在PC的IP地址

首先把監聽的代碼運行起來,時刻監聽主題爲“test”的消息,
然後運行發送消息的代碼,可以查看到監聽端已經捕獲到發送的消息


參考:
https://www.jianshu.com/p/b76dbc675141
https://blog.csdn.net/sinat_32651363/article/details/87876978

主機發消息Android端接收,實現無線測試可查看下邊連接
MQTT服務端python和移動終端Android通信,實現無線測試

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章