美文网首页MQTTMQTT互联网工具
MQTT 服务器搭建,python控制消息发布和接收

MQTT 服务器搭建,python控制消息发布和接收

作者: new和光同尘 | 来源:发表于2020-02-25 17:26 被阅读0次

    目的:实现手机终端和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控制消息发布和接收

        本文链接:https://www.haomeiwen.com/subject/epjxchtx.html