物联网系统搭建

实验项目名称

构建物联网系统

实验目的

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

实验要求

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插件的使用起到了很大的帮助。

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SpringBoot优雅关机,监听关机事件,docker配置

Spring Boot 提供了多种方法来实现优雅停机(Graceful Shutdown),这意味着在关闭应用程序之前,它会等待当前正在处理的请求完成,并且不再接受新的请求。 一、优雅停机的基本概念 优雅停机的主要步骤如下: …

Docker 学习(二)——基于Registry、Harbor搭建私有仓库

Docker仓库是集中存储和管理Docker镜像的平台,支持镜像的上传、下载、版本管理等功能。 一、Docker仓库分类 1.公有仓库 Docker Hub:官方默认公共仓库,提供超过10万镜像,支持用户上传和管理镜像。 第三方平台:如阿里…

java环境部署

java环境部署 一、准备工作 jrejdkeclipse jdk下载:21和1.8-----官网:Oracle:Java 下载 |神谕 该处选择要依据自身的系统类型选择下载 idea的下载安装:IntelliJ IDEA | Other Versions 二、安装 三、环境配置 四、使用 五、i…

从0开始的操作系统手搓教程21:进程子系统的一个核心功能——简单的进程切换

目录 具体说说我们的简单RR调度 处理时钟中断处理函数 调度器 schedule switch_to 我们下面,就要开始真正的进程切换了。在那之前,笔者想要说的是——我们实现的进程切换简单的无法再简单了——也就是实现一个超级简单的轮询调度器。 每一个进程按照…

【办公类-99-03】养老护理初级考题抽取(2套大题抽1+7小套题抽2——共有42种可能)

背景需求 三八妇女节当天就要考养老护理实操了。这几天晚上都在疯狂练习。 考试时,两套大题抽一题。七套小题抽两题。会有多少种不重复的排列方式呢? 手机版本"通义万象” 有432。 这是我在公交车上用通义AI写的。 回家后继续用我熟悉的“星火讯…

Spring统一格式返回

目录 一:统一结果返回 1:统一结果返回写法 2:String类型报错问题 解决方法 二:统一异常返回 统一异常返回写法 三:总结 同志们,今天咱来讲一讲统一格式返回啊,也是好久没有讲过统一格式返…

Redis数据结构,渐进式遍历,数据库管理

1.Redis的其他数据结构 前面我们主要讲述了Redis中比较常用的集中数据结构String,List,Hash,Set,Zset,但这并不代表Redis只用这几种数据结构还有如Streams,Geospatial,Hyperloglog,…

DeepSeek DeepEP学习(二)normal notify dispatch

背景 相对于low latency的追求延迟,normal版本追求更高的带宽,传统all2all算子在发送到同一台机器的不同rank时,会存在重复token的发送,而DeepSeek团队使用的机型的机内带宽大于机间带宽,因此DeepSeek提出了两阶段的a…

立即释放 Mac 空间!Duplicate File Finder 8 重复文件高速清理工具

Duplicate File Finder 专业的 Mac 重复文件清理工具。查找并删除重复的文件、文件夹,甚至相似的照片。 不要让无用的文件占用磁盘上的宝贵空间。 整理你的 Mac。用最好的重复文件查找器来管理你的文件集合。 扫描任何磁盘或文件夹 主文件夹、照片/音乐库、外部磁…

一个前端vue3文字hover效果

效果 组件代码 <template><span class"word-text" :style"[{ transitionDuration: ${props.speed}ms }]"><slot></slot></span> </template><script setup> const props defineProps({// 动画速率 单位msspee…

数据结构 常见的排序算法

&#x1f33b;个人主页&#xff1a;路飞雪吖~ &#x1f320;专栏&#xff1a;数据结构 目录 &#x1f33b;个人主页&#xff1a;路飞雪吖~ 一、插入排序 &#x1f31f;直接插入排序 &#x1f31f;希尔排序 二、选择排序 &#x1f31f;选择排序 &#x1f31f;堆排序…

【微信小程序】每日心情笔记

个人团队的比赛项目&#xff0c;仅供学习交流使用 一、项目基本介绍 1. 项目简介 一款基于微信小程序的轻量化笔记工具&#xff0c;旨在帮助用户通过记录每日心情和事件&#xff0c;更好地管理情绪和生活。用户可以根据日期和心情分类&#xff08;如开心、平静、难过等&#…

SD-WAN解决方案架构(SD WAN Solution Architecture)

简介 SD-WAN&#xff08;软件定义广域网&#xff09;是一种新型的网络技术&#xff0c;它将传统的广域网&#xff08;WAN&#xff09;与现代化的软件定义网络&#xff08;SDN&#xff09;技术相结合&#xff0c;提供更智能、更灵活的网络管理方式‌。SD-WAN通过软件程序配置分…

【Manus资料合集】激活码内测渠道+《Manus Al:Agent应用的ChatGPT时刻》(附资源)

DeepSeek 之后&#xff0c;又一个AI沸腾&#xff0c;冲击的不仅仅是通用大模型。 ——全球首款通用AI Agent的破圈启示录 2025年3月6日凌晨&#xff0c;全球AI圈被一款名为Manus的产品彻底点燃。由Monica团队&#xff08;隶属中国夜莺科技&#xff09;推出的“全球首款通用AI…

Manus AI Agent介绍总结

1 总结 Manus是什么&#xff1f;Manus是全球第一款通用Agent产品&#xff0c;可以解决各类复杂多变的任务。 Manus能做什么&#xff1f;你提出问题和需求&#xff0c;Manus就能通过独立思考和系统规划&#xff0c;在自己的虚拟环境中灵活调用各类工具——编写并执行代码、智能…

TensorFlow深度学习实战(10)——迁移学习详解

TensorFlow深度学习实战(10)——迁移学习详解 0. 前言1. 迁移学习1.1 迁移学习基本概念1.2 迁移学习的重要性1.3 ImageNet1.4 迁移学习流程2. Inception V3 架构3. 构建迁移学习模型小结系列链接0. 前言 迁移学习( Transfer Learning )是一种利用从一项任务中获得的知识来解…

【长安大学】苹果手机/平板自动连接认证CHD-WIFI脚本(快捷指令)

背景&#xff1a; 已经用这个脚本的记得设置Wifi时候&#xff0c;关闭“自动登录” 前几天实在忍受不了CHD-WIFI动不动就断开&#xff0c;一天要重新连接&#xff0c;点登陆好几次。试了下在网上搜有没有CHD-WIFI的自动连接WIFI自动认证脚本&#xff0c;那样我就可以解放双手&…

【Day9】make/makeFile如何让项目构建自动化起飞

【Day9】make/makeFile如何让项目构建自动化起飞 使用make命令编写makefile文件依赖管理增量构建makefile注释&#xff1a;#makefile其他语法 make/makefile递归式工作过程 在Linux中&#xff0c;项目自动化构建是指使用一系列工具和脚本来自动执行软件项目的编译、测试、打包和…

验证测试 .NET 10 预览版的 Windows 窗体中的剪贴板新增功能

前言 在 .NET 10 中&#xff0c;Windows Forms 对剪贴板功能进行了更新&#xff0c;引入了新的 API 以提高类型安全性和避免使用 BinaryFormatter 带来的安全风险。 安装SDK 首先访问.NET 10.0.0-preview链接&#xff0c;下载.NET 10.0.0-preview.1版本SDK&#xff0c;然后…

攻防世界WEB(新手模式)19-file_include

先进行代码分析 include("./check.php");&#xff1a;包含并执行当前目录下的check.php文件&#xff0c;通常用于引入一些通用的函数、类或配置信息。if(isset($_GET[filename]))&#xff1a;检查是否通过 GET 请求传递了名为filename的参数。如果传递了filename参数…