LWIP_MQTT连接ONENET

news2025/5/21 5:36:42

前言:
使用正点原子STM32F407, LWIP,MQTT demo,验证LwIP的MQTT连接ONENET物联网平台,测试整个链路是否畅通,后面再详细分析LWIP移植和MQTT协议的使用。

26 基于 MQTT 协议连接 OneNET 服务器

本章主要介绍 lwIP 如何通过 MQTT 协议将设备连接到 OneNET 平台,并通过 MQTT 协议远程互通。

26.1 配置 OneNET 平台

配置 OneNET 服务器步骤:
第一步:首先打开 OneNET 服务器并注册账号,注册之后在主界面下打开开发者中心页面.
https://open.iot.10086.cn/
在这里插入图片描述
在这里插入图片描述

第二步:在上图中点击“产品开发”选项,页面跳转完成之后点击“创建产品”选项,此时该页面会弹出产品信息小界面,这里我们根据自己的项目填写相关的信息,如下图所示。
在这里插入图片描述
在这里插入图片描述

到“选择智能化方式”时,我们选择设备接入,并编写产品信息,如下图所示。
在这里插入图片描述

上图是我选择的配置,值得注意的是,如果用户选择物模型数据交互,则设置数据协议为 OneJosn;如果用户选择数据流模型数据交互,则设置数据协议为数据流。我这里选择数据流。

创建完成后,在产品开发下找到刚刚创建的产品,接着,我们点击该产品下的设备管理,进入添加设备界面,如下图所示。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

第三步:创建设备成功后,点击设备右边的详情标签进入标签的链接页面,在这个页面下我们得到以下设备信息,如下图所示。
在这里插入图片描述
在这里插入图片描述

本实验会用到上图中的产品 ID: tSK7kOOsj7、设备名称: MQTT_device_V2 以及“key”设备
的密钥。

下面我们打开 OneNET 在线开发指南(https://open.iot.10086.cn/doc/v5/fuse/detail/919),在
这个指南中找到服务器地址,这些服务器地址就是 MQTT 服务器地址,如下图所示。
在这里插入图片描述

上图中,OneNTE 的 MQTT 服务器具有两个连接方式,一种是加密接口连接,而另一种是非加密接口连接,本章实验使用的是非加密接口连接 MQTT 服务器。
注:MQTT 物联网套件采用安全鉴权策略进行访问认证,即通过核心密钥计算的 token 进行访问认证,简单来讲,用户想连接 OneNET 的 MQTT 服务器必须计算核心密钥,这个密钥是根据我们前面创建的产品和设备相关的信息计算得来的,密钥的计算方法可以使用 OneNET提供的 token 生成工具计算,该软件可在这个网址下载:https://open.iot.10086.cn/doc/v5/develop/detail/242。

下面笔者简单讲解一下 token 生成工具的使用,如下图所示。
在这里插入图片描述

res:输入格式为“products/{pid}/devices/{device_name}”,这个输入格式中的“pid”就是我们 MQTT 产品 ID,而“device_name”就是设备的名称。根据前面创建的产品和设备来填写.
et:访问过期时间(expirationTime,unix)时间,这里笔者选择参考文档中的数值(1956499200)
key:指选择设备的 key 密钥。
最后按下上图中的“Generate”按键生成核心密钥。
在这里插入图片描述

这个核心密钥会在 MQTT 客户端的结构体 client_pass 成员变量保存。

上面我们使用 token 生成工具根据产品信息以及设备信息来计算核心密钥,这样的方式导致每次创建一个设备都必须根据这个设备信息再一次计算核心密钥才能连接,这种方式会大大地降低我们的开发效率,为了解决这个问题,笔者使用另一个方法,那就是使用代码的方式计算核心密钥。OneOS 源码中有几个文件是用来计算 MQTT 协议连接 OneNET 平台的核心密钥,这些文件在oneos2.0\components\cloud\onenet\mqtt-kit\authorization 路径下,大家先下载 OneOS 源码并在该路径下复制这些文件到工程当中。

26.2 运行效果

我们编译代码,并下载到开发板上运行,打开 OneNET 的 MQTT 服务器查看数据流展示,如下图所示。
在这里插入图片描述

串口打印:
在这里插入图片描述

26.3 连接修改点

在这里插入图片描述

26.4 问题解决:

连接异常:排查是认证的时候,设备名称有点长就会出现这样的问题。是认证的缓存过小,需要改大点。

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2337206.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

代码随想录刷题|Day20(组合总数,组合总数2、分割回文串)

回溯算法 Part02 组合总数 力扣题目链接 代码随想录链接 视频讲解 题目描述: 给你一个 无重复元素 的整数数组 candidates 和一个目标整数 target ,找出 candidates 中可以使数字和为目标数 target 的 所有 不同组合 ,并以列表形式返回。你…

ArcGIS Desktop使用入门(四)——9版本与10版本区别

系列文章目录 ArcGIS Desktop使用入门(一)软件初认识 ArcGIS Desktop使用入门(二)常用工具条——标准工具 ArcGIS Desktop使用入门(二)常用工具条——编辑器 ArcGIS Desktop使用入门(二&#x…

R语言之环境清理

有时候 R 环境中残留的变量可能会导致警告,可以尝试清理工作空间并重新加载数据。 警告信息: In mget(objectNames, envir ns, inherits TRUE) : 重新评估被中断的许诺 # 观察前6行 head(iris)# 观察数据结构 str(iris)# 探知数据的极值和分位数,以及…

javaSE————网络编程套接字

网络编程套接字~~~~~ 好久没更新啦,蓝桥杯爆掉了,从今天开始爆更嗷; 1,网络编程基础 为啥要有网络编程呢,我们进行网络通信就是为了获取丰富的网络资源,说实话真的很神奇,想想我们躺在床上&a…

FreeRTOS二值信号量详解与实战教程

FreeRTOS二值信号量详解与实战教程 📚 作者推荐:想系统学习FreeRTOS嵌入式开发?请访问我的FreeRTOS开源学习库,内含从入门到精通的完整教程和实例代码! 1. 二值信号量核心概念解析 二值信号量(Binary Semaphore)是Fre…

赛灵思 XCVU440-2FLGA2892E XilinxFPGA Virtex UltraScale

XCVU440-2FLGA2892E 属于 Xilinx Virtex UltraScale 系列,是面向高端应用的旗舰 FPGA 器件。该系列产品以出色的高并行处理能力、丰富的逻辑资源和高速互联能力闻名,广泛用于 高性能计算、数字信号处理等对计算能力和带宽要求极高的场景。采用先进的 20n…

Spring Cloud Alibaba微服务-微服务介绍和搭建

1. 课程介绍 单体服务中有订单,用户,库存, 两个缺陷: a. 是以应用的维度进行负载均衡,资源占用大 b. 当其中一个模块宕机,整个应用就不能用了; nacos;ribbon,loadBa…

KALI安装JAVA8和切换JDK版本

一、安装JDK1.8 1、直接使用下面的地址下载java 1.8: https://repo.huaweicloud.com/java/jdk/8u202-b08/jdk-8u202-linux-x64.tar.gz 2、建立目录,将下载的jdk的安装包复制过去并进行解压 sudo mkdir -p /usr/local/java cp jdk-8u202-linux-x64.t…

今日行情明日机会——20250417

指数目前在区间内缩量震荡 2025年4月17日涨停主要行业方向分析 一、核心主线方向 化工(产能优化涨价预期) • 涨停家数:11家(最强方向)。 • 代表标的: ◦ 红宝丽(2连板)&#xff…

一篇讲完自动化测试基础-Python【万字详细讲解】12

✨博客主页: https://blog.csdn.net/m0_63815035?typeblog 💗《博客内容》:.NET、Java.测试开发、Python、Android、Go、Node、Android前端小程序等相关领域知识 📢博客专栏: https://blog.csdn.net/m0_63815035/cat…

极限编程(XP)简介及其价值观与最佳实践

目录 一、什么是极限编程(XP)二、极限编程的核心价值观1. 沟通2. 简单3. 反馈4. 勇气 三、极限编程的12个最佳实践1. 结对编程2. 40小时工作制3. 简单设计4. 代码规范5. 测试驱动开发(TDD)6. 系统隐喻7. 持续集成8. 重构9. 客户在…

四层板的蛇形走线技巧:原理、策略与应用

在四层板的设计过程中,蛇形走线是一种常见且重要的布线方式。它能够满足特定的设计需求,如调整信号线长度、实现等长布线等,但如果使用不当,也可能会带来一些负面影响,如增加信号衰减、引入电磁干扰等。以下将详细探讨…

面向对象—有理数类的设计

目录 1.代码呈现 1.1编写toString、equals方法 1.2测试代码 1.3有理数类的代码 2.论述题 3.有理类设计 1.代码呈现 1.1编写toString、equals方法 (1)toString方法 Overridepublic String toString(){if(this.v20){return "Undefined";}return this.v1 "/…

408数据结构绪论刷题001

答案:D 解析: • A选项:数据元素是组成数据对象的基本单位 ,它只是数据的基本个体,不能完整定义数据结构,所以A选项错误。 • B选项:数据对象是性质相同的数据元素的集合,仅仅描述…

Leetcode 3359. 查找最大元素不超过 K 的有序子矩阵【Plus题】

1.题目基本信息 1.1.题目描述 给定一个大小为 m x n 的二维矩阵 grid。同时给定一个 非负整数 k。 返回满足下列条件的 grid 的子矩阵数量: 子矩阵中最大的元素 小于等于 k。 子矩阵的每一行都以 非递增 顺序排序。 矩阵的子矩阵 (x1, y1, x2, y2) 是通过选择…

文件系统 软硬连接

🌻个人主页:路飞雪吖~ 🌠专栏:Linux 目录 一、理解文件系统 🌠磁盘结构 二、软硬连接 🌟软硬链接 🌠软链接: 🌠硬链接: 🌟理解软硬链接的应…

计算机视觉——JPEG AI 标准发布了图像压缩新突破与数字图像取证的挑战及应对策略

概述 今年2月,经过多年旨在利用机器学习技术开发一种更小、更易于传输和存储且不损失感知质量的图像编解码器的研究后,JPEG AI国际标准正式发布。 来自JPEG AI官方发布流,峰值信噪比(PSNR)与JPEG AI的机器学习增强方法…

Oracle 19c部署之数据库软件安装(二)

在完成了Oracle Linux 9的初始化配置之后,我们准备安装Oracle 19c数据库软件。 Oracle数据库支持两种主要的安装方式:图形化安装和静默安装。这两种方法各有优缺点,选择哪种取决于你的具体需求、环境配置以及个人偏好。 图形化安装 图形化安…

在Vmware15(虚拟机免费) 中安装纯净win10详细过程

一、软件备选 1. VMware15.5.1 网盘下载地址 链接: https://pan.baidu.com/s/1y6GLJ2MG-1tomWblt3otsg?pwdim8e 提取码: im8e 2. windows镜像下载 去官网下载ios包 链接:https://www.microsoft.com/zh-cn/software-download/windows10 二、在VMware15.5.1下安装w…

[Spark]深入解密Spark SQL源码:Catalyst框架如何优雅地解析你的SQL

本文内容组织形式 总结具体例子执行语句解析层优化层物理计划层执行层 猜你喜欢PS 总结 先写个总结,接下来会分别产出各个部分的源码解析,Spark SQL主要分为以下五个执行部分。 具体例子 接下来举个具体的例子来说明 执行语句 SELECT name, age FR…