鸿蒙项目云捐助第二十一讲云捐助项目物联网IoT模拟器的使用
鸿蒙项目云捐助第二十一讲云捐助项目物联网IoT模拟器的使用
在前面的内容中,已经实现了云捐助物联网IoT的产品及设备设置,并且使用华为云Iot设备的在线调试工具进行命令下发的调试,这里也可以通过华为Iot物联网提供的MQTT模拟器进行连接。
一、华为Iot物联网中的MQTT模拟器连接
华为IoT物联网的直实设备可以使用MQTT模拟器,下载地址可以通过点击华为Iot产品实例页面左侧的“产品文档”实现查找,如下图所示。

点击“产品文档”后,在左侧的搜过框中输入“MQTT”,然后进行搜索。如下图所示。

这里的MQTT就是使用物联网进行连接实体的协议。这里搜索出来的结果如下图所示。

这里点击搜索到的第一个链接“设备接入IoTDA”,在左侧“设备侧开发”条目下的“使用MQTT Demo接入”中有“使用MQTT.fx检测”,这里的模拟器名称就是MQTT.fx,如下图所示。

这里在左侧导航条中可以看到“使用MQTT.fx检测”,点击这个条目项,右侧帮助文档在“连接鉴权”中可以看到“下载”的链接。如下图所示。

点击“下载”可以完成MQTT.fx的下载,这就是MQTT的模拟器,下载后的文件如下图所示。

下载后的文件通过双击,在每个界面中点击“下一步”即可完成安装,安装后在windows系统打开“开始”图标,可以搜索到“MQTT.fx”的应用图标,如下图所示。

这里双击搜索到的程序“MQTT.fx”的应用图标,出现的界面如下图所示。

在这个界面中可以完成华为云IoT设备的连接,不过这里需要先完成设置,再进行连接。在界面中点击“齿轮”图标进行设置,如下图所示。

这里需要设置的参数需要在华为IoT的云平台中进行查询。首先进入到华为IoT产品实例的“所有设备”界面,如下图所示。

在设备界面中,找到云捐助的设备“云捐助电子证件”,在当前设备后面有对应的“详情”按钮,如下图所示。

这里点击“详情”进入到“云捐助电子证件”的详情页面,可以看到页面中有“MQTT的连接参数”项,如下图所示。

这里点击“MQTT的连接参数”后面的“查看”按钮,就可以看到MQTT的连接参数。现在需要把连接参数填入到MQTT.fx模拟器设置中,当点击MQTT.fx启动界面的“齿轮”图标时,弹出的界面中左侧最底端有一个“+”(加号)按钮,如下图所示。

这里点击“+”(加号)按钮,右侧出现MQTT.fx连接参数的实例设置内容,把华为IoT产品实例设备详情页面中MQTT连接参数中的client_id复制到MQTT.fx连接参数设置内容的ClientID输入中,如下图所示。

这里MQTT连接参数中的port端口号保持不变,仍然使用1883,然后需要把华为IoT产品实例设备详情页面中MQTT连接参数中的hostname复制到MQTT.fx连接参数设置内容的“Broker Address”按输入中,如下图所示。

下面需要设置MQTT.fx模拟器连接的用户名和密码,把华为IoT产品实例设备详情页面中MQTT连接参数中的username和password复制到MQTT.fx连接参数设置内容的“username”和“password”的输入框中,设置MQTT.fx的username和password需要点击界面中部导航的“User Credentials”。如下图所示。

这些参数配置后,就完成了模拟器MQTT.fx的设置,点击“Apply”和“确定”就完成了MQTT.fx模拟器的配置。配置成功后,可以点击“齿轮”图标后面的connect连接按钮,如下图所示。

点击“连接”后当前的“Connect”按钮状态虚化,后面的“DisConnect”关闭按钮文字变得很明显,意思可以点击“DisConnect”关闭连接,此时连接已正常,从导航中的Log日志中可以看到连接的客户端id。如下图所示。

同时因为有了真实设备的存在,“云捐助电子证件”在华为IoT产品实例所有设备列表也由“离线状态”变成“在线状态”,如下图所示。

这里在华为IoT产品实例所有设备列表中的“云捐助电子证件”设备后面点击“调试”,如下图所示。

点击“调试”后再次进入到在线设备调试的页面,继续在产品的命令中输入属性的值,点击“发送”按钮,如下图所示。

点击“发送”按钮之后,在MQTT.fx模拟器的Log日志中可以看到“messageArrived”信息到达的字样,但是没有显示出数据,如下图所示。

在日志中的“messageArrived”信息到达的后面有一个“topic”字样,“topic”后面显示了一个地址,如下图所示。

对于客户端来说,如果需要显示返回的数据结果,需要开启订阅的功能,这个地址就是MQTT订阅服务器属性数据的地址,这里我们点击MQTT.fx模拟器界面的“Subscribe”选项卡,进入到MQTT.fx模拟器的订阅界面。

然后把日志中的topic主题后面的地址复制到“Subscribe”选项卡界面的输入框中,注意这个地址后面是request请求id是随机产生的,这里不能获取到,因此topic地址到command就停止了,后面使用#号结束。如下图所示。

把Log日志中的地址经过截取填入“Subscribe”的订阅界面后,可以点击输入地址后面的“Subscribe”的订阅按钮。如下图所示。

点击“Subscribe”的订阅按钮后,按钮变虚,然后回到网页中的华为IoT产品实例设备的调试页面,继续点击“发送”指令。如下图所示。

发送后,在IoT平台中可以看到发送的结果。如下图所示。

下面切换到MQTT.fx模拟器的“Subscribe”的订阅界面,就可以看到IoT平台发送指令携带的信息,如下图所示。


在实际设备中,mystar的属性变量可能就对应C语言操作硬件的变量,通过这个变量控制实际卡片中的功能,比如这里可以过mystar值决定云捐助爱心卡中亮几个灯。
MQTT.fx也可以把属性的改变上报到IoT平台,这里需要点击MQTT.fx模拟器的“Publish”选项卡,如下图所示。

当“云捐助电子证件”的mystar变量值发生变化时就需要上报给IoT平台,这里可以通过MQTT的产品文档查询属性上报的接口。如下图所示。

在MQTT的设计指南中,有API参数,在这里有使用MQTT的设备上报的相关示例,如下图所示。

图中的topic就是设备属性上报的地址,数据格式中需要指明产品服务的id,产品修改的属性,还有event_time的上报属性时间戳。这里把文档中的topic地址复制到MQTT.fx模拟器的Publish选项卡的输入框中,如下图所示。

复制接口后,这时有一个device_id需要把MQTT.fx模拟器Log日志中的device_id复制过去,如下图所示。

MQTT.fx模拟器中上报的地址填写好后,再进行上报参数的填写,其数据从MQTT文档中复制过来,然后只保留其中一条数据即可。如下图所示。

复制在services中保留一条数据,并改变service_id,这个service_id就是华为IoT平台产品实例中产品详情中创建过的服务列表,如下图所示。

这里服务列表中的名称就是service_id,把这个service_id复制到MQTT.fx模拟器的“Publish”选项卡中的参数设置内容中,并设置调用的properties属性名称,这里是mystar的捐赠星级,最后定义时间戳,如下图所示。

### 在MQTT.fx中设置结束上报属性后,就可以点击“Publish”按钮进行上报,如下图所示。

点击“Publish”按钮上报属性后,可以在华为云IoT平台产品实例“云捐助电子证件”设备的在线调试界面中看到上报的信息,如下图所示。

这样就使用MQTT.fx模拟器实现了华为IoT属性的上报和订阅,后续还会带来鸿蒙云捐助项目云技术方面的应用,欢迎关注。
相关文章:
鸿蒙项目云捐助第二十一讲云捐助项目物联网IoT模拟器的使用
鸿蒙项目云捐助第二十一讲云捐助项目物联网IoT模拟器的使用 在前面的内容中,已经实现了云捐助物联网IoT的产品及设备设置,并且使用华为云Iot设备的在线调试工具进行命令下发的调试,这里也可以通过华为Iot物联网提供的MQTT模拟器进行连接。 …...
大数据技术原理与应用期末复习-知识点(二)
HBASE Hbase与传统关系数据库的对比分析 1.数据类型: 关系型数据库采用关系模型 Hbase采用更简单的数据模型(把数据存储为未经解释的字符串) 2.数据操作: 关系数据库:增删改查等 Hbase:插入 查询 删…...
高效准确的PDF解析工具,赋能企业非结构化数据治理
目录 准确性高:还原复杂版面元素 使用便捷:灵活适配场景 贴心服务:快速响应机制 在数据为王的时代浪潮中,企业数据治理已成为组织优化运营、提高竞争力的关键。随着数字化进程的加速,企业所积累的数据量呈爆炸式增长…...
C/C++ 数据结构与算法【栈和队列】 栈+队列详细解析【日常学习,考研必备】带图+详细代码
一、介绍 栈和队列是限定插入和删除只能在表的“端点”进行的线性表,是线性表的子集,是插入和删除位置受限的线性表。 (操作受限的线性表) 二、栈 1)概念: 栈(stack)是一个特殊的线性表,是限…...
读书笔记~管理修炼-缄默效应
缄默效应:学会正确批评下属 员工明明犯了错误,却不及时告知你,总是拖到最后一刻无法弥补时才不得不承认出了问题——你遇到过这样的问题吗? 这其实是缄默效应在发挥作用。 在职场中,即使再扁平化的环境&…...
视频会议系统会前预约模块必须包含哪些功能?
视频会议系统会前预约模块必须包含哪些功能? 视频会议系统的会前预约模块是企业高效管理会议资源、提升会议效率的重要工具。一个完善的会前预约模块必须包含一系列功能,以确保会议的顺利进行和资源的合理分配。以下是对视频会议系统会前预约模块必须包…...
RabbitMQ中的Topic模式
在现代分布式系统中,消息队列(Message Queue)是实现异步通信、解耦系统组件的重要工具。RabbitMQ 是一个广泛使用的开源消息代理,支持多种消息传递模式,其中 Topic 模式 是一种灵活且强大的模式,允许生产者…...
tslib(触摸屏输入设备的轻量级库)的学习、编译及测试记录
目录 tslib的简介tslib的源码和make及make install后得到的文件下载tslib的主要功能tslib的工作原理tslib的核心组成部分tslib的框架和核心函数分析tslib的框架tslib的核心函数ts_setup()的分析(对如何获取设备名和数据处理流程的分析)函数ts_setup()自身的主要代码ts_setup()对…...
Ubuntu vi(vim)编辑器配置一键补全main函数
1.打开对应的配置文件 vi ~/.vim/snippets/c.snippets 2.按G将光标定位到文件末尾 3.按i进入插入模式 以tab键开头插入下的内容,空行也要加 tab键 4.:wq保存退出 5.再打开任意一个新的 .c文件后,插入模式输入 main 然后按tal键就能补全了...
验证码机制
偶然间看到了验证码机制,顺便总结一下: 首先,验证码是从后端生成的,随机生成; 【后端永远认为前端有可能会被伪造】 1.后端调用相关的绘图第三方类库,或是(平台PHP、.NET、java)系…...
【CVE-2024-56145】PHP 漏洞导致 Craft CMS 出现 RCE
大多数开发人员都同意,与 15 年前相比,PHP 是一种更加理智、更加安全和可靠的语言。PHP5早期的不良设计已让位于更好的开发生态系统,其中包括类、自动加载、更严格的类型、更理智的语法以及一大堆其他改进。安全性也没有被忽视。 register_globals一些老读者可能还记得和的…...
使用FakeSMTP创建本地SMTP服务器接收邮件具体实现。
以下代码来自Let’s Go further节选。具体说明均为作者本人理解。 编辑邮件模版 主要包含三个template: subject:主题plainBody: 纯文本正文htmlBody:超文本语言正文 {{define "subject"}}Welcome to Greenlight!{{end}} {{def…...
【网络安全】逆向工程 练习示例
1. 逆向工程简介 逆向工程 (RE) 是将某物分解以了解其功能的过程。在网络安全中,逆向工程用于分析应用程序(二进制文件)的运行方式。这可用于确定应用程序是否是恶意的或是否存在任何安全漏洞。 例如,网络安全分析师对攻击者分发…...
Oracle Database 21c Express Edition数据库 和 Sqlplus客户端安装配置
目录 一. 前置条件二. Win10安装配置Oracle数据库2.1 数据库获取2.2 数据库安装2.3 数据库配置确认2.4 数据库访问 三. Win10配置Oracle数据库可对外访问3.1 打开文件和打印机共享3.2 开放1521端口 四. 端口与地址确认4.1 查看监听器的状态4.2 Win10查看1521端口是否被监听4.3 …...
arcgisPro将面要素转成CAD多段线
1、说明:正常使用【导出为CAD】工具,则导出的是CAD三维多线段,无法进行编辑操作、读取面积等。这是因为要素面中包含Z值,导出则为三维多线段数据。需要利用【复制要素】工具禁用M值和Z值,再导出为CAD,则得到…...
相机内外参知识
已知相机的内外参数矩阵,可以求得相机在世界坐标系下的原点坐标。这里需要理解几个概念: 内参数矩阵(Intrinsic Matrix): 描述相机本身的属性,比如焦距、主点位置等。外参数矩阵(Extrinsic Matrix…...
从代币角度介绍solana账户体系
1、solana 的账户概念介绍 Solana的账户体系是其区块链的核心组成部分,它允许数据和价值在链上存储和转移。以下是Solana账户体系的一些关键特点: • 账户模型: • 在Solana上,所有数据都存储在所谓的“账户”中,类似…...
前端引入字体文件
1. 字体下载 阿里矢量图图标库地址 https://www.iconfont.cn/,页面打开后选中,素材库 > 字体库 左侧两个标签页可以切换,右侧放大镜图标可以搜索自己需要的字体 字体预览区域可以自行调整进行字体预览 右上角点击字体包下载,下…...
qemu启动后网络怎么设置?配合qemu-system-riscv64的命令设置
QEMU启动的时候,可以选择组网方式,一般有两种选择,user模式和tap模式 user模式就是用NAT,tap模式就是用bridge网桥模式。以前也有过一次实践:FreeBSD RISCV 在QEME中实践-网络配置_pkg.txz: not found-CSDN博客 user…...
如何测量分辨率
一、什么是分辨率? 分辨率指的是分清物体细节的能力。分辨率是一个成像系统还原空间频率的能力。一些人只是简单的用分辨率去描述极限分辨率,但是相机在在不同的对比度的情况下还原低,中和高频率的能力,也可以显示全面综合的信息。…...
突破不可导策略的训练难题:零阶优化与强化学习的深度嵌合
强化学习(Reinforcement Learning, RL)是工业领域智能控制的重要方法。它的基本原理是将最优控制问题建模为马尔可夫决策过程,然后使用强化学习的Actor-Critic机制(中文译作“知行互动”机制),逐步迭代求解…...
Zustand 状态管理库:极简而强大的解决方案
Zustand 是一个轻量级、快速和可扩展的状态管理库,特别适合 React 应用。它以简洁的 API 和高效的性能解决了 Redux 等状态管理方案中的繁琐问题。 核心优势对比 基本使用指南 1. 创建 Store // store.js import create from zustandconst useStore create((set)…...
UE5 学习系列(三)创建和移动物体
这篇博客是该系列的第三篇,是在之前两篇博客的基础上展开,主要介绍如何在操作界面中创建和拖动物体,这篇博客跟随的视频链接如下: B 站视频:s03-创建和移动物体 如果你不打算开之前的博客并且对UE5 比较熟的话按照以…...
深入理解JavaScript设计模式之单例模式
目录 什么是单例模式为什么需要单例模式常见应用场景包括 单例模式实现透明单例模式实现不透明单例模式用代理实现单例模式javaScript中的单例模式使用命名空间使用闭包封装私有变量 惰性单例通用的惰性单例 结语 什么是单例模式 单例模式(Singleton Pattern&#…...
【Go】3、Go语言进阶与依赖管理
前言 本系列文章参考自稀土掘金上的 【字节内部课】公开课,做自我学习总结整理。 Go语言并发编程 Go语言原生支持并发编程,它的核心机制是 Goroutine 协程、Channel 通道,并基于CSP(Communicating Sequential Processes࿰…...
自然语言处理——Transformer
自然语言处理——Transformer 自注意力机制多头注意力机制Transformer 虽然循环神经网络可以对具有序列特性的数据非常有效,它能挖掘数据中的时序信息以及语义信息,但是它有一个很大的缺陷——很难并行化。 我们可以考虑用CNN来替代RNN,但是…...
tree 树组件大数据卡顿问题优化
问题背景 项目中有用到树组件用来做文件目录,但是由于这个树组件的节点越来越多,导致页面在滚动这个树组件的时候浏览器就很容易卡死。这种问题基本上都是因为dom节点太多,导致的浏览器卡顿,这里很明显就需要用到虚拟列表的技术&…...
.Net Framework 4/C# 关键字(非常用,持续更新...)
一、is 关键字 is 关键字用于检查对象是否于给定类型兼容,如果兼容将返回 true,如果不兼容则返回 false,在进行类型转换前,可以先使用 is 关键字判断对象是否与指定类型兼容,如果兼容才进行转换,这样的转换是安全的。 例如有:首先创建一个字符串对象,然后将字符串对象隐…...
MySQL JOIN 表过多的优化思路
当 MySQL 查询涉及大量表 JOIN 时,性能会显著下降。以下是优化思路和简易实现方法: 一、核心优化思路 减少 JOIN 数量 数据冗余:添加必要的冗余字段(如订单表直接存储用户名)合并表:将频繁关联的小表合并成…...
【Android】Android 开发 ADB 常用指令
查看当前连接的设备 adb devices 连接设备 adb connect 设备IP 断开已连接的设备 adb disconnect 设备IP 安装应用 adb install 安装包的路径 卸载应用 adb uninstall 应用包名 查看已安装的应用包名 adb shell pm list packages 查看已安装的第三方应用包名 adb shell pm list…...
