iis服务器助手广告广告
返回顶部
首页 > 资讯 > 服务器 >Python模拟MQTT v3.1.1服务器
  • 897
分享到

Python模拟MQTT v3.1.1服务器

python服务器java 2023-10-23 16:10:52 897人浏览 独家记忆
摘要

示例代码 import loggingimport asynciofrom hbMQtt.broker import Broker# 设置日志级别为DEBUGlogging.basicConfig(l

示例代码

import loggingimport asynciofrom hbMQtt.broker import Broker# 设置日志级别为DEBUGlogging.basicConfig(level=logging.DEBUG)# 创建MQtT服务器broker = Broker()# 启动MQTT服务器async def start_broker():    await broker.start()# 停止MQTT服务器async def stop_broker():    await broker.stop()# 主函数async def main():    # 启动MQTT服务器    await start_broker()    try:        # 保持主程序运行        while True:            await asyncio.sleep(1)    except KeyboardInterrupt:        # 捕捉键盘中断信号        pass    # 停止MQTT服务器    await stop_broker()# 运行主程序if __name__ == "__main__":    loop = asyncio.get_event_loop()    loop.run_until_complete(main())

运行结果

"D:\Program Files (x86)\python310\Python.exe" E:/文档/Projects/PyCharm/forklift/MQTT_SERVER.pyTraceback (most recent call last):  File "E:\文档\Projects\Pycharm\forklift\MQTT_SERVER.py", line 10, in <module>    from hbmqtt.broker import Broker  File "D:\Program Files (x86)\python310\lib\site-packages\hbmqtt\broker.py", line 15, in <module>    from hbmqtt.session import Session  File "D:\Program Files (x86)\Python310\lib\site-packages\hbmqtt\session.py", line 8, in <module>    from hbmqtt.mqtt.publish import PublishPacket  File "D:\Program Files (x86)\Python310\lib\site-packages\hbmqtt\mqtt\__init__.py", line 5, in <module>    from hbmqtt.mqtt.packet import (  File "D:\Program Files (x86)\Python310\lib\site-packages\hbmqtt\mqtt\packet.py", line 8, in <module>    from hbmqtt.adapters import ReaderAdapter, WriterAdapter  File "D:\Program Files (x86)\Python310\lib\site-packages\hbmqtt\adapters.py", line 6, in <module>    from websockets.protocol import WEBSocketCommonProtocolImportError: cannot import name 'WebSocketCommonProtocol' from 'websockets.protocol' (D:\Program Files (x86)\Python310\lib\site-packages\websockets\protocol.py)Process finished with exit code 1

cannot import name ‘WebSocketCommonProtocol’ from ‘websockets.protocol’

解决办法:
降低websockets版本

pip install websockets==8.1

在这里插入图片描述
新报错:

"D:\Program Files (x86)\Python385\python3.exe" E:/文档/Projects/Pycharm/forklift/MQTT_SERVER.pyTraceback (most recent call last):  File "D:\Program Files (x86)\Python385\lib\site-packages\hbmqtt\broker.py", line 185, in _build_listeners_config    listeners_config = broker_config['listeners']KeyError: 'listeners'During handling of the above exception, another exception occurred:Traceback (most recent call last):  File "E:/文档/Projects/Pycharm/forklift/MQTT_SERVER.py", line 17, in <module>    broker = Broker()  File "D:\Program Files (x86)\Python385\lib\site-packages\hbmqtt\broker.py", line 157, in __init__    self._build_listeners_config(self.config)  File "D:\Program Files (x86)\Python385\lib\site-packages\hbmqtt\broker.py", line 192, in _build_listeners_config    raise BrokerException("Listener config not found invalid: %s" % ke)hbmqtt.broker.BrokerException: Listener config not found invalid: 'listeners'Process finished with exit code 1

解决办法
根据错误信息,看起来问题出在您的MQTT服务器配置中缺少了"listeners"配置项。您可以在实例化Broker对象时,提供一个有效的配置,包括"listeners"配置项。

config = {    "listeners": {        "default": {            "type": "tcp",            "bind": "localhost:1883",  # 监听本地1883端口            "max_connections": 10  # 最大连接数        }    },    "sys_interval": 10,    "topic-check": {        "enabled": False    }}broker = Broker(config)

在这里插入图片描述参考:《mqtt 客户端和服务端搭建及基本使用详解》

下载客户端
在这里插入图片描述
打开客户端,新建连接
在这里插入图片描述
Github教程

创建教程

本地MQTT服务器

import osimport subprocess# 启动Mosquitto MQTT服务器def start_mosquitto_server():    command = "mosquitto"    process = subprocess.Popen(command, shell=True)    process.wait()# 停止Mosquitto MQTT服务器def stop_mosquitto_server():    command = "pkill mosquitto"    os.system(command)# 主函数def main():    try:        # 启动MQTT服务器        start_mosquitto_server()        # 保持主程序运行        while True:            pass    except KeyboardInterrupt:        # 捕捉键盘中断信号        pass        # 停止MQTT服务器        stop_mosquitto_server()# 运行主程序if __name__ == "__main__":    main()

在这里插入图片描述
系统找不到mosquitto命令,这可能是因为没有安装或正确配置Mosquitto MQTT服务器软件。

要解决这个问题,需要确保已经正确安装了Mosquitto MQTT服务器软件,并将其路径配置到系统的环境变量中。

安装Mosquitto MQTT服务器软件:

从Mosquitto官方网站(https://mosquitto.org/)下载并安装适合你操作系统的Mosquitto MQTT服务器软件。

配置系统环境变量:
将Mosquitto MQTT服务器软件的安装路径添加到系统的环境变量中,这样系统就能够找到mosquitto命令。

按照以下步骤进行配置:

打开系统的“高级系统设置”
在“系统变量”部分,找到名为“Path”的变量,选中它并点击“编辑”按钮
在编辑窗口中,点击“新建”按钮,并将Mosquitto MQTT服务器软件的安装路径添加进去
确认所有对话框并保存更改

重新运行代码:在完成以上步骤后,关闭并重新打开命令行窗口,然后再次运行你的代码,系统应该能够找到并启动mosquitto命令。
在这里插入图片描述
在这里插入图片描述在这里插入图片描述
在这里插入图片描述
重启电脑后,依然读取不到mosquitto:

"D:\Program Files (x86)\Python310\python310.exe" E:/文档/Projects/Pycharm/forklift/MQTT_SERVER_0629_01.py'mosquitto' 不是内部或外部命令,也不是可运行的程序或批处理文件。

在这里插入图片描述
在任务栏看到了该服务,说明服务已经启动,通过客户端模拟,成功发送了数据
在这里插入图片描述
在这里插入图片描述

import paho.mqtt.client as mqtt# 定义回调函数,用于处理接收到的消息def on_message(client, userdata, msg):    print("Received message:", msg.topic, msg.payload.decode())# 创建MQTT客户端实例client = mqtt.Client()# 配置MQTT服务器地址和端口broker_address = "mqtt://localhost:1883"client.connect(broker_address)# 设置订阅回调函数client.on_message = on_message# 订阅主题topic = "0629tt"client.subscribe(topic)try:    # 启动MQTT客户端循环    client.loop_forever()except KeyboardInterrupt:    # 捕捉键盘中断信号    pass# 停止MQTT客户端循环和断开连接client.loop_stop()client.disconnect()

在这里插入图片描述

pip install paho-mqtt

在这里插入图片描述

"D:\Program Files (x86)\Python310\python310.exe" E:/文档/Projects/Pycharm/forklift/MQTT_SERVER_0629_01.pyTraceback (most recent call last):  File "E:\文档\Projects\Pycharm\forklift\MQTT_SERVER_0629_01.py", line 19, in <module>    client.connect(broker_address)  File "D:\Program Files (x86)\Python310\lib\site-packages\paho\mqtt\client.py", line 914, in connect    return self.reconnect()  File "D:\Program Files (x86)\Python310\lib\site-packages\paho\mqtt\client.py", line 1044, in reconnect    sock = self._create_socket_connection()  File "D:\Program Files (x86)\Python310\lib\site-packages\paho\mqtt\client.py", line 3685, in _create_socket_connection    return socket.create_connection(addr, timeout=self._connect_timeout, source_address=source)  File "D:\Program Files (x86)\Python310\lib\socket.py", line 824, in create_connection    for res in getaddrinfo(host, port, 0, SOCK_STREAM):  File "D:\Program Files (x86)\Python310\lib\socket.py", line 955, in getaddrinfo    for res in _socket.getaddrinfo(host, port, family, type, proto, flags):socket.gaierror: [Errno 11001] getaddrinfo failedProcess finished with exit code 1

解决办法

# 配置MQTT服务器地址和端口broker_address = "mqtt://localhost:1883"client.connect(broker_address)

修改为:

# 配置MQTT服务器地址和端口broker_address = "mqtt://127.0.0.1:1883"client.connect(broker_address)

依然无法访问
在这里插入图片描述
Try Except 打印出错误
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
参考文章

C:\windows\System32\drivers\etc

在这里插入图片描述
在使用 paho-mqtt 库时,broker_address 的格式应该是 host:port,而不是使用 mqtt:// 协议前缀。
修改代码中的 broker_address 如下:

broker_address = 'localhost'  # MQTT 服务器的主机名或 IP 地址port = 1883  # MQTT 服务器的端口号try:    client.connect(broker_address, port=port)except Exception as e:    print("connect error:", e)

在这里插入图片描述
源码:

import paho.mqtt.client as mqtt# 定义回调函数,用于处理接收到的消息def on_message(client, userdata, msg):    print("Received message:", msg.topic, msg.payload.decode())# 创建MQTT客户端实例client = mqtt.Client()# 配置MQTT服务器地址和端口broker_address = 'localhost'  # MQTT 服务器的主机名或 IP 地址port = 1883  # MQTT 服务器的端口号try:    client.connect(broker_address, port=port)except Exception as e:    print("connect error:", e)# 设置订阅回调函数client.on_message = on_message# 订阅主题topic = "0629tt"client.subscribe(topic)try:    # 启动MQTT客户端循环    client.loop_forever()except KeyboardInterrupt:    # 捕捉键盘中断信号    pass# 停止MQTT客户端循环和断开连接client.loop_stop()client.disconnect()

其他参考代码
打开 Mosquitto 的配置文件。在 Windows 系统上,
配置文件通常位于 Mosquitto 安装目录的 \mosquitto\mosquitto.conf 或 \mosquitto\mosquitto.conf 文件中。

找到 listener 部分的配置。如果找不到该部分,请在文件的末尾添加以下内容:

listener 1883bind_address 192.168.183.176

参考链接:《Mosquitto 安装指南》
在这里插入图片描述

C:\Program Files\mosquitto> mosquitto.exe -c mosquitto.conf -v

在这里插入图片描述

listener 1883allow_anonymous true

通讯测试结果:

success!!

在这里插入图片描述

订阅全部消息

可以将主题设置为通配符 #。通配符 # 表示匹配主题层级中的任意层级。

import paho.mqtt.client as mqtt# 定义回调函数,用于处理接收到的消息def on_message(client, userdata, msg):    print("Received message:", msg.topic, msg.payload.decode())# 创建MQTT客户端实例client = mqtt.Client()# 配置MQTT服务器地址和端口broker_address = 'localhost'  # MQTT 服务器的主机名或 IP 地址port = 1883  # MQTT 服务器的端口号try:    client.connect(broker_address, port=port)except Exception as e:    print("connect error:", e)# 设置订阅回调函数client.on_message = on_message# 订阅所有主题topic = "#"client.subscribe(topic)try:    # 启动MQTT客户端循环    client.loop_forever()except KeyboardInterrupt:    # 捕捉键盘中断信号    pass# 停止MQTT客户端循环和断开连接client.loop_stop()client.disconnect()

来源地址:https://blog.csdn.net/the_beginner/article/details/131440827

--结束END--

本文标题: Python模拟MQTT v3.1.1服务器

本文链接: https://www.lsjlt.com/news/440542.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Python模拟MQTT v3.1.1服务器
    示例代码 import loggingimport asynciofrom hbmqtt.broker import Broker# 设置日志级别为DEBUGlogging.basicConfig(l...
    99+
    2023-10-23
    python 服务器 java
  • Python简单试用MQTT服务器
    经历过各种问题的磨难终于基本搭建完成了自己的MQTT服务器,接下来我就赶紧写个Python程序测试下. 这里采用paho.mqtt.python编写程序,详情参阅这里 打开powershell,执行pip install pa...
    99+
    2023-01-31
    简单 服务器 Python
  • python 模拟HTTP服务端
    使用python模拟http服务端,自定义返回信息头部: #!/usr/bin/python import os from BaseHTTPServer import BaseHTTPRequestHandler,HTTPServer ...
    99+
    2023-01-31
    服务端 python HTTP
  • 云服务器开模拟器
    云服务器开模拟器可以让开发人员轻松地在云端运行代码,并且可以模拟不同的操作系统,硬件配置,网络连接等各种环境。以下是几种常用的开模拟器:Github(https://github.com/youngyangyang03):用于创建和维护一个...
    99+
    2023-10-25
    服务器 开模
  • Windows下搭建MQTT服务器
    Windows下搭建MQTT服务器 1、MQTT服务器软件筛选2、MQTT服务器软件mosquitto下载3、修改mosquitto配置,并启动mosquitto服务4、利用mosquitto...
    99+
    2023-09-12
    windows 服务器 物联网
  • 亚马逊云mqtt服务器
    注册和获取证书:首先,您需要在亚马逊云控制台注册并获取MQTT证书。证书通常位于证书库中,可以通过浏览器访问http://cloud-center.amazon.com/certificate/证书管理器来获取证书。 安装MQTT:在控制...
    99+
    2023-10-27
    亚马逊 服务器 mqtt
  • 自己搭建mqtt服务器
            前言:网上资料大部分都是使用的云服务,我是采用自己搭建的服务器来进行试验的,接下来将记录过程。 一,服务器搭建         1.使用云服务器 云服务器有很多种网上也有很多教学在这里不进行过多的解释了,我实验的时候采用的阿...
    99+
    2023-09-02
    linux
  • mqtt服务器搭建与qt下的mqtt客户端实现
    一、mqtt介绍   MQTT(Message Queuing Telemetry Transport,消息队列遥测传输协议),是一个基于客户端-服务器的消息发布/订阅传输协议。MQTT协议是轻量、简...
    99+
    2023-08-31
    服务器 qt 网络
  • php mqtt服务器怎么搭建
    要搭建一个PHP MQTT服务器,您可以按照以下步骤进行操作: 安装MQTT服务器 您可以选择安装开源的MQTT服务器,如Mo...
    99+
    2024-04-09
    php mqtt
  • 云服务器怎么开模拟器
    云服务器可以模拟多个用户的访问,这就使得用户可以在不同的地点和设备上访问云服务器提供的服务。这使得用户可以根据需要灵活地配置和调整计算资源,提高计算效率和节省成本。同时,云服务器还可以提供多种不同的应用程序,如Web应用程序、数据库、视频、...
    99+
    2023-10-27
    服务器 开模
  • 云服务器怎么用模拟器
    使用云服务器可以模拟多种方式来解决云计算中的问题,以下是一些常见的模拟方式: 虚拟机使用:虚拟机(VM)可以直接使用服务器硬件设备,包括CPU、内存、磁盘容量等。使用虚拟机可以模拟大量的服务器虚拟出来,从而使得单个服务器可以轻松处理大量...
    99+
    2023-10-26
    模拟器 服务器
  • 云服务器挂安卓模拟器
    如果您的云服务器是运行在Android设备上,您可以尝试使用Android模拟器来运行云服务器应用。以下是使用Android模拟器安装云服务器的一些方法: 下载Android模拟器:您可以使用在线谷歌应用商店或者应用程序商店来下载And...
    99+
    2023-10-26
    模拟器 服务器 挂安卓
  • 云服务器装安卓模拟器
    如果您的云服务器是由安卓系统搭建的,您可以使用安卓模拟器来安装和运行Android操作系统。 以下是如何使用安卓模拟器安装和运行安卓系统的步骤: 下载安装模拟器:在您的电脑上安装安卓模拟器,可以使用豌豆荚、91手机助手等应用商店的软件市...
    99+
    2023-10-26
    模拟器 服务器 装安卓
  • 云服务器开雷电模拟器
    使用云服务器的优势主要有以下几点: 降低硬件和维护成本:使用云服务器可以将硬件资源利用最大化,同时可以根据需要动态扩容硬件,从而减少硬件的维护成本。 提高应用程序可扩展性:使用云服务器可以根据应用程序的需求动态分配计算资源,从而实现应用...
    99+
    2023-10-28
    模拟器 雷电 服务器
  • 云服务器怎么装模拟器
    云服务器通常需要安装相应的虚拟化软件,以实现虚拟化服务器的功能。如果您不知道如何操作,可以参考一些虚拟化方面的教程或文档来学习如何在云服务器上安装所需的软件。 以下是一些在虚拟机上安装云服务器软件的基本步骤: 选择云服务器的硬件:在准备...
    99+
    2023-10-26
    服务器 装模
  • 云服务器开安卓模拟器
    如果您的系统是安卓,而您又想尝试使用云服务器来模拟安卓系统的运行环境,以实现更加流畅的应用程序性能和更好的游戏体验,下面是几个步骤: 安装Android模拟器:安装Android模拟器是第一步,您可以使用官方提供的Android模拟器,...
    99+
    2023-10-27
    模拟器 服务器 开安卓
  • 云服务器可用的模拟器
    云服务器可以使用多种不同的虚拟化技术,以下是一些常见的云服务器可用的模拟器技术: Vmware虚拟机 Vmware是著名的虚拟机软件提供商,它提供了一些基本的虚拟化选项,如VirtualBox和VirtualPlex。这些模拟器通常提供...
    99+
    2023-10-26
    模拟器 服务器
  • PYTHON-“人生重开模拟器“
    🚀write in front🚀 🔎大家好,我是Aileen★。希望你看完之后,能对你有所帮助,不足请指正!共同学习交流🔎 🆔本文由 Aileen_0v0★...
    99+
    2023-09-14
    python 开发语言 算法 学习 游戏策划
  • 云服务器安装模拟器教程
    安装云服务器需要先下载云服务器的安装包,通常可以从官网或者一些提供商的官方网站上下载。下载完成后,双击安装包进行安装。在安装过程中,需要按照官方提供的步骤逐一进行,以确保安装成功。 安装完成后,需要进行服务器的配置。在配置界面中,用户可以...
    99+
    2023-10-27
    模拟器 服务器 教程
  • 云服务器怎么安装模拟器
    云服务器通常是通过虚拟服务器软件实现的,可以通过安装在服务器上的模拟器来安装。下面提供一些安装模拟器的步骤: 安装虚拟磁盘软件:在您的操作系统中安装虚拟磁盘软件,包括Dockerfile和Genus,可以在虚拟机上进行安装。 配置网络设...
    99+
    2023-10-27
    模拟器 服务器
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作