物联网系统搭建

实验项目名称

构建物联网系统

实验目的

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

实验要求

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.mzph.cn/news/897157.shtml

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

相关文章

从零开始用HTML、CSS和JavaScript制作贪吃蛇网页小游戏

〇、前言 贪吃蛇是一款经典的休闲游戏,在诺基亚手机时代风靡全球。 作为编程入门者,实现一个贪吃蛇游戏是学习Web前端技术的绝佳练习。 名人说:博观而约取,厚积而薄发。——苏轼《稼说送张琥》 创作者:Code_流苏(CSDN…

LeetCode1328

非常抱歉,我理解错了你的要求!现在我会严格按照你的要求重新组织内容,确保在代码段中不加入注释,并在代码逐行讲解中加入代码段。 LeetCode1328 目录 题目描述示例思路分析代码段代码逐行讲解复杂度分析总结的知识点整合总结 题…

STM32点亮LED灯

1.1 介绍: LED模块。它的控制方法非常简单,要想点亮LED,只要让它两端有一定的电压就可以;实验中,我们通过编程控制信号端S的高低电平,从而控制LED的亮灭。我们提供一个测试代码控制LED模块上实现闪烁的效果…

【华三】STP端口角色与状态深度解析

STP端口角色与状态深度解析:构建无环网络的基石 引言一、STP基础回顾二、端口角色详解1. 根端口(Root Port)2. 指定端口(Designated Port)3. 非指定端口(阻塞端口) 三、端口状态转换流程四、角色…

计算机毕业设计Python+Django+Vue3微博数据舆情分析平台 微博用户画像系统 微博舆情可视化(源码+ 文档+PPT+讲解)

温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 作者简介:Java领…

稚晖君级硬核:智元公司开源机器人通信框架AimRT入驻GitCode平台

在科技的浪潮中,机器人技术正以前所未有的速度发展。它们不再只是科幻小说中的概念,而是逐渐融入到我们的日常生活中,从工厂的自动化生产线到家庭的智能助手,机器人的身影无处不在。然而,随着机器人应用的日益复杂&…

[项目]基于FreeRTOS的STM32四轴飞行器: 四.LED控制

基于FreeRTOS的STM32四轴飞行器: 四.LED控制 一.配置Com层二.编写驱动 一.配置Com层 先在Com_Config.h中定义灯位置的枚举类型: 之后定义Led的结构体: 定义飞行器状态: 在Com_Config.c中初始化四个灯: 在Com_Config.h外部声明…

Ubuntu20.04双系统安装及软件安装(一):系统安装

Ubuntu20.04双系统安装及软件安装(一):系统安装 Ubuntu系统卸载Ubuntu20.04安装BIOS进入系统安装 许久没写博客了,今天开始重新回归了。首先记录我在双系统上重装Ubuntu20.04的安装过程记录以及个人见解。 Ubuntu系统卸载 参考双…

cursor+deepseek实现完整的俄罗斯方块小游戏

<!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><title>俄罗斯方块</title><style>body {margin: 0;display: flex;justify-content: center;align-items: center;height: 100vh;background: …

人工智能开发面经AI、大数据、算法

以下是一份AI算法开发岗位的面试面经&#xff0c;结合最新行业趋势和经典问题&#xff0c;涵盖技术解析与实战案例&#xff0c;供参考&#xff1a; 一、机器学习基础&#xff08;占比约30%&#xff09; 1. 过拟合与欠拟合的解决方案 问题&#xff1a;如何解决模型过拟合&…

【原创】Ollama Test API For Linux/MacOS/Unix

安装Json解析工具 Linux/Unix sudo apt-get install jq -yMacOS brew install jq -y设置环境变量 export IP"192.168.250.229" export PORT"8080" export MODEL"deepseek-r1:7b"检查Ollama版本 curl http://"$IP":"$PORT&qu…

【Git】基本指令

工作区、暂存区、版本库 工作区&#xff1a;是在电脑上你要写代码或文件的目录。暂存区&#xff1a;英文叫 stage 或 index。一般存放在 .git 目录下的 index 文件&#xff08;.git/index&#xff09;中&#xff0c;我们把暂存区有时也叫作索引&#xff08;index&#xff09;。…

从数据到决策,永洪科技助力良信电器“智”领未来

在数字经济浪潮汹涌的时代&#xff0c;数字化转型已成为企业增强竞争力、实现可持续发展的必由之路。良信电器&#xff0c;作为国内知名的电气设备制造企业&#xff0c;积极响应时代号召&#xff0c;携手永洪科技&#xff0c;共同开启了数字化转型的新篇章。 上海良信电器股份有…

带触屏笔记本关闭屏幕触控方法

以联想yogaPro16s2023为例 该笔记本显示器为触控屏&#xff0c;不想使用屏幕触控功能&#xff1b; 关闭方法如下&#xff1a; Win11与win10操作一样 鼠标放到开始&#xff0c;右键&#xff0c;选择&#xff0c;设备管理器 找到&#xff0c;人体学输入设备&#xff0c;符合H…

大模型——基于 DIFY 的自动化数据分析实战

基于 DIFY 的自动化数据分析实战 简介: 本文介绍如何使用DIFY搭建数据分析自动化流程,实现从输入需求到查询数据库、LLM分析再到可视化输出的全流程。基于经典的employees数据集和DIFY云端环境,通过LLM-SQL解析、SQL执行、LLM数据分析及ECharts可视化等模块,高效完成数据分…

中原银行:从“小机+传统数据库”升级为“OceanBase+通用服务器”,30 +系统成功上线|OceanBase DB大咖说(十五)

OceanBase《DB 大咖说》第 15 期&#xff0c;我们邀请到了中原银行金融科技部数据团队负责人&#xff0c;吕春雷。本文为本期大咖说的精选。 吕春雷是一位资历深厚的数据库专家&#xff0c;从传统制造企业、IT企业、甲骨文公司到中原银行&#xff0c;他在数据库技术与运维管理…

django各种mixin用法

在 Django 中,Mixin 是一种用于扩展类功能的设计模式。通过 Mixin,可以在不修改原有类的情况下,为其添加新的方法或属性。Django 中的 Mixin 广泛应用于视图(View)、表单(Form)、模型(Model)等组件中。以下是 Django 中常见 Mixin 的用法和示例: 一、视图(View)中的…

SpringBoot集成Netty实现Ws和Tcp通信

本教程将指导你如何在 Spring Boot 项目中集成 Netty&#xff0c;实现 WebSocket 和 TCP 通信。以下是详细的步骤和代码示例。 环境准备 在 你的pom.xml 中添加 Netty 依赖&#xff1a; <dependency><groupId>io.netty</groupId><artifactId>nett…

与中国联通技术共建:通过obdiag分析OceanBase DDL中的报错场景

中国联通软件研究院&#xff08;简称联通软研院&#xff09;在全面评估与广泛调研后&#xff0c;在 2021年底决定采用OceanBase 作为基础&#xff0c;自研分布式数据库产品CUDB&#xff08;即China Unicom Database&#xff0c;中国联通数据库&#xff09;。目前&#xff0c;该…

机器学习-随机森林解析

目录 一、.随机森林的思想 二、随机森林构建步骤 1.自助采样 2.特征随机选择 3构建决策树 4.集成预测 三. 随机森林的关键优势 ​**(1) 减少过拟合** ​**(2) 高效并行化** ​**(3) 特征重要性评估** ​**(4) 耐抗噪声** 四. 随机森林的优缺点 ​优点 ​缺点 五.…