MQTT服务器搭建及客户端通信实例

2023-11-04

MQTT服务器:EMQX v3

客户端1 PC(Windows10操作系统)

客户端2 IOT BOARD(RT-Thread与正点原子联合开发的STM32L475核心芯片的开发板)

1.搭建服务器

在EMQ官网https://www.emqx.io/cn/products/broker下载emq x broker并按照文档安装运行即可,安装并成功运行后,打开http://127.0.0.1:18083 即可看到MQTT服务器的WEB控制台。

2.客户端1

在PC上利用python的paho-mqtt库实现一个简单的客户端。该程序实现了自收自发的功能。

如下是EMQ官方使用指南中的一段示例代码。运行后,可以在PC机上看到成功连接的信息。

如下图

https://img-blog.csdnimg.cn/20190901152239255.png

 

注意将client.connect("192.168.1.165", 1883, 60)这句中的IP改为服务器的IP地址。

#-*-coding:utf-8-*-

# 导入 paho-mqtt 的 Client:
import paho.mqtt.client as mqtt
import time
unacked_sub = [] #未获得服务器响应的订阅消息 id 列表

# 用于响应服务器端 CONNACK 的 callback,如果连接正常建立,rc 值为 0
def on_connect(client, userdata, flags, rc):
    print("Connection returned with result code:" + str(rc))


# 用于响应服务器端 PUBLISH 消息的 callback,打印消息主题和内容
def on_message(client, userdata, msg):
    print("Received message, topic:" + msg.topic + "payload:" + str(msg.payload))

# 在连接断开时的 callback,打印 result code
def on_disconnect(client, userdata, rc):
    print("Disconnection returned result:"+ str(rc))

# 在订阅获得服务器响应后,从为响应列表中删除该消息 id
def on_subscribe(client, userdata, mid, granted_qos):
    unacked_sub.remove(mid)


# 构造一个 Client 实例
client = mqtt.Client()
client.on_connect = on_connect
client.on_disconnect= on_disconnect
client.on_message = on_message
client.on_subscribe = on_subscribe

# 连接 broker
# connect() 函数是阻塞的,在连接成功或失败后返回。如果想使用异步非阻塞方式,可以使用 connect_async() 函数。
client.connect("192.168.1.165", 1883, 60)

client.loop_start()

# 订阅单个主题
result, mid = client.subscribe("hello", 0)
unacked_sub.append(mid)
# 订阅多个主题
result, mid = client.subscribe([("temperature", 0), ("humidity", 0)])
unacked_sub.append(mid)

while len(unacked_sub) != 0:
    time.sleep(1)

client.publish("hello", payload = "Hello world!")
client.publish("temperature", payload = "24.0")
client.publish("humidity", payload = "65%")

# 断开连接
time.sleep(5) #等待消息处理结束
client.loop_stop()
client.disconnect()

服务器端的状态如下图:

3.客户端2

采用RT-Thread与正点原子联手开发的IOT BOARD开发板,在正点原子官网下载其示例代码(也可在正点原子TAOBAO店找到链接)。将MQTT示例下载到板子上,按照手册连接好WIFI,简单修改例子中的服务器地址,订阅与发布的主题,之后可以在PC机和开发板之间通过MQTT通信。开发板的例子中将接受与发送到的信息通过串口传输出来,如下图所示:

在PC机上可以从订阅的主题中收到信息,如下图。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

MQTT服务器搭建及客户端通信实例 的相关文章

  • STM32读写内部Flash(介绍+附代码)

    概述 内部Flash读写详解 一 介绍 首先我们需要了解一个内存映射 stm32的flash地址起始于0x0800 0000 结束地址是0x0800 0000加上芯片实际的flash大小 不同的芯片flash大小不同 RAM起始地址是0x2
  • STM32 基于Keil IDE 开发引用 Astyle 第三方工具格式化插件

    目录 概述 一 使用方法 二 STM32CubeMx配置 三 Examples 四 运行结果 五 总结 概述 本篇文章介绍如何使用Keil IDE 引用Astyle 第三方工具格式化代码 官网 http astyle sourceforge
  • 基于 STM32CubeMX 添加 RT-Thread 操作系统组件(四)- 多线程SRAM动态内存

    概述 本篇主要介绍这么使用STM32CubeMx工具添加RT Thread操作系统组件 码代码的IDE是keil 介绍单线程SRAM静态内存使用 如果还不知道 这么使用STM32CubeMx工具添加RT Thread操作系统组件 请移步到
  • rt-thread系列文章目录

    rt thread系列文章目录 本文是rt thread系列文章目录 后续关于rt thread的更新都会添加到此文内 实战篇 rt thread 生成工程模板 rt thread fal移植 内核篇 rt thread 内存管理 内存堆
  • 【STM32 学习】电源解析(VCC、VDD、VREF+、VBAT)

    VCC 电源电压 GND 电源供电负电压 通常接地 VDD 模块工作正电压 VSS 模块工作负电压 VREF ADC参考正电压 VREF ADC参考负电压 VBAT 电池或其他电源供电 VDDA 模拟供电正电压 VSSA 模拟供电负电压 一
  • 理解stm32当中旋转编码器左转或者右转的联系和区别

    在这里判断左转右转的代码为 判断左转时 K2下降沿 如果这个时候K3为0 那么就可以判断是左转 所以代码为 接下来是中断的中断函数 void EXTI0 IRQHandler void 检查一下中断标志位 if EXTI GetITStat
  • OLED显示小数

    OLED显示小数并不是很难的 在通用的OLED库中是没有显示小数的 需要自己去写 写的方法大致是这样的 写出0到9的ACSLL值 只需要将小数点后面的位数 一位一位的写数字对应的ACSLL值即可 其中小数点 也是写同样对应的ACSLL值 只
  • STM32HAL库-移植mbedtls开源库示例(二)

    概述 本篇文章介绍如何使用STM32HAL库 这篇文章只要是讲如何使用mbedtls开源库 实现 1 base64编码 2 AES加解密示例 怎么样移植mbedtls开源库 请阅读我写的一篇文章 STM32HAL库 移植mbedtls开源库
  • STM32-定时器系列(一)基本定时器

    相信学过51单片机的小伙伴们使用过定时刷新数码管吧 那也一定想过 我们在STM32中也想要实现定时刷新数码管 这该怎么实现呢 下面小编就带大家走进STM32的定时器模块吧 一 什么是定时器 定时器是一种计时的工具 它具有延时 频率测量 PW
  • 使用RT-Thread Studio, RT-Thread+ stm32f103c8最小系统板点亮LED灯

    1 使用RT Thread Studio 新建RT Thread项目 2 根据自己芯片选择 3 在main c中添加如下代码 include
  • MCU学习笔记_PWR电源管理系统

    MCU学习笔记 电源管理系统 1 STM32电源监控器概述 2 STM32电源 3 HAL库配置PVD实例 1 STM32电源监控器概述 原因 保持系统正常运行 实现特定条件下的低功耗模式 上电复位 POR 掉电复位 PDR 上电复位是指上
  • STM32L051C8T6 HAL库 + nRF24L01 收发案例(硬件SPI通讯)

    目录 概述 1 硬件平台 STM32L051C8T6 NRF24L01 1 原理图 2 STM32CubeMx工具配置如下 2 代码部分 1 nrf24L01 c文件 2 nrf24L01 h文件 3 usart c文件 2 1发送部分如下
  • stm32cubemx使用mpu6050

    文章目录 接线图 代码 常见问题 接线图 一般情况下 大家买的 mpu 6050 有两种 1 就是 单个的 mpu6050 芯片 2 就是 mpu6050 模块 如果 是第一种情况的话 大家可以参考 下图所示 如果是第二种情况的话 一般来说
  • STM32的PWM相关函数TIM_SetCompare1的一定理解

    void TIM SetCompare1 TIM TypeDef TIMx uint16 t Compare1 Check the parameters assert param IS TIM LIST8 PERIPH TIMx Set t
  • 001--STM32使用--TIM8的PWM输出

    void TIM8 PWM Init u16 arr u16 psc GPIO InitTypeDef GPIO InitStructure TIM TimeBaseInitTypeDef TIM TimeBaseStructure TIM
  • STM32 ADC 多通道16路电压采集

    下面介绍一种利用STM32单片机制作的16路多通道ADC采集电路图和源程序 采用USB接口与电脑连接 实则USB转串口方式 所以上位机可以用串口作为接口 电路图中利用LM324作为电压跟随器 起到保护单片机引脚的作用 直接在电脑USB取点
  • USART串口协议和USART串口外设(USART串口发送&串口发送和接收)

    1 通信接口 A 基本概念 通信的目的 将一个设备的数据传送到另一个设备 扩展硬件系统 通信协议 制定通信的规则 通信双方按照协议规则进行数据收发 异步 需要双方约定一个频率 B 数据通信方式 按数据通信方式分类 可分为串行通信和并行通信两
  • Stm32待机模式的进入与唤醒

    1 基础介绍 1 1 单片机的 低功耗模式 像是手机的待机模式 不同于正常运行模式 处于一种省电省资源的状态 1 2 在运行情况下 HCLK为cpu提供时钟 cortex m3内核执行程序的代码 如果处于中断事件的等待时 可以进入低功耗模式
  • STM32F407基于RT-Thread连接ESP8266WiFi模块

    1 连接规则 STM32F4连接ESP8266无线通信 串口通信 首先 本次用到两个串口 我使用的是普中STM32F407 第一个串口为USART1 PA2 PA3 串口一 就是数据线连接单片机和电脑时用的口 串口三USART3 PB10T
  • STM32HAL库-针对芯片内部EEprom读写操作介绍

    目录 概述 一 使用方法 二 STM32CubeMx配置 三 Examples 四 运行结果 五 总结 概述 本篇文章介绍如何使用STM32HAL库 操作芯片内部EEprom读写数据 类似操作Flash 可实现掉电保存数据功能 注 有些型号

随机推荐

  • InfluxDB 的 InfluxQL 基本介绍与使用

    前言 本文主要介绍 InfluxDB 的 InfluxQL 的基本概念与用法并且包含了一些需要注意的点 由于 InfluxDB 2 x 不使用 InfluxQL 进行查询 如您的版本大于 2 x 请查找其他资料 主要为以下内容 SELECT
  • Linux-升级CMake版本(Ubuntu18.4)

    一 简介 在一些场景中 因为CMake版本过低而无法编译 此时就需要升级CMake的版本 二 升级 卸载 先卸载旧的cmake sudo apt get autoremove cmake 安装 切换文件夹 cd usr src 下载cmak
  • 数据结构-第三章 栈和队列

    Stack and Queue 栈和队列是逻辑上的结构 在物理上可以用数组和链表来实现 1 栈 A stack is a list in which insertions and deletions take place at the sa
  • 逆向爬虫31 某站刷播放

    逆向爬虫31 某站刷播放 目标 利用爬虫模拟某站视频播放 增加视频的播放量 思考 正常用户是如何为视频增加播放量的 进入视频播放页 点击播放按钮 视频开始播放 就会增加一个播放量 因此我们只需要模拟点击播放按钮时 浏览器对服务器发送的数据包
  • python 字符串True,False转换成布尔值True,False

    字符串True False转换成布尔值True False不能用bool函数 因为得到的结果都是布尔值True 可以写个if判断 if ss True ss True elif ss False ss False
  • MySQL基本命令

    登录mysql hhostname Pport uusername p 比如 mysql hlocalhost P3306 uroot p 主机名 端口号 用户名 密码 同一台服务器上前两个省略 显示所有数据库 show databases
  • zabbix监控nginx状态界面

    文章目录 开启状态界面 监控nginx状态界面 开启状态界面 实例 开启status location status stub status on off allow 172 16 0 0 16 deny all 访问状态页面的方式 htt
  • 编译工具 Ninja 介绍

    什么是Ninja Ninja是使用C 写的开源项目 http martine github io ninja 在Unix Linux下通常使用Makefile来控制代码的编译 但是Makefile对于比较大的项目有时候会比较慢 看看上面那副
  • (手工)【sqli-labs26、26a】拼接注入、过滤后注入

    目录 推荐 一 手工 SQL注入基本步骤 二 Less25 GET Error based All your SPACES and COMMENTS belong to us 2 1 简介 过滤 报错回显 2 2 第一步 注入点测试 2 3
  • 性能测试浅谈

    早期的性能测试更关注后端服务的处理能力 一个用户去访问一个页面的请求过程 如上图 数据传输时间 当你从浏览器输入网址 敲下回车 开始 真实的用户场景请不要忽视数据传输时间 想想你给远方的朋友写信 信件需要经过不同的交通运输工具送到朋友手上
  • Python __init__.py 模块详解

    文章目录 1 概述 2 导入演示 2 1 执行顺序 先父后子 2 2 导入所有模块 含子模块 1 概述 1 工具 Pycharm 场景 在创建一个 Python Package 时 会默认在该包下生成一个 init py 文件 2 目的 进
  • matlab中rem与mod函数的区别

    语法格式 rem x y 求整除x y的余数 mod x y 求模 rem x y x y fix x y fix 向0取整 mod x y x y floor x y floor 向左取整 以数抽为准 朝负无穷方向取整 如果x和y的符号相
  • SQLlite

    SQLlite SQLite是一个软件库 实现了自给自足的 无服务器的 零配置的 事务性的 SQL 数据库引擎 一 什么是 SQLite SQLite是一个进程内的库 实现了自给自足的 无服务器的 零配置的 事务性的 SQL 数据库引擎 它
  • uTools使用技巧

    uTools 提高工作效率 学习效率 启动uTools Alt 空格 关键词 任何系统文件 软件 插件 都可以通过 关键词 快速跳转 快速打开文件 软件 输入 控制面板 选中后就能跳转到 控制面板 同样的 程序与功能 cmd 等系统文件 都
  • 电脑恢复还原文件的各种操作方法

    如果你的电脑因操作不慎丢失了重要的数据 先不要给电脑重装系统 一般来说都是可以根据各种类型去找回这些文件的 这里就和大家介绍一下电脑恢复还原文件的各种操作方法吧 1 首先是U盘和内存卡类型的数据 u盘是我们经常使用的移动储存工具了 在对这些
  • 设计模式——网课学习总结

    面向对象 设计模式七大基本原则 单一职责原则 SRP 一个类的功能要单一 提高内聚性 方法要原子性 开放封闭原则 OCP 对扩展性开放 对修改封闭 最重要 总纲 里氏替换原则 LSP 子类继承父类 子类不要改变父类原有的方法 完成新的功能需
  • 概念:COW与MOR

    名词解释 COW 写时复制 MOR 读时合并 CopyOnWrite 思想 写时复制 CopyOnWrite 简称COW 思想是计算机程序设计领域中的一种通用优化策略 其核心思想是 如果有多个调用者 Callers 同时访问相同的资源 如内
  • 8个开源的后台管理系统推荐,用了都说好

    点击上方蓝字 关注我们 1 AG Admin AG Admin是国内首个基于Spring Cloud微服务化开发平台 具有统一授权 认证后台管理系统 其中包含具备用户管理 资源权限管理 网关API管理等多个模块 支持多业务系统并行开发 可以
  • 看这里!java架构师教学视频全百度云

    为了更好的梳理相关知识 咱们先看纯手绘知识体系图 1 1 Kafka知识体系大纲 由于我手绘这些知识体系大纲是用的xmind软件 无法上传 所以都以截图的形式展示 细节处不清楚 毕竟图片形式有限 1 2 RabbitMQ知识体系大纲 1 3
  • MQTT服务器搭建及客户端通信实例

    MQTT服务器 EMQX v3 客户端1 PC Windows10操作系统 客户端2 IOT BOARD RT Thread与正点原子联合开发的STM32L475核心芯片的开发板 1 搭建服务器 在EMQ官网https www emqx i