mqtt 客户端搭建 流程记录

本文介绍如何在Python环境中使用paho-mqtt库配置并连接MQTT服务器,包括安装库、设置客户端参数和回调函数,以及订阅主题接收消息的完整过程。同时,展示了在通讯猫网站提供的MQTT服务器上的实际运行结果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

首先进入 通讯猫 网站
http://tongxinmao.com/App/List

网站提供了公用的外网TCP服务器和MQTT服务器,以及调试终端助手,功能非常强大。并且集成了很多软件开发小工具。
进入如下连接:
http://tongxinmao.com/App/Detail/id/126
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
win7 64位下面的 mqtt.fx 1.7.1 配置:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

python

pip install paho-mqtt

(py372_64_env) F:\pyqt5\work\pyqt5_code_collection_jack>pip install paho-mqtt
Looking in indexes: https://pypi.tuna.tsinghua.edu.cn/simple
Collecting paho-mqtt
  Downloading https://pypi.tuna.tsinghua.edu.cn/packages/59/11/1dd5c70f0f27a88a3a05772cd95f6087ac479fac66d9c7752ee5e16ddbbc/paho-mqtt-1.5.0.tar.gz (99 kB)
     |████████████████████████████████| 99 kB 162 kB/s
Building wheels for collected packages: paho-mqtt
  Building wheel for paho-mqtt (setup.py) ... done
  Created wheel for paho-mqtt: filename=paho_mqtt-1.5.0-py3-none-any.whl size=64726 sha256=6db880a32171d6814346c385f47a1cd0068f9a00ab7e6eac040048526f0dbd7e
  Stored in directory: c:\users\jack\appdata\local\pip\cache\wheels\46\0d\c8\ac01bf31739fd67ec3f2836949c52b23c08141dfb5f9ac2144
Successfully built paho-mqtt
Installing collected packages: paho-mqtt
Successfully installed paho-mqtt-1.5.0

代码:

import sys
import time
import os


import paho.mqtt.client as mqtt

HOST = "mq.tongxinmao.com"
PORT = 18830


def on_message_callback(client, userdata, message):

    print(message.topic+" " + ":" + str(message.payload))

def on_connect(client, userdata, flags, rc):
    print("Connected with result code "+str(rc))
    client.subscribe("/public/TEST/#")


def main():
    client = mqtt.Client('test')
    client.connect(HOST, PORT, 60)
    client.username_pw_set('admin', 'password')
    client.on_connect = on_connect
    #client.publish("chanel_01", "666666666", 1)
    # client.subscribe('gg')
    client.on_message = on_message_callback
    client.loop_forever()


if __name__ == '__main__':
    main()



D:\PYTHON_ENV\py372_64_env\Scripts\python.exe F:/pyqt5/work/pyqt5_code_collection_jack/pyqt5_jack_test/mqtt/mqtt_client/mqtt_client.py
Connected with result code 0
/public/TEST/webcli :b’\xe8\x8b\xa6\xe4\xba\x8e’
/public/TEST/obu2app :b’“event”: “HVMSG”,\n"data":{\n"timeStamp": 123456789,\n"SourceType": “BSM”,\n"msgId": “00000013”,\n"vehicleType": 2,\n\xe2\x80\x9cptcType\xe2\x80\x9d:3,\n"plateNo": “A12346”,\n"speed": 10,\n"heading": 273\xef\xbc\x8c\n"latitude": 29.123456,\n"longitude": 106.123456,\n"altitude": 105,\n"description": “null”,\n\xe2\x80\x9cgear\xe2\x80\x9c:\xe2\x80\x9dD\xe2\x80\x9d,\n\xe2\x80\x9clongAcc\xe2\x80\x9c:-0.5,\n\xe2\x80\x9clatAcc\xe2\x80\x9c:0,\n\xe2\x80\x9cvertAcc\xe2\x80\x9c:0,\n\xe2\x80\x9cyaw\xe2\x80\x9c:0,\n\xe2\x80\x9cbrakes\xe2\x80\x9c:0x01,\n\xe2\x80\x9clights\xe2\x80\x9c:0x0005,\n\xe2\x80\x9cvehicleLength\xe2\x80\x9c:5,\n\xe2\x80\x9cvehicleWidth\xe2\x80\x9c:2,\n\xe2\x80\x9cvehicleHeight\xe2\x80\x9c:1.7,\n\xe2\x80\x9cevents\xe2\x80\x9c::0x0000\n}\n}’
/public/TEST/dabiu :b’3 CPU:18.90% Mem:25% |2020-06-03 17:11:03|2020-06-03 05:11:04’
/public/TEST/dabiu :b’2 CPU:0.00% Mem:40% |2020-06-03 17:10:33|2020-06-03 05:11:26’
/public/TEST/webcli :b’888’
/public/TEST/dabiu :b’4 CPU:0.00% Mem:45% |2020-06-03 17:11:42|2020-06-03 05:11:55’
/public/TEST/dabiu :b’3 CPU:18.10% Mem:25% |2020-06-03 17:12:03|2020-06-03 05:12:04’
/public/TEST/dabiu :b’2 CPU:0.50% Mem:40% |2020-06-03 17:11:32|2020-06-03 05:12:35’
/public/TEST/dabiu :b’4 CPU:0.70% Mem:45% |2020-06-03 17:12:42|2020-06-03 05:12:55’
/public/TEST/dabiu :b’3 CPU:15.30% Mem:25% |2020-06-03 17:13:03|2020-06-03 05:13:04’
/public/TEST/dabiu :b’2 CPU:0.00% Mem:40% |2020-06-03 17:12:32|2020-06-03 05:13:19’
/public/TEST/dabiu :b’4 CPU:0.00% Mem:45% |2020-06-03 17:13:43|2020-06-03 05:13:56’
/public/TEST/dabiu :b’3 CPU:19.50% Mem:25% |2020-06-03 17:14:03|2020-06-03 05:14:04’
/public/TEST/dabiu :b’2 CPU:0.00% Mem:40% |2020-06-03 17:13:33|2020-06-03 05:14:20’
/public/TEST/dabiu :b’4 CPU:1.30% Mem:45% |2020-06-03 17:14:42|2020-06-03 05:14:55’
/public/TEST/dabiu :b’3 CPU:24.80% Mem:25% |2020-06-03 17:15:03|2020-06-03 05:15:04’
/public/TEST/dabiu :b’2 CPU:0.30% Mem:40% |2020-06-03 17:14:33|2020-06-03 05:15:20’
/public/TEST/dabiu :b’4 CPU:0.00% Mem:45% |2020-06-03 17:15:43|2020-06-03 05:15:56’
/public/TEST/dabiu :b’3 CPU:18.70% Mem:25% |2020-06-03 17:16:03|2020-06-03 05:16:04’
/public/TEST/dabiu :b’2 CPU:0.30% Mem:40% |2020-06-03 17:15:32|2020-06-03 05:16:20’
/public/TEST/dabiu :b’4 CPU:0.00% Mem:45% |2020-06-03 17:16:42|2020-06-03 05:16:55’
/public/TEST/dabiu :b’3 CPU:22.50% Mem:25% |2020-06-03 17:17:03|2020-06-03 05:17:04’
/public/TEST/dabiu :b’3 CPU:18.30% Mem:25% |2020-06-03 17:18:03|2020-06-03 05:18:04’
/public/TEST/dabiu :b’2 CPU:0.50% Mem:40% |2020-06-03 17:17:33|2020-06-03 05:18:21’
/public/TEST/dabiu :b’4 CPU:0.00% Mem:45% |2020-06-03 17:18:42|2020-06-03 05:18:55’
/public/TEST/dabiu :b’3 CPU:16.00% Mem:25% |2020-06-03 17:19:03|2020-06-03 05:19:04’
/public/TEST/dabiu :b’2 CPU:0.00% Mem:40% |2020-06-03 17:18:34|2020-06-03 05:19:21’
/public/TEST/dabiu :b’4 CPU:3.30% Mem:45% |2020-06-03 17:19:43|2020-06-03 05:19:56’
/public/TEST/dabiu :b’3 CPU:15.30% Mem:25% |2020-06-03 17:20:04|2020-06-03 05:20:05’
/public/TEST/dabiu :b’2 CPU:0.00% Mem:40% |2020-06-03 17:19:32|2020-06-03 05:20:20’
/public/TEST/dabiu :b’4 CPU:2.00% Mem:45% |2020-06-03 17:20:42|2020-06-03 05:20:55’
/public/TEST/dabiu :b’3 CPU:10.50% Mem:25% |2020-06-03 17:21:03|2020-06-03 05:21:04’
/public/TEST/dabiu :b’2 CPU:0.00% Mem:40% |2020-06-03 17:20:32|2020-06-03 05:21:25’
/public/TEST/dabiu :b’4 CPU:0.00% Mem:45% |2020-06-03 17:21:43|2020-06-03 05:21:56’
/public/TEST/dabiu :b’3 CPU:15.40% Mem:25% |2020-06-03 17:22:03|2020-06-03 05:22:04’
/public/TEST/dabiu :b’2 CPU:0.20% Mem:40% |2020-06-03 17:21:33|2020-06-03 05:22:20’
/public/TEST/dabiu :b’4 CPU:0.00% Mem:45% |2020-06-03 17:22:42|2020-06-03 05:22:55’
/public/TEST/dabiu :b’3 CPU:14.20% Mem:25% |2020-06-03 17:23:03|2020-06-03 05:23:04’
/public/TEST/dabiu :b’2 CPU:0.80% Mem:40% |2020-06-03 17:22:33|2020-06-03 05:23:21’
/public/TEST/dabiu :b’4 CPU:0.70% Mem:45% |2020-06-03 17:23:42|2020-06-03 05:23:55’
/public/TEST/dabiu :b’3 CPU:15.80% Mem:25% |2020-06-03 17:24:03|2020-06-03 05:24:04’
/public/TEST/dabiu :b’2 CPU:0.00% Mem:40% |2020-06-03 17:23:32|2020-06-03 05:24:25’
/public/TEST/dabiu :b’4 CPU:1.30% Mem:45% |2020-06-03 17:24:43|2020-06-03 05:24:56’
/public/TEST/dabiu :b’3 CPU:16.00% Mem:25% |2020-06-03 17:25:03|2020-06-03 05:25:04’
/public/TEST/dabiu :b’2 CPU:0.00% Mem:40% |2020-06-03 17:24:32|2020-06-03 05:25:25’
/public/TEST/dabiu :b’4 CPU:1.00% Mem:45% |2020-06-03 17:25:42|2020-06-03 05:25:55’
/public/TEST/dabiu :b’3 CPU:12.50% Mem:25% |2020-06-03 17:26:03|2020-06-03 05:26:04’
/public/TEST/dabiu :b’2 CPU:0.00% Mem:40% |2020-06-03 17:25:33|2020-06-03 05:26:25’
/public/TEST/dabiu :b’4 CPU:0.30% Mem:45% |2020-06-03 17:26:42|2020-06-03 05:26:55’
/public/TEST/dabiu :b’3 CPU:21.50% Mem:25% |2020-06-03 17:27:03|2020-06-03 05:27:13’
/public/TEST/dabiu :b’2 CPU:0.30% Mem:40% |2020-06-03 17:26:33|2020-06-03 05:27:21’
/public/TEST/dabiu :b’4 CPU:0.00% Mem:45% |2020-06-03 17:27:43|2020-06-03 05:27:56’
/public/TEST/dabiu :b’3 CPU:13.80% Mem:25% |2020-06-03 17:28:03|2020-06-03 05:28:04’
/public/TEST/dabiu :b’2 CPU:0.00% Mem:40% |2020-06-03 17:27:33|2020-06-03 05:28:20’
/public/TEST/dabiu :b’1 CPU:1.50% Mem:25% |2020-06-03 17:28:23|2020-06-03 05:28:24’
/public/TEST/dabiu :b’4 CPU:0.30% Mem:45% |2020-06-03 17:28:43|2020-06-03 05:28:56’
/public/TEST/dabiu :b’3 CPU:9.30% Mem:25% |2020-06-03 17:29:02|2020-06-03 05:29:03’
/public/TEST/dabiu :b’1 CPU:89.40% Mem:41% |2020-06-03 17:29:22|2020-06-03 05:29:23’
/public/TEST/dabiu :b’2 CPU:0.00% Mem:40% |2020-06-03 17:28:33|2020-06-03 05:29:27’
/public/TEST/dabiu :b’4 CPU:3.00% Mem:45% |2020-06-03 17:29:42|2020-06-03 05:29:55’
/public/TEST/dabiu :b’3 CPU:23.80% Mem:25% |2020-06-03 17:30:03|2020-06-03 05:30:04’
/public/TEST/dabiu :b’2 CPU:0.30% Mem:40% |2020-06-03 17:29:33|2020-06-03 05:30:22’
/public/TEST/dabiu :b’1 CPU:4.00% Mem:42% |2020-06-03 17:30:22|2020-06-03 05:30:23’
/public/TEST/dabiu :b’4 CPU:0.70% Mem:45% |2020-06-03 17:30:42|2020-06-03 05:30:55’
/public/TEST/dabiu :b’3 CPU:11.00% Mem:25% |2020-06-03 17:31:03|2020-06-03 05:31:10’
/public/TEST/dabiu :b’2 CPU:0.30% Mem:40% |2020-06-03 17:30:33|2020-06-03 05:31:20’
/public/TEST/dabiu :b’1 CPU:4.50% Mem:42% |2020-06-03 17:31:22|2020-06-03 05:31:23’
/public/TEST/dabiu :b’4 CPU:0.00% Mem:45% |2020-06-03 17:31:42|2020-06-03 05:31:55’

1

今天遇到个问题,run的时候提示地址被占用,有两种解决方式:

  1. 当你该端口被其他进程占用时,那就需要你修改为一个未使用的端口号重新运行。

  2. 是运行程序没有通过 C正常结束而是直接关闭Terminal或者其他非正常途径退出的时候: 
    通过lsof -i:(port),查看占用该端口号的进程,一般就是刚未正常退出的进程。例如
    sudo lsof -i:9050
    1
    COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAMEpython
    6051 ccx 3u IPv4 199758 0t0 TCP *:9050 (LISTEN)
    1
    然后kill掉该PID的进程,重新运行。
    sudo kill 6051
    ————————————————
    版权声明:本文为优快云博主「SSSuperFang」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.youkuaiyun.com/sssuperfang/article/details/80039524

### 在Windows操作系统上安装和配置MQTT Broker服务器 #### 1. 软件筛选 为了在Windows环境下搭建MQTT Broker,可以选择开源的MQTT实现之一——`mosquitto`。它是一个轻量级的消息代理程序,支持MQTT协议,并且易于部署和管理[^1]。 --- #### 2. 下载并安装Mosquitto 访问官方下载页面获取适用于Windows系统的最新版本 `mosquitto.exe` 文件以及相关依赖库文件。通常可以从以下地址找到适合的操作系统二进制包: - 官方网站链接:https://mosquitto.org/download/ 将压缩包解压到指定目录(例如 `C:\Program Files\mosquitto`),确保该路径不包含中文字符或其他特殊符号。 --- #### 3. 修改配置文件 进入解压后的文件夹,在其中会发现默认的样例配置文件名为 `mosquitto.conf.example`。将其重命名为 `mosquitto.conf` 并编辑此文件来满足实际需求。以下是几个常见的设置项说明: - **监听端口**: 默认情况下,Broker会在端口号 `1883` 上运行非加密连接;如果启用TLS,则可以定义另一个安全通道如 `8883`. ```plaintext listener 1883 protocol mqtt ``` - **允许匿名登录**: 如果希望简化初次测试流程而无需认证机制的话,可开启此项功能。 ```plaintext allow_anonymous true ``` 完成上述调整之后保存更改过的文档备用。 --- #### 4. 启动服务 打开命令提示符窗口切换至刚才设定好的工作区执行如下指令即可激活本地实例化出来的broker进程: ```batch cd C:\Program Files\mosquitto\ start /B mosquitto -c mosquitto.conf ``` 这里 `-c` 参数指定了自定义参数所在的绝对位置以便加载特定规则集而不是采用内置缺省模式。 可以通过观察控制台输出确认当前状态正常与否或者查看日志记录进一步排查潜在错误原因。 --- #### 5. 测试订阅与发布 利用附带的小型CLI工具分别扮演生产者角色发送数据流以及消费者身份捕获对应主题下的通知事件来进行功能性验证: ##### 发布消息 (Publisher) 启动一个新的终端模拟器输入下面这段脚本向目标Topic推送字符串内容: ```bash "C:\Program Files\mosquitto\mosquitto_pub" -h localhost -t "test/topic" -m "Hello MQTT" ``` ##### 接收消息 (Subscriber) 与此同时另开一扇对话框专门负责捕捉来自相同频道内的广播信号源: ```bash "C:\Program Files\mosquitto\mosquitto_sub" -h localhost -t "test/topic" ``` 当一切顺利运作时应该能够看到预期的结果展示出来证明整个架构已经初步构建完毕可供后续深入探索学习之用了! --- #### 6. 使用图形界面客户端工具 除了命令行方式之外还可以借助第三方应用程序比如 [MQTTX](https://mqttx.app/) 来增强用户体验效果从而更加直观便捷地操控各项属性选项等等。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值