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

物联网系统搭建

实验项目名称

构建物联网系统

实验目的

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

实验要求

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(不带数据分析处理功能) 实现智能设备与应用客户端的交…...

PostgreSQL中的事务隔离

1. 事务隔离的概念 在数据库管理系统中,事务隔离是一项重要的功能,它能确保在并发访问数据库时事务之间能够独立运行,不会相互干扰。数据库系统通常支持不同级别的事务隔离,用来满足不同应用程序之间的需求。 2. 事务隔离的种类…...

嵌入式硬件设计SPI时需要注意什么?

嵌入式硬件设计SPI时需要注意什么? 1. 硬件设计注意事项 关键点注意事项1. 信号完整性- 缩短SCK、MOSI、MISO的走线长度,避免反射干扰。- 使用屏蔽线或差分信号(高速场景)。- 阻抗匹配(特别是高频信号,如50Ω端接)。2. 电源与地线- 电源去耦:每个SPI芯片的VCC附近放置0…...

mysql新手常见问题解决方法总结

1. 安装与配置问题 1.1 无法安装MySQL Server MySQL Server安装失败是新手常见的问题之一,以下是具体原因及解决方案: 系统要求不满足:MySQL对操作系统有最低版本要求,如Windows 7 SP1及以上、macOS 10.13及以上。若系统版本过…...

Unity3D 资源加载与卸载策略详解

前言 在Unity3D开发中,资源加载与卸载(Asset Loading & Unloading)是优化游戏性能、减少内存占用、提升用户体验的关键环节。本文将详细探讨Unity3D中的资源加载与卸载策略,并提供相关的技术详解和代码实现。 对惹&#xff…...

AcWing 蓝桥杯集训·每日一题2025·5526. 平衡细菌

5526. 平衡细菌 题意 给定一个序列 ( a i ) (a_i) (ai​),每次操作可以选择一个位置 (p),令从 ( a p ) (a_p) (ap​) 开始的每个数都加上一个以 (1) 或者 (-1) 为公差的从 ( 1 / − 1 ) (1 / -1) (1/−1) 开始的等差数列。求最小化让序列归零的操作…...

Android15请求动态申请存储权限完整示例

效果: 1.修改AndroidManifest.xml增加如下内容: <uses-permission android:name="android.permission.MANAGE_EXTERNAL_STORAGE" /><uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /><uses-perm...

UniApp如何判断平台的多种方法(2025最新指南)

摘要&#xff1a;在UniApp跨平台开发中&#xff0c;精准判断运行环境是实现多端差异化的关键。本文将介绍6种判断平台的实用方法&#xff0c;涵盖编译时与运行时场景&#xff0c;助你轻松处理多端兼容问题。 一、为什么需要判断平台&#xff1f; 在UniApp跨平台开发中&#xf…...

unity学习62,尝试做第一个小游戏项目:flappy bird

目录 学习参考 1 创建1个unity 2D项目 1.1 2D项目模板选择 1.1.1 2D(built-in-Render pipeline) 1.1.2 universe 2D 1.1.3 这次选择 2D(built-in-Render pipeline) 1.2 创建项目 1.2.1 注意点 1.2.2 如果想修改项目名 2 导入美术资源包 2.1 下载一个flappy bird的…...

设计模式说明

23种设计模式说明 以下是常见的 23 种设计模式 分类及其核心思想、应用场景和简单代码示例&#xff0c;帮助你在实际开发中灵活运用&#xff1a; 一、创建型模式&#xff08;5种&#xff09; 解决对象创建问题&#xff0c;降低对象耦合。 1. 单例模式&#xff08;Singleton&…...

【STM32F103ZET6——库函数】11.捕获红外信号

目录 红外原理 数据码 引导码 连发码 配置捕获引脚 使能引脚时钟 配置定时器 使能定时器时钟 配置输入捕获 中断优先级分组 配置定时器4中断 定时器中断使能 使能定时器 重写定时器中断服务函数 清空定时器中断标志位 例程 例程说明 main.h main.c HongWai…...

unity调用本地部署deepseek全流程

unity调用本地部署deepseek全流程 deepseek本地部署 安装Ollama 搜索并打开Ollama官网[Ollama](https://ollama.com/download) 点击Download下载对应版本 下载后点击直接安装 安装deepseek大语言模型 官网选择Models 选择deepseek-r1&#xff0c;选择对应的模型&#xff0…...

Anaconda 部署 DeepSeek

可以通过 Anaconda 环境部署 DeepSeek 模型&#xff0c;但需结合 PyTorch 或 TensorFlow 等深度学习框架&#xff0c;并手动配置依赖项。 一、Anaconda 部署 DeepSeek 1. 创建并激活 Conda 环境 conda create -n deepseek python3.10 # 推荐 Python 3.8-3.10 conda activate…...

Mac OS升级后变慢了,如何恢复老系统?

我的一台Mac Air闲置很久了&#xff0c;原因是某次系统升级后用着会卡&#xff0c;有差不多10年没用了。今天想试着恢复一下出厂系统&#xff0c;目前看这条路可以走通。记录如下&#xff1a; 1、去哪里下载旧版系统&#xff1f; https://support.apple.com/zh-cn/102662 2、…...

AI绘画软件Stable Diffusion详解教程(6):文生图、提示词细说与绘图案例

文生图即以文字描述来生成图像&#xff0c;这是目前所有AI绘画软件的基本功能之一。要想画一副好的图片&#xff0c;除了选择好的模型&#xff0c;在文生图中&#xff0c;提示词特别关键。 一、什么是提示词&#xff08;Prompt&#xff09; 提示词又称创意、关键词、咒语、ca…...

SAP监控体系和机制

SAP监控体系 SAP监控体系是一个多层次、多维度的综合系统&#xff0c;旨在确保SAP系统的性能、可用性、安全性和稳定性。以下是SAP监控体系的主要组成部分&#xff1a; 1. 技术监控&#xff08;Technical Monitoring&#xff09; 目标&#xff1a;监控SAP系统的基础设施和技术…...

算法-贪心篇01-分发饼干

分发饼干 力扣题目链接 题目描述 假设你是一位很棒的家长&#xff0c;想要给你的孩子们一些小饼干。但是&#xff0c;每个孩子最多只能给一块饼干。 对每个孩子 i&#xff0c;都有一个胃口值 g[i]&#xff0c;这是能让孩子们满足胃口的饼干的最小尺寸&#xff1b;并且每块饼…...

SLAM评估工具安装及使用EVO(Ubuntu20.04安装evo)--缺少 onnx 库还有Pandas 版本不兼容解决

介绍一下我的是ubuntu20.04.机载电脑是orinnx&#xff0c;通过源码烧写的系统。 首先打开终端&#xff0c;输入 pip install evo --upgrade --no-binary evo 安装过程中出现如下问题 缺少 onnx 库还有Pandas 版本不兼容&#xff0c; ONNX&#xff08;Open Neural Network E…...

【YashanDB认证】yashandb23.3.1 个人版单机部署安装实践

YCA报名链接如下: YashanDB|崖山数据库系统YashanDB学习中心-YCA认证详情 目前免费 主要参考文档&#xff1a; 单机&#xff08;主备&#xff09;部署 | YashanDB Doc 另外还参考摩天轮文章&#xff1a; YashanDB 23.2.9.101 企业版安装步骤抢先看&#xff01; - 墨天轮 …...

ProfibusDP主站转ModbusTCP网关如何进行数据互换

ProfibusDP主站转ModbusTCP网关如何进行数据互换 在现代工业自动化领域&#xff0c;通信协议的多样性和复杂性不断增加。Profibus DP作为一种经典的现场总线标准&#xff0c;广泛应用于工业控制网络中&#xff1b;而Modbus TCP作为基于以太网的通信协议&#xff0c;因其简单易…...

正点原子[第三期]Arm(iMX6U)Linux移植学习笔记-2.1 uboot简介

前言&#xff1a; 本文是根据哔哩哔哩网站上“Arm(iMX6U)Linux系统移植和根文件系统构键篇”视频的学习笔记&#xff0c;在这里会记录下正点原子 I.MX6ULL 开发板的配套视频教程所作的实验和学习笔记内容。本文大量引用了正点原子教学视频和链接中的内容。 引用&#xff1a; …...

Qt 实现绘图板(支持橡皮擦与 Ctrl+Z 撤销功能)[特殊字符]

作业&#xff1a; 1&#xff1a;实现绘图的时候&#xff0c;颜色的随时调整 2&#xff1a;追加橡皮擦功能 3&#xff1a;配合键盘事件&#xff0c;实现功能 当键盘按 ctrlz的时候&#xff0c;撤销最后一次绘图 头文件.h #ifndef WIDGET_H #define WIDGET_H#include <QWidge…...

基于STM32的智能家居蓝牙系统(论文+源码)

1总体方案设计 本次基于STM32的智能家居蓝牙系统&#xff0c;其系统总体架构如图2.1所示&#xff0c;采用STM32f103单片机作为控制器&#xff0c;通过DHT11传感器实现温湿度检测&#xff0c;MQ-2烟雾传感器实现烟雾检测&#xff0c;光敏电阻实现光照检测&#xff0c;同时将数据…...

系统架构设计师—数据库基础篇—关系代数运算

文章目录 名词选择运算示例1示例2 投影示例1 笛卡尔积示例1 连接等值连接示例1 自然连接示例1 外连接左外连接右外连接完全外连接 名词 关系&#xff1a;二维表的表名。 元组&#xff1a;二维表中的一行&#xff0c;在数据库中称为记录。 属性&#xff1a;二维表中的一列&am…...

el-table一格两行;概率;find

样式&#xff1a; 根据概率表头关键代码&#xff1a;rateRanges&#xff1b; scope.row.targetHitTable.find((target:any) > target.targetHitRate > range.min && target.targetHitRate < range.max)!.targetHitNum &#xff08;1&#xff09;!.是TypeScri…...

前端跨域设置 withCredentials: true

在做登录认证的时候&#xff0c;会出现请求未登录的情况&#xff0c;查看请求头的时候发现并没有把登录时的cookie设置到第二次的请求头里面。查看资料才知道跨域请求要想带上cookie&#xff0c;必须要在ajax请求里加上 withCredentials: true 再次访问发现请求头可以携带cook…...

Vue 文件下载功能的跨域处理与前后端实现详解

在 Web 应用开发中&#xff0c;文件下载功能是常见需求。但由于跨域限制和认证机制的复杂性&#xff0c;实际开发中常遇到下载失败或权限错误等问题。本文将结合 Vue 前端和 Spring Boot 后端&#xff0c;详细介绍文件下载功能的实现与跨域问题的解决方案。 一、问题背景 在某…...

Ubuntu 下 nginx-1.24.0 源码分析 - ngx_conf_read_token - 详解(3)

详解&#xff08;3&#xff09; if (last_space) {start b->pos - 1;start_line cf->conf_file->line;if (ch || ch \t || ch CR || ch LF) {continue;}switch (ch) {case ;:case {:if (cf->args->nelts 0) {ngx_conf_log_error(NGX_LOG_EMERG, cf, 0,…...

私有云基础架构与运维(一)

私有云基础架构与运维&#xff08;OpenStackopenEuler版&#xff09; 项目一.OpenStack 云计算基础架构平台概述 任务1.1 安装部署虚拟化环境 通过安装 openEuler-22.09 操作系统来熟悉虚拟机的安装&#xff0c;在操作过程中熟悉计算机虚 拟化资源的分配管理。 1.1.1 VMware…...

代码随想录算法训练营第35天 | 01背包问题二维、01背包问题一维、416. 分割等和子集

一、01背包问题二维 二维数组&#xff0c;一维为物品&#xff0c;二维为背包重量 import java.util.Scanner;public class Main{public static void main(String[] args){Scanner scanner new Scanner(System.in);int n scanner.nextInt();int bag scanner.nextInt();int[…...