当前位置: 首页 > news >正文

物联网系统搭建

实验项目名称

构建物联网系统

实验目的

掌握物联网系统的一般构建方法。

实验要求

1.构建物联网系统,实现前后端的交互。

实验内容:

  • CS模式+MQTT(不带数据分析处理功能)

实现智能设备与应用客户端的交互(智能设备发送数据在应用客户端上显示,应用客户端发送数据在智能设备上显示)

二、步骤

单击开始菜单,输入cmd,选择以管理员身份运行。(可以说一下powershell的区别)

  1. 在命令行里输入cd 并单击鼠标右键,会粘贴刚才复制的EMQX的bin目录,然后回车键,意为跳转目录至 E:\emqx-5.3.2-windows-amd64\bin
  2. 安装EMQX服务,执行命令:.\emqx.cmd install
    此命令只需要运行一次,以后再开机就不用执行它了。
  3. 卸载EMQX服务,执行命令:.\emqx.cmd uninstall
  4. 提示ChangeServiceConfig 成功,则说明服务安装成功
  1. 启动 emqx服务,输入命令:.\emqx.cmd console
  2. 启动 emqx服务,输入命令:.\emqx.cmd console
    提示EMQX 版本号 is running now!,则说明运行成功
  1. 浏览器输入localhost:18083回车,即可访问EMQX控制台,在登录页面输入初始化账号 :用户名:admin 密码:public
  2. 输入初始密码后,会跳转到修改密码页面,修改初始密码
  3. 单击确定后。出现如下界面,说明EMQX安装完成.
  4. 双击打开下载的MQTTX-Setup-1.9.7-x64.exe,开始安装MQTT客户端,选择安装目录,点击完成
  5. 不习惯英语话,可以先设置软件为中文。单击设置齿轮按钮,在第一项Language语音选择菜单中选择简体中文,整个界面即刻变成中文界面
  6. 测试连接:单击连接按钮,单击新建连接按钮,来创建一个新连接

接下来按如下操作步骤来创建连接

1)名称随便输入,我这里输入的是test

2Client ID默认即可

3)服务器地址为刚才创建的MQTT本地服务器,因为客户端在同一台电脑上,所以地址为127.0.0.1,当然你使用你的局域网的IP地址也是可以的,你可以使用ipconfig来查看.

4)端口号默认1883

5)然后单击右上角的连接按钮

6)我这里创建了两个来模拟发表方和订阅方,这里的ip地址是不一样的,一个表示本地回环地址,一个就是IP地址,如果使用云服务器这里就填写IP地址只是我这里的在自己的电脑上模拟的云服务器所以就可以使用本地回环地址.

7sub这里我是订阅方,订阅的主题Apub发布方发布A主题时,就会接收到该信息.

  1. node验证:由于node-red是基于node.js的,首先要确保机器上是否安装,使用指令查询node版本:node -v

  1. 如果没有版本信息,请先安装:node.js卸载、安装、配置详解
    如果已经安装,可点击跳转到下一步

  1. nodered安装:跳过SSL证书检查,执行命令:npm set strict-ssl=false
  1. 清除npm缓存,执行命令:npm cache clean –force
  1. Node-RED安装为全局模块有两种方式:

1)在cmd下执行以下命令:npm install -g --unsafe-perm node-red使用该种方式安装的为系统默认的版本。


2)指定安装的版本:npm install -g --unsafe-perm node-red@版本号

#示例

npm install -g  node-red@2.2.2

  1. 安装完成后,运行node-red的简单方法是在命令提示符下使用命令:node-red
  2. 键入后,在浏览器地址栏中输入http://127.0.0.1:1880/即可进入nodered

这个是简易版,但是我们的目标不是这个而是系统的搭建,要看这个地址,就要在傍边的dashboard里面的Layout的最右边的分享按钮点击它就行了

 

  1. APP的流程框图
  1. APP框图
  2. UrsPahoMqttClient1Broker就是你服务器的IP地址,字面翻译是指代理,比如移动就是一个代理商.一开始我使用的是MQTT官网的公共服务器但是它是有人数上限的可用的机会很少,使用的是broker.emqx.io,这个是一个域名其中emqx.io是顶级域名(或二级域名,取决于io的层级),而broker是该顶级域名下的一个子域名。但是我有自己部署的服务器,没有域名啊,但是域名和IP是通过DNS映射对应起来的,我就试了试IP,就成了.除了这里能写你返回设计这里点击拓展,侧面的属性也能改,两者容易冲突.
    计时器确保连接并显示状态
  3. 这里就是一个发布一个主题消息指挥灯亮灭并对话框显示告警信息.
  4. 这里是用的多行字符串来解析的,因为正好这里就有这个功能并且可以直接转成键值对然后寻找需要的数值,当然也可以使用Web客户端的,它有JSON的格式解析,需要用到API.总体用法差不多,格式转换.

调试与结果测试:
以下就是APP界面完美的实现我现在需要的功能

以下是当我当我按下灯打开时,发送给模拟智能设备的主题信息,和模拟前端需要发送给后端APP的数据.

心得体会: 主要写在实验过程中遇到什么问题及如何解决问题等

1,UsPahoMqttClient1 中的 Broker 指的是你服务器的 IP 地址,在字面上它被翻译为“代理”,就像移动运营商作为一个中介服务商那样。起初,我使用的是 MQTT 官网提供的公共服务器,但它有用户数量的限制,而且可用的机会很少。我那时使用的是 broker.emqx.io,这是一个域名,其中 emqx.io 是顶级域名(或者根据 .io 的层级划分,它可能是二级域名),而 broker 是这个顶级域名下的一个子域名。

但是,我自己部署了一台服务器,没有为它注册域名。不过,域名和 IP 地址是通过 DNS(域名系统)进行映射对应的。因此,我尝试直接使用了服务器的 IP 地址,结果成功了。

除了可以在指定的位置填写和修改 Broker 地址外,你还可以点击“拓展”按钮,在侧面的属性栏中也能进行修改。不过需要注意的是,这两个地方的修改容易产生冲突,因此在操作时需要格外小心。
2,WEB客户端的json转换,没有直接的json转换,所以我采用的是多行字符串转键值对.
3, 步骤一:安装MQTT客户端(模拟智能设备)

在这一步中,我使用了MQTT客户端工具EMQ来快速测试MQTT服务。通过这一工具,我能够模拟智能设备,向MQTT服务器发送数据,并接收来自服务器的消息。这一过程让我对MQTT的基本通信原理有了更直观的理解。同时,我也通过观看相关的视频教程,如“07-MQTTX客户端工具的使用”,进一步加深了对MQTT客户端使用的掌握。

步骤二:安装MQTT服务器EMQX(模拟云服务器)

接下来,我安装了MQTT服务器EMQX,以模拟云服务器的角色。EMQX是一款开源的、高性能的物联网消息中间件,它支持MQTT协议,能够处理大量的并发连接和消息传输。通过安装和配置EMQX,我成功搭建了一个MQTT服务器环境,为后续的智能设备与应用客户端之间的数据交互提供了基础。在安装过程中,我参考了EMQX的官方文档和视频教程,如“05-MQTT入门案例-EMQX环境搭建”,这些资源对我顺利完成安装和配置起到了很大的帮助。

步骤三:开发应用客户端(App Inventor + MQTT插件)

最后一步是开发应用客户端。我选择了Google App Inventor这一完全在线开发的Android编程环境,它使用积木式的堆叠法来完成Android程序,大大降低了编程的门槛。在开发过程中,我使用了App Inventor的MQTT插件来实现与MQTT服务器的通信。通过这一插件,我能够轻松地将应用客户端与MQTT服务器连接起来,实现数据的发送和接收。同时,我也观看了相关的视频教程和课程讲义,如“App Inventor-零基础Android移动应用开发”和“试用新发现的APPinventor的MQTT插件记录”,这些资源对我理解和掌握App Inventor及MQTT插件的使用起到了很大的帮助。

相关文章:

物联网系统搭建

实验项目名称 构建物联网系统 实验目的 掌握物联网系统的一般构建方法。 实验要求: 1.构建物联网系统,实现前后端的交互。 实验内容: CS模式MQTT(不带数据分析处理功能) 实现智能设备与应用客户端的交…...

微前端框架 Qiankun 的应用及问题分析

一、Qiankun 的核心应用场景与优势 多技术栈共存与灵活集成 Qiankun 支持主应用与子应用使用不同技术栈(如 Vue、React、Angular 等),通过 HTML Entry 方式接入子应用,无需深度改造子应用即可实现集成,降低了技术迁移成…...

设计模式-结构型模式-适配器模式

概述 适配器模式 : Adapter Pattern 是一种结构型设计模式. 作用 : 使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。 实现思路 : 适配器模式通过将一个类的接口转换成客户希望的另外一个接口来实现这一点。 这里的“接口”指的是类所提供的…...

6. 机器人实现远程遥控(具身智能机器人套件)

1. 启动控制脚本 远程作到 Raspberry Pi 中,并运行以下脚本: conda activate lerobotpython lerobot/scripts/control_robot.py \--robot.typelekiwi \--control.typeremote_robot登录笔记本电脑上,同时运行以下脚本: conda ac…...

多模态知识图谱融合

1.Knowledge Graphs Meet Multi-Modal Learning: A Comprehensive Survey 1.1多模态实体对齐 1.2多模态实体链接 研究进展&#...

windows 平台如何点击网页上的url ,会打开远程桌面连接服务器

你可以使用自定义协议方案(Protocol Scheme)实现网页上点击URL后自动启动远程桌面连接(mstsc),参考你提供的C代码思路,如下实现: 第一步:注册自定义协议 使用类似openmstsc://协议…...

基于Spark的热门动漫推荐数据分析与可视化系统的设计与实现(采用Python语言Django框架,Hadoop,spider爬虫等技术实现)

基于Hadoop的热门动漫推荐数据分析与可视化系统 基于Django的热门动漫推荐数据分析与可视化系统 1. 开发工具和实现技术 Pycharm, Python3.7,Django框架,Hadoop,Spark,Hive,spider爬虫(爬取动漫之家的动…...

8. 机器人模型训练与评估(具身智能机器人套件)

1. 训练 使用python lerobot/scripts/train.py可以进行机器人控制模型训练,一般需要几个小时,可以在outputs/train/act_lekiwi_test/checkpoints查看锚点数据,下面为一组示例参数: python lerobot/scripts/train.py \--dataset.…...

计算机网络-服务器模型

一.服务器模型 1.支持多客户端访问 //单循环服务器 socket bind listen while(1) { accept while(1) { recv/send } } close 注:该模式remvform为阻塞态,服务器将等待接收数据 2..支持多客户端同时访问 (并发能力) socket…...

DeepSeek大模型 —— 全维度技术解析

DeepSeek大模型 —— 全维度技术解析 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,可以分享一下给大家。点击跳转到网站。 https://www.captainbed.cn/ccc 文章目录 DeepSeek大模型 —— 全维度技术解析一、模型架构全景解析1…...

OSPF网络类型:NBMA与P2MP

一、NBMA网络 NBMA网络的特点 连接方式: 支持多台设备连接到同一个网络段,但网络本身不支持广播或组播。典型例子:帧中继、ATM。 DR/BDR选举: 由于网络不支持广播,OSPF需要手动配置邻居。 仍然会选举DR&#xff08…...

大数定律详解

前言 本文隶属于专栏《机器学习数学通关指南》,该专栏为笔者原创,引用请注明来源,不足和错误之处请在评论区帮忙指出,谢谢! 本专栏目录结构和参考文献请见《机器学习数学通关指南》 正文 🌟 一、大数定律的…...

2025生物科技革命:AI驱动的基因编辑与合成生物学新纪元

一、基因编辑技术的精准化突破 第三代基因编辑工具CRISPR-Cas12f的研发成功,将编辑精度提升至0.1碱基对级别。中国科学院团队利用该技术在灵长类动物模型中修复遗传性视网膜病变基因,治愈率达到92%。对比传统CRISPR-Cas9技术,新型编辑器脱靶…...

百度SEO关键词布局从堆砌到场景化的转型指南

百度SEO关键词布局:从“堆砌”到“场景化”的转型指南 引言 在搜索引擎优化(SEO)领域,关键词布局一直是核心策略之一。然而,随着搜索引擎算法的不断升级和用户需求的多样化,传统的“关键词堆砌”策略已经…...

macOS常用网络管理配置命令

目录 **1. ifconfig:查看和配置网络接口****2. networksetup:管理系统网络配置****3. ping:测试网络连通性****4. traceroute:跟踪数据包路径****5. nslookup/dig:DNS 查询****6. netstat:查看网络连接和统…...

Selenium 中 ActionChains 支持的鼠标和键盘操作设置及最佳实践

Selenium 中 ActionChains 支持的鼠标和键盘操作设置及最佳实践 一、引言 在使用 Selenium 进行自动化测试时,ActionChains 类提供了强大的功能,用于模拟鼠标和键盘的各种操作。通过 ActionChains,可以实现复杂的用户交互,如鼠标…...

【五.LangChain技术与应用】【31.LangChain ReAct Agent:反应式智能代理的实现】

一、ReAct Agent是啥?为什么说它比「普通AI」聪明? 想象一下,你让ChatGPT查快递物流,它可能直接编个假单号糊弄你。但换成ReAct Agent,它会先推理(Reasoning)需要调用哪个接口,再行动(Action)查询真实数据——这就是ReAct的核心:让AI学会「动脑子」再动手。 举个真…...

【HarmonyOS Next之旅】基于ArkTS开发(三) -> 兼容JS的类Web开发(七) -> JS动画(二)

目录 1 -> 动画动效 1.1 -> 创建动画对象 1.2 -> 添加动画事件和调用接口 2 -> 动画帧 2.1 -> 请求动画帧 2.2 -> 取消动画帧 1 -> 动画动效 通过设置插值器来实现动画效果。 说明 从API Version 6 开始支持。 1.1 -> 创建动画对象 通过cre…...

SpaCy处理NLP的详细工作原理及工作原理框图

spaCy处理NLP的详细工作原理及工作原理框图 spaCy处理NLP的详细工作原理 spaCy是一个基于Python的开源自然语言处理(NLP)库,它提供了一系列高效且易用的工具,用于执行各种NLP任务,如文本预处理、文本解析、命名实体识…...

Mysql中的常用函数

1、datediff(date1,date2) date1减去date2,返回两个日期之间的天数。 SELECT DATEDIFF(2008-11-30,2008-11-29) AS DiffDate -- 返回1 SELECT DATEDIFF(2008-11-29,2008-11-30) AS DiffDate -- 返回-1 2、char_length(s) 返回字符串 s 的字符数 3、round(x,d)…...

Linux下find命令的使用方法详解

文章目录 **一、基本语法****二、常用搜索条件****1. 按名称搜索****2. 按类型搜索****3. 按时间搜索****4. 按大小搜索****5. 按权限/所有者搜索** **三、组合条件(逻辑运算符)****四、执行操作****1. 直接输出(默认)****2. 删除…...

Day(19)--IO流(三)

文件加密 ps:^异或: 两边相同就是false 两边不同就是true 如果比较的是数字,那就会把它转换成为二进制,从右自左依次比较 总结:如果一个数字被异或两次,结果还是原来的数字 缓冲流 字节缓冲流 BufferedInputStream------字节缓冲输入流 BufferedOutputStream----字节…...

数据类型——long long

在C语言中,long long 类型是一种有符号的64位整数,其取值范围由二进制补码表示法决定。以下是具体数值及解释: 1. long long 的最大值 最大值(正数):9223372036854775807 计算方式:2^63 - 1 这是…...

网络安全通信架构图

🍅 点击文末小卡片 ,免费获取网络安全全套资料,资料在手,涨薪更快 在安全通信里面我经常听到的2个东西就是SSL和TLS,这2个有什么区别呢?以及HTTPS是怎么通信的?包括对称加密、非对称加密、摘要、…...

AMD(xilinx) FPGA书籍推荐

理论到实践,五年磨一剑 以应用为主,书中全部例程均来自工程实践;目的在于培养FPGA工程师良好的代码编写习惯,掌握vivado常用高级技巧。本书详细讲解了: (0)vivado操作基础从工程建立到bit/mcs文…...

考前冲刺,消防设施操作员考试最后一击

考前冲刺,消防设施操作员考试最后一击 考前冲刺阶段至关重要。首先要回归教材,快速浏览重点知识点,强化记忆。同时,对之前做过的错题进行集中复习,分析错误原因,避免在考试中再次犯错。进行全真模拟考试&a…...

【GoTeams】-3:构建api、重构错误码

本文目录 1. 构建api梳理调用关系api包的作用路由梳理注册Register代码语法 2. 重构错误码 1. 构建api 首先复制project-user,改名为project-api,放在总的路径下,然后在工作区中进行导入。 运行命令go work use .\project-api\新建工作区之…...

MuBlE:为机器人操作任务规划提供了逼真的视觉观察和精确的物理建模

2025-03-05,由华为诺亚方舟实验室、捷克技术大学和帝国理工学院联合开发的MuBlE(MuJoCo and Blender simulation Environment)模拟环境和基准测试。通过结合MuJoCo物理引擎和Blender高质量渲染,为机器人操作任务规划提供了逼真的视…...

基于STC89C52的4x4矩阵键盘对应键值显示测试

引言 在众多单片机应用系统中,用户输入功能至关重要。4x4 矩阵键盘因其布局紧凑、按键数量适中,能有效节省 I/O 口资源,成为常用的输入设备。STC89C52 作为一款经典的 8 位单片机,以其丰富的外设资源和简易的开发流程,为矩阵键盘的应用提供了良好平台。同时,LCD1602 作为…...

android13打基础: timepicker控件

public class Ch4_TimePickerActivity extends AppCompatActivity implements TimePickerDialog.OnTimeSetListener {private TextView tv_time; // 声明一个文本视图对象private TimePicker tp_time; // 声明一个时间选择器对象Overrideprotected void onCreate(Nullable Bund…...