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地址:端口号

image
  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”的消息,
然后运行发送消息的代码,可以查看到监听端已经捕获到发送的消息


image.png

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

主机发消息Android端接收,实现无线测试可查看下边连接
MQTT服务端python和移动终端Android通信,实现无线测试

你可能感兴趣的:(MQTT 服务器搭建,python控制消息发布和接收)