萤火虫公司智能家居管理系统的设计与实现
开发背景当前,中国正处于数字化转型和高质量发展的关键时期。同时,物联网和云计算技术的快速发展也为智能家居领域提供了机遇。基于web的智能家居物联网管理平台应运而生,以满足用户需求并推动行业发展[1]。数字化转型和高质量发展对智能家居提出了新要求。作为数字社会的重要组成部分,智能家居系统必须适应变革中的用户需求。通过基于web的管理平台,用户可以远程控制家庭设备,方便快捷地管理家居环境[2]。其次,
摘 要
随着互联网和物联网技术的快速发展,智能家居系统已经成为人们生活中越来越重要的一部分。就目前的研究现状而言,智能家居系统已经取得了一些进展,但仍有许多挑战需要进一步改进,如用户友好的界面设计和系统安全性。因此,本项目旨在探索一种基于网络的智能家居管理系统,以解决当前智能家居系统中存在的问题,提高系统的整体性能和用户体验。使用的主要技术是网络开发,实现智能家居设备的远程控制,即用户可以通过网络界面远程控制和管理智能家居设备。通过对现有技术的整合和优化,提高了智能家居系统的智能化水平和用户体验,在一定程度上解决了当前智能家居系统存在的问题,具有一定的实际应用和推广价值。
关键词:物联网;智能家居;Web;管理系统
ABSTRACT
With the rapid development of Internet and Internet of Things technology, smart home system has become an increasingly important part of people's life. Based on the current research status, smart home systems have made some progress, but there are still many challenges that need further improvement, such as user-friendly interface design and system security. Therefore, this project aims to explore a network-based smart home management system to solve the problems existing in current smart home systems, improve the overall performance and user experience of the system. The main technology used is network development, which enables remote control of smart home devices. Users can remotely control and manage smart home devices through a network interface. By integrating and optimizing existing technologies, the intelligence level and user experience of smart home systems have been improved, which to some extent solves the problems existing in current smart home systems and has certain practical application and promotion value.
Key words: Internet of Things; Smart home; Web; Management system
目 录
第1章系统概述
1.1开发背景
当前,中国正处于数字化转型和高质量发展的关键时期。同时,物联网和云计算技术的快速发展也为智能家居领域提供了机遇。基于web的智能家居物联网管理平台应运而生,以满足用户需求并推动行业发展[1]。
数字化转型和高质量发展对智能家居提出了新要求。作为数字社会的重要组成部分,智能家居系统必须适应变革中的用户需求。通过基于web的管理平台,用户可以远程控制家庭设备,方便快捷地管理家居环境[2]。其次,物联网技术的普及为智能家居带来了更多可能性。通过连接各种家庭设备,基于web的管理平台可以实现设备之间的信息交换和联动操作。用户可以通过电脑、平板等终端实现家庭设备的远程控制和监测,提升家庭管理的智能化水平。此外,云计算技术的发展也为基于web的智能家居物联网管理平台提供了强大支持。通过云计算平台,智能家居系统可以存储和处理大量数据,并进行智能分析和学习,从而为用户提供个性化的服务和推荐。这种个性化服务可以根据用户的偏好和需求,自动调节设备设置和场景联动,提升用户体验[3]。
基于Web的智能家居物联网管理平台结合了数字化转型、物联网和云计算技术的优势,提供了便捷、智能、个性化和安全化的家庭管理体验,满足了用户在数字化时代的个性化需求。
1.2开发目标
随着人们对更好生活的追求,智能家居变得越来越流行。但传统智能家居系统存在使用复杂、个性化服务不足等问题,限制了市场普及。为解决这些问题,该论文提出了一种基于web的智能家居物联网管理平台,旨在让用户享受方便、智能、个性化和安全的家庭管理体验。
该平台是一个Web管理端后台,管理员可以通过浏览器实时查看家中各种智能设备的状态,如智能灯具、光照感应等,同时可以远程控制这些设备的开关、温度调节等功能。
1.3相关技术
要开发一个基于Web的智能家居管理系统,需要从前端界面开发经历一系列步骤[4]。首先,需要确保所有智能设备都能够连接到网络,并且支持HTTP或其他适合的通信协议,以便实现实时数据交换。接下来在LINUX云服务器上配置GO环境,这是为了开发后端服务,包括接口的设计与实现,这些API将处理来自前端的请求、设备状态更新等任务。同时,后端还需要实现HTTP通信逻辑,以支持与智能设备之间的实时消息传递。
在数据库方面,将使用MySQL来创建必要的表和关系,设计一个既能满足当前业务需求又具有一定扩展性的数据模型是非常重要的。这将为存储用户信息、设备状态、历史记录等数据提供支持[5]。最后,在前端界面开发阶段,将使用HTML和CSS来设计用户界面的布局和样式,确保用户交互的直观性和友好性。通过编写JavaScript代码,我们可以实现前端与后端API的交互逻辑,使得用户能够轻松地控制智能设备、查看设备状态和日志记录等。
第2章系统分析
2.1需求分析
2.1.1功能需求
随着计算机技术的发展和网络技术的日益成熟,通过网络进行信息交流已成为一种快捷的交互方式。智能手机和电脑已经遍及每家每户,智能家居后端管理系统分为移动用户端和系统管理后台,用户端和系统管理后台都在电脑端运行的[6]。
通过分析,智能家居后端管理系统具有以下功能:
(一) 界面设计雅致、方便、迅捷、操作灵活,,树立良好软件形象。
(二) 登录和退出功能,去除冗余复杂的登录注册流程,登陆时间大大缩短。
(三) 成功登录后,用户和管理员可以查看后台相关数据。
(四) 用户管理:查看用户、添加用户、修改用户、删除用户等。
(五) 设备管理:查看设备、添加设备、控制设备等。
(六) 日志管理:查看日志、删除日志等。
2.1.2性能及安全需求
(一)性能需求
①响应时间:系统对用户操作的响应时间应在1秒内,确保用户可以获得近乎实时的交互体验。对于设备状态更新等关键操作,响应时间应进一步缩短。
②并发处理能力:随着智能家居设备数量的增加,平台应能够处理高并发请求,保证在多用户同时操作时系统的稳定性和响应速度。
③数据处理效率:系统应具备高效的数据处理能力,能够快速处理和分析来自智能家居设备的大量数据,及时反馈给用户。
④可扩展性:随着用户数量和设备数量的增长,系统应能够方便地进行水平或垂直扩展,以满足不断增长的性能需求。
(二)安全需求
①数据加密:在数据传输过程中,所有用户数据应使用SSL等加密协议进行加密,防止数据被截获和篡改。
②身份验证与授权:系统必须实现强大的用户身份验证机制,如多因素身份验证,并确保只有授权用户才能访问系统。访问控制器(RBAC)的角色应该为具有不同角色的用户执行,以确保用户只能访问其权限范围内的数据和任务。
③输入验证与防注入:确保用户已登录以验证系统安全性非常重要,使用由所有输入源确认的SQL注入和XSS脚本(XSS)。此用法使用过滤、删除、确定条目类型、条目长度和参数。该系统禁止使用不良用户,并保护系统免受可能的风险。
④安全审计与日志:为了确保系统的安全性和稳定性,必须记录详细的安全审计日志,包括用户登录、操作记录和异常事件。这有助于及时发现和解决安全问题,有助于问题跟踪和安全分析。审核日志记录系统的活动历史,并为系统管理员提供关键信息和数据支持,以便及时做出响应,保护系统免受潜在威胁和攻击。
⑤数据备份与恢复:定期备份数据,防止数据因为服务器宕机或其他原因而丢失。
2.2可行性分析
(一)技术可行性
①技术成熟度:Web开发技术已经非常成熟,相关的前端开发框架和后端开发语言也已经趋于稳定。市场上存在大量的Web开发工具和框架,如HTML、CSS、JS等前端技术,以及Golang、HTTP等后端开发语言和框架[7]。
②技术难度:需要具备一定的前端和后端开发技能,同时需要熟悉相关的Web开发技术和工具。需要有一定的架构和编程技术水平。
③技术风险:全面的风险评估所需技术的稳定性和安全性得到了广泛的验证和认可。
(二)经济可行性
购买一台低端高性能Linux服务器使用免费或开源的前端框架和后端开发语言[8]。不需要额外的软件成本,选择免费的数据库系统如MySQL或PostgreSQL,不需要额外的软件成本,所以经济上是可行的。
(三)市场可行性
研究表明,智能家居市场呈现持续增长趋势,消费者对智能生活方式的需求不断增加。尤其是在年轻人和高收入群体中,人们对智能家居产品的关注程度更高。用户对智能家居管理系统的需求主要集中在便利性、安全性、能效和舒适性上。希望通过智能设备实现远程控制、自动化场景设置、能源管理和安全监控,提高家庭生活质量,预计未来几年将保持高增长率,市场可行性比较友好。
2.3业务流程图
通过绘制业务流程图来描述智能家居管理系统处理过程。智能家居管理系统具体业务流程如 2-1 所示。
图 2-1 业务流程图
第3章系统设计
3.1架构设计
本平台的架构设计关键在于确保系统的可扩展性、安全性和用户友好性。以下是智能家居管理系统的一个详细的架构设计方案:
系统可以分为四个主要部分:通讯协议层、后端服务层、数据存储层和前端展示层。
通讯协议层:负责设备与系统前后端的数据交换,通常使用HTTP协议。
后端服务层:核心业务逻辑处理,包括设备管理、用户管理、数据处理等。
数据存储层:存储用户数据、设备状态、日志记录等信息。
前端应用层:提供用户界面,允许用户监控和控制智能家居设备。
总体架构如图3-1所示。
图3-1 系统架构图
3.1.1通讯协议层
HTTP:HTTP是一种已经市场成型的通用网络协议,在通讯层中不需要过多的设计与编写该协议,为了更简单快速地实现项目,只需简单配置,HTTP协议拿来即用,通讯层位于前端和后端之间,前端的网络协议与后端应相对应,对于前端应用,使用HTTP与后端服务保持实时通信,实现即时状态更新和控制,选择HTTP作为通讯协议,因为它轻量、易于实现,且非常适合物联网场景,通讯层的架构如图3-1所示。
图3-2 通讯层架构图
3.1.2后端服务层
系统的后端服务层是整个系统的核心组成部分,承担着系统运行的关键职责和根本支柱的角色后端服务层的任务,其一,负责接收来自前端的HTTP请求,并根据请求的路由信息将其分发到相应的处理函数或模块中进行处理,根据业务需求进行相应的业务逻辑处理,包括数据处理、计算、验证、权限控制等。其二,与数据库进行数据交互,这包括数据的读取、插入、更改和删除等操作,涉及到SQL查询、事务管理、数据库连接池管理等,确保对数据库的操作能够高效、稳定地进行。另外,确保系统安全性的责任包括用户身份验证、数据加密、防止SQL注入、防止跨站脚本攻击(XSS)等。
(一)JSON传输格式:JSON(JavaScript Object Notation)是一种流行的轻量级http数据交换格式,由于易于理解和编写的文本形式表示数据,用于前后端之间的数据传输和存储。JSON格式是由键值对组成,其中键是字符串,值可以是任意数据类型,如数字、字符串、布尔值、数组、对象等数据类型,JSON格式如图3-3所示。为了减少数据传输时的网络流量,提高数据传输的效率,在前端,可以使用JavaScript的内置方法JSON.stringify()将JavaScript对象转换为JSON字符串;在后端,可以使用Golang提供的JSON解析库将数据转换为JSON格式,最后通过HTTP请求将JSON数据发送到后端,或者从后端接收JSON数据并在前端进行解析和处理。
图3-3 JOSN格式图
(二)业务逻辑处理
业务逻辑层(Business Logic Layer)是软件系统中的一个重要组成部分,负责实现系统的业务逻辑和规则,处理用户请求并产生相应的结果,使用层级调用处理的逻辑关系,处理包括设备查看与控制、用户管理、数据处理和分析等。
(三)数据库操作处理
GORM(Golang ORM)是一个基于 Go 语言的对象关系映射(ORM)库,目的是简化在 Go 语言项目中进行数据库操作的流程。使用结构体来定义数据库表的模型,结构体模型如图3-4所示,并利用丰富的功能,如自动迁移、CRUD 操作、查询构建器、事务支持、关联关系定义等,来轻松实现数据库操作。
图3-4 结构体模型图
(四)后端项目代码目录结构
脚手架就是一种快速搭建项目框架代码和文件结构的基础工具,就像是一座搭建房屋的脚手架架子。在建房子的过程中,搭建脚手架是第一步,为工人提供了一个稳固的平台,让他们能够方便地在上面工作。类似地,软件开发中的脚手架也是一样,它为开发者提供了一个基础的框架和结构,让他们能够快速搭建起一个项目的基础架构,然后再在这个基础上进行具体的开发工作,就像在房屋的脚手架上搭建房屋一样。这样一来,开发者就能够更快速、更高效地完成项目的开发工作。后端脚手架如图3-5所示。
图3-5 后端脚手架图
该项目命名为IoT-SmartHome的项目,其代码目录结构和描述如下表3-1所示:
表3-1 代码目录结构
目录 | 描述 |
api | 与 API 相关的代码文件,接收来自前端的请求并调用模型层的函数。 |
middleware | 用于处理跨域资源共享(CORS)和 JSON Web Tokens(JWT)的中间件代码。 |
model | 与数据模型相关的代码文件,包括数据库连接、数据模型定义以及与数据库交互的代码。 |
db.go | 数据库连接和数据模型定义等与数据库交互相关的代码。 |
router | 路由相关的代码文件。 |
router.go | 路由的定义和设置,将 URL 路径映射到处理函数。 |
utils | 一些工具函数或辅助函数,包括用于统一管理应用程序中错误消息的代码。 |
go.mod | Go 语言项目的模块文件,用于管理项目的依赖关系。 |
main.go | 主程序入口文件,包含项目的启动代码和主要逻辑。 |
3.1.3前端展示层
前端应用提供用户界面,使用户能够轻松地监控和控制家中的智能设备。使用现代Html、CSS、JavaScript框架构建网页,提高用户体验。
HTML(超文本标记语言):HTML是一种标记语言,常用于搭建网页结构,定义页面的结构和内容。在前端展示方面,HTML描述了页面的各个部分、布局和组织结构,如段落、标题、表格、图片等。HTML提供了多样的标签和属性,用于创建不同类型的页面布局和内容展示。
CSS(层叠样式表):CSS是一种样式表语言,常用于美化网页。它定义了页面元素的外观和样式。通过CSS,开发人员可以调整页面元素的颜色、字体、大小、间距、背景等样式属性,并且能够规划页面的布局和排版。CSS的应用可以增强页面的吸引力、可读性和可访问性,同时也能提升用户体验。
JavaScript(JS):JavaScript是一种脚本语言,用于实现网页的交互功能。它赋予了网页拥有动态性和交互性。在前端展示方面,JavaScript的主要作用是处理用户的交互操作,比如点击、输入、滚动等事件,并根据用户的行为动态改变页面的内容、样式和行为。此外,JavaScript还能与后端服务器进行数据通信,实现异步加载、表单验证等功能。
HTML与CSS和JavaScript等技术的结合使用,可以实现丰富多样的网页效果和交互功能,利用HTTP实现与后端的实时通信,保证界面数据的即时更新。确保应用在各种设备上(如手机、平板、PC)的界面均有良好的显示效果。
3.1.4数据存储层
数据库是存储和管理数据的重要的工具,对于系统和应用程序来说是不可或缺的一部分。根据需求分析,决定使用Mysql作为数据库,一款开源的关系型数据库管理系统(RDBMS),被广泛应用于各种场景和行业,包括Web开发、数据开发,可以免费获取并在各种操作系统上运行,MySQL提供了许多强大的功能和工具,可以满足各种复杂的数据管理和处理需求。
3.2权限设计
3.2.1权限分类
在词典中,权限指的是行使权利的限制和范围。在软件系统中,权限通常表示用户在系统内可以访问哪些数据、页面,以及可以执行哪些操作的限制。权限主要可以分为数据权限、页面权限、操作权限三类。
(一)数据权限
根据账号所在组织机构树的位置来确定用户可以访问的数据范围,然后将这种数据权限转化为页面权限:这意味着将用户可以查看的数据在页面上进行隔离,给予用户相应的页面权限,以便用户只能查看到对应的数据。这样一来,相同功能的界面会被分成多个页面,它们的功能相同,但数据不同。
(二)页面权限
页面权限指的是用户登录系统后可以看到哪些页面的权限,通常情况下通过导航栏的功能模块来控制。以本系统的root和用户两个角色为例,root可以对用户的资源进行修改删除,但用户不能对root或者其它同级的用户进行资源控制。
(三)操作权限
操作权限就是用户在页面上能够执行的具体操作,比如新增、修改、删除等。在页面设计中,功能按钮集合代表页面上最主要的功能按钮。按照当前的设计理念,用户所见即所能操作,如果用户没有某个操作的权限,页面上就不会显示对应的功能按钮,这样可以避免给用户带来额外的困扰。从大的方面来说页面权限和操作权限可以统称为功能权限。
3.2.2 SAAS权限设计
系统使用什么样的权限模型是根据该系统的业务需求所决定的,通过具体的分析与考量,本系统使用数据权限为主的方式来完成设计目标。SAAS(Software as a Service,即软件即服务)权限通常指的是在SAAS应用程序中管理和控制用户对系统资源和功能的访问权限的机制,该权限设计贴合本系统的权限要求,即满足了数据权限,又可以顺便实现了操作权限,以下讲述SAAS权限设计过程。
权限设计的前提是合理的角色设计,由于考虑到部分数据权限需要通过组织结构来进行控制,所以在梳理角色时也分为了组织架构角色梳理和诊所内部角色梳理两个阶段,该组织架构如图3-6所示。
图3-6 SAAS组织架构图
组织架构解释说明:
root用户是系统开发单位所有者持有,即本公司对该系统拥有最高的管理范围,用户指的是SAAS系统的租户,该用户的权限只能行使自身的资源控制范围,无法对其他同一角色的资源进行干预,如对其他用户的设备进行访问与控制。
3.3功能模块设计
(一)主页模块
①数据统计:该模块用于显示系统中的关键数据统计信息,例如用户数量、设备数量、在线设备数量等,以便管理员和用户快速了解系统的整体情况[9],该模块的功能流程图如3-7所示。
图3-7 主页模块功能流程图
(二)用户管理模块:
①用户信息管理:该模块是对用户信息的增加、删除、修改和查询等功能。管理员可以通过该模块进行用户管理,包括添加新用户、删除已有用户、修改用户的个人信息(如用户名、地址信息)以及查询用户信息,用户模块的功能流程图如3-8所示。
图3-8 用户模块功能流程图
(三)设备模块:
①设备查看:允许用户查看系统中该用户下的所有设备的状态、属性和操作信息。用户可以浏览设备列表,了解设备的基本信息,例如设备名称、类型、当前状态等。
②设备控制:允许用户对设备进行控制操作,例如打开或关闭设备、调节设备参数等。用户可以通过界面上的按钮、滑块或文本框等交互元素来与设备进行交互,实现对设备的远程控制[10],设备模块的功能流程图如3-9所示。
图3-9 设备模块功能流程图
(四)日志模块:
①设备日志查看:允许用户查看设备产生的日志信息,包括设备的运行状态、事件记录等。
②日志清理:允许管理员对设备日志进行清理,释放系统存储空间。
日志模块的功能流程图如3-10所示。
图3-10 日志模块功能流程图
智能家居管理系统整体模块如图3-11所示。
图3-11 系统功能模块图
3.4数据库设计
3.4.1数据库E-R图
智能家居管理系统一共有 4 个实体表,分别是用户表,设备表,类型表,日志表。
用户实体的E-R图如3-12所示。
图3-12 用户E-R图
设备实体的E-R图如3-13所示。
图3-13 设备E-R图
类型实体的E-R图如3-14所示。
图3-14 类型E-R图
日志实体的E-R图如3-15所示。
图3-15 日志E-R图
系统E-R 图如3-16所示。
图3-16 系统E-R图
3.4.2数据库表设计
数据库表设计是软件设计中非常重要的一部分,它定义了系统中需要存储的数据结构和数据之间的关系[11]。智能家居管理系统使用MYSQL数据库创建了名为db_iot的数据库实例,该数据库被存储在/var/lib/的路径下,其中数据被存储在/var/lib/mysql文件中。在该数据库中计划创建4张数据表,每张表的表结构设计情况如下。
表3-2 用户信息表(user)
字段名 | 数据类型 | 长度 | 备注 |
user_id | int | 11 | 用户ID |
user_name | varchar | 255 | 用户名,主键,用户账号 |
pwd | varchar | 255 | 密码 |
address | varchar | 255 | 地址 |
表3-3 设备信息表(device)
字段名 | 数据类型 | 长度 | 备注 |
device_id | int | 11 | 设备ID,主键 |
device_name | varchar | 255 | 设备名 |
online | varchar | 255 | 是否在线 |
switch_status | varchar | 255 | 地址 |
device_type | varchar | 255 | 设备类型,外键 |
user_name | varchar | 255 | 用户名,外键 |
表3-4 设备类型表(device_type)
字段名 | 数据类型 | 长度 | 备注 |
type_id | int | 11 | 类型ID,主键 |
device_type | varchar | 255 | 类型代号 |
device_name | varchar | 255 | 类型名称 |
表3-5 日志表(log)
字段名 | 数据类型 | 长度 | 备注 |
log_id | int | 11 | 日志ID,主键 |
time | datetime | 创建时间 | |
device | varchar | 255 | 设备名称 |
user | varchar | 255 | 用户名称 |
msg | varchar | 255 | 信息描述 |
第4章系统实现
4.1前端实现
本系统是一个前后端分离的项目,前端负责页面布局和渲染,使用 HTML、CSS 和 JavaScript 技术来实现,在项目文件夹中创建一个新的文件夹用于存放前端代码,命名为IOT-HTML,创建一个login.html和index.html作为登录页面和后台管理页面,接着创建一个 style的 文件来编写页面的样式,用于布局页面和美化,最后编写 JavaScript 代码来处理用户的输入、页面的动态效果等。前端的目录结构如图4-1所示。
图4-1 前端目录结构
4.2后端实现
4.2.1鉴权登录
在网站开发中,鉴权是确认用户是其声称的身份的过程,以确保其真实性;而授权则是确定用户是否具有执行某个操作或访问某个资源的权限。http协议本身是一种不反应状态的协议,这就意味着如果用户每一次请求时都要向后端的应用系统来发送用户名和密码来进行用户认证,这就造成巨大的服务器资源浪费。
基于token的鉴权机制,被广泛用于web中的认证中,这种类似于http协议也是无状态的,它并不需要刻意地在服务端去保留用户的认证信息或者会话信息。而这意味着基于token认证机制的应用就不需要去考虑用户在哪一台服务器登录了,只需携带token直接去服务器请求,服务器通过解密token来识别该用户,这就为应用的扩展提供了便利,以下是基于token鉴权机制的过程,如图4-2所示。
图4-2 token鉴权机制
该流程是一个简单的用户认证和授权过程,常用于用户登录并获取访问资源的权限。首先,用户在浏览器上输入用户名和密码,并使用POST的请求方式发送到服务器,服务器接收到该请求后,选择一种非对称加密算法,对该用户的信息提取出一段特征,最终生成一个加密的 token字符串,服务器将生成的 Token 作为响应返回给浏览器,浏览器收到 token 后,会将其存储在本地,通常是在浏览器的本地存储中,当用户在浏览器上请求需要认证的资源时,浏览器会自动将 该token 添加到请求的认证头中,在 HTTP 请求的头部中添加一个名为 Authorization 的字段,值为 Bearer Token,服务器接收到带有 token 的请求后,会解析 token,验证其有效性和完整性,在验证用户身份成功后,服务器返回用户请求的资源资源。
以下是智能家居管理系统获取token的登录过程,在登录页面输入用户名和密码信息,点击登录按钮提交表单,浏览器将用户名和密码信息封装在请求体中,以 POST 请求的形式发送到服务器,服务器接收到登录请求后,服务器返回登录凭证,前端接受到该凭证,显示登录成功并正式跳转到管理后台界面,登录页面如图4-3所示。
图4-3 登录功能
登录功能代码实现如图4-4所示。
图4-4 登录功能代码
4.2.2路由实现
为了同一后端提供的API接口,包括URL路径、HTTP请求方法、请求参数、返回数据格式等,使用了RESTful API设计风格,不同的 HTTP 方法来对应不同的资源操作,如 POST 用于创建资源,GET 用于获取资源,每一个路由路径对应一个方法,以达到相应前端的网络请求,本系统后端的路由实现如图4-5所示。
图4-5 路由实现
4.2.3业务逻辑调用
为了实现后端的业务逻辑,方便数据访问、处理等,本系统后端设计出降低耦合度,使系统更易于维护和扩展的一种类抽取方法,业务的调用过程如图4-6所示。
图4-6 业务逻辑调用
api层首先接收来自客户端的HTTP请求,解析请求,提取出其中的参数、路径、头部信息等,然后进行权限验证,一旦请求通过,将调用model层的相应方法或函数,传递请求所需的参数,model层负责将请求翻译成数据库操作语言,对数据库进行数据请求,最后把数据返回给api层再返给前端。
4.3功能实现
4.3.1数据统计
数据统计流程开始于实时监控和收集关于用户活动、设备状态及在线情况的数据,这些数据通过后端模块自动存储于数据库中[12]。接下来,采取数据处理措施,以确保数据的准确性和一致性,为统计分析做准备[13]。随后进行数据统计分析,通过SQL查询或数据分析工具提取关键信息,包括用户数量、设备总数、在线设备数量、警告数量等。数据统计界面如图4-7所示。
图4-7 数据统计界面图
数据统计核心代码如图4-8所示。
图4-8 数据统计代码
4.3.2设备管理
设备管理流程是一个精心设计的过程,为了高效地监控和控制各种智能设备。这一流程从设备的注册开始,每个新设备通过网络连接到系统时,系统自动识别并将其加入数据库,包括设备类型、名字、唯一标识符等信息[14]。随后,用户可以通过系统界面对设备进行配置和定制、调整参数等。系统还提供了设备状态监控功能,实时收集设备运行数据,如开/关状态、能耗信息等。系统支持远程控制,用户可随时通过Web界面调整设备设置或直接控制设备操作。为确保设备安全,还实施了安全措施,包括设备访问控制等,防止未授权访问。设备管理界面如图4-9所示。
图4-9 设备管理
设备添加界面如图4-10所示。
图4-10 设备添加
设备状态更改界面如图4-11所示。
图4-11 设备状态更改
设备管理的核心代码如图4-12所示。
图4-12 设备状态代码
4.3.3用户管理
用户管理流程包括浏览、增加、清除和修改用户等重要功能,以确保系统管理员能够有效地管理系统内的用户账户。当需要新增用户时,管理员填写用户的基本信息(比如名字、地址),系统随后会将这些信息储存到数据库中,完成用户增加过程。如果需要清除用户,管理员可以在用户列表中选择特定用户,执行清除操作,系统将从数据库中移除该用户的所有相关信息。修改用户功能允许管理员更新用户的信息,比如更改用户的名称、地址,确保用户信息的准确性和最新性。用户管理如图4-13所示。
图4-13 用户管理图
用户管理的核心代码如图4-14所示。
图4-14 用户管理代码
4.3.4日志管理
为了记录设备被更改过状态,该系统实现了每一个设备每一次被修改状态的记录,日志管理分为查看设备日志和删除日志,通过简洁的页面排版,可以只管地观看到设备状态变更的记录,同时,由于设备记录每时每刻都在生产,日志数据太过于庞大,系统提供日志删除的功能,筛选掉不想看到的设备变更记录。日志管理如图4-15所示。
图4-15 日志管理
日志删除如图4-16所示。
图4-16 日志删除
日志管理的核心代码如图4-17所示。
图4-17 日志管理代码
4.4云上部署
为了灵活、降低成本、可用性,采用云上部署是一种非常简便高效的方式,本系统使用centos7版本的服务器、mysql5.7作为数据库和ngnix挂靠前端网页的方式进行部署,以下详细描述云服务器的部署流程:
(一)搭建mysql数据库
第一步、下载MySQL 安装包:
[root@localhost local]# wget https://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm
安装mysql 安装源:
[root@localhost local]# yum -y localinstall mysql57-community-release-el7-11.noarch.rpm
第二步,在线安装MySQL
[root@localhost local]# yum -y install mysql-community-server
第三步、启动mysql 服务
[root@localhost local]# systemctl start mysqld
第四步,设置开机启动
[root@localhost local]# systemctl enable mysqld
[root@localhost local]# systemctl daemon-reload
第五步,修改root登录密码
mysql安装完成之后,会在/var/log/mysqld.log文件中给root生成了一个临时的默认密码。
[root@localhost local]# vim /var/log/mysqld.log
第六步,开放3306端口
[root@localhost local]#firewall-cmd --zone=public --add-port=3306/tcp --permanent
第七步,输入用户名密码进入mysql,如图4-18所示。
图4-18 mysql登录
第八步:创建数据库、创建数据库表
mysql> CREATE DATABASE db_iot;
mysql> CREATE TABLE `user` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`user_name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
`password` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL
.....
(二)安装go环境、部署后端工程
第一步:下载、解压、安装go
[root@localhost local]#wget https://dl.google.com/go/go1.12.4.linux-amd64.tar.gz
[root@localhost local]#tar -C /home/dev/opt -zxvf go1.12.4.linux-amd64.tar.gz
第二步:设置go环境变量
在~/.bash_profile的末尾添加以下内容:
export GOROOT=/home/dev/opt/go
export GOPATH=/home/dev/repos/gopath
export PATH=$PATH:$GOROOT/bin
查看go环境变量,完成配置,如图4-19所示。
[root@localhost local]# go env
图4-19 go环境变量
第三步:部署后端工程
打开后端项目代码所在的目录,执行部署命令,稳定运行,如图4-20所示。
[root@localhost local]# go run main.go
图4-20 命令部署
(三)安装nginx、部署前端工程
第一步:下载、解压、安装nginx
[root@localhost local]#wget http://nginx.org/download/nginx-1.17.1.tar.gz
[root@localhost local]#tar -zxvf nginx-1.17.1.tar.gz
[root@localhost local]#make install
第二步:更改nginx配置文件
[root@localhost local]# vim /etc/nginx/nginx.conf
在nginx.conf文件中添加端口的配置信息,如图4-21所示。
图4-21 ngnix配置
第三步:把前端文件放入/var/local目录中,即完成前端部署。
第5章软件测试与分析
为了确保软件的质量,软件测试是开发流程必不可少的阶段。这一过程涉及在特定的、可控的环境下运行系统或应用,并对其操作结果进行评估。这些控制条件囊括所有正常的使用场景[15]。软件测试的目的在于有意识地触发错误,以便发现软件在不应发生错误的时候发生了错误,或者在应该发生错误的时候没有发生错误。简而言之,软件测试的核心是通过“探测”来揭露软件中的问题。测试主要分为两种类型:白盒测试和黑盒测试。白盒测试关注于程序的源代码,主要验证程序内部的逻辑结构和数据流是否准确无误。而黑盒测试则基于程序的功能需求,主要验证程序的输入和输出是否达到了预期的效果[16]。本系统将以功能测试为例来探究和说明。
5.1功能测试
智能家居管理平台功能测试用例,如表5-1所示。
表5-1 功能测试用例表
功能 | 测试目标 | 前提条件 | 测试步骤 | 预期结果 |
用户 登录 | 确保用户能够成功登录到物联网管理平台 | 用户已获得有效的用户名和密码 |
3. 点击“登录按钮”。 | 用户成功登录到物联网管理平台,跳转到主页。 |
主页数据 | 确保用户能够成功看到主页数据概览 | 用户已登录,并具有足够的权限查看 | 查看主页:1. 进入用户管理界面。 | 成功看到主页数据概览。 |
用户 管理 | 确保用户管理功能能够添加、编辑、删除用户 | 用户已登录,并具有足够的权限执行操作 | 添加用户:1. 进入用户管理界面。2. 点击“添加用户”按钮。3. 输入用户信息。4. 点击“保存”按钮。 | 用户成功执行添加用户操作,系统正确保存用户信息。 |
编辑用户信息:1. 进入用户管理界面。2. 找到要编辑的用户。3. 点击“编辑”按钮。4. 修改用户信息。5. 点击“保存”按钮。 | 用户成功执行编辑用户操作,系统正确更新用户信息。 | |||
删除用户:1. 进入用户管理界面。2. 找到要删除的用户。3. 点击“删除”按钮。4. 确认删除操作。 | 用户成功执行删除用户操作,系统正确删除用户信息。 | |||
设备管理 | 确保设备管理功能能够添加、编辑、设备 | 用户已登录,并具有足够的权限执行操作 | 添加设备:1. 进入设备管理界面。2. 点击“添加设备”按钮。3. 输入设备信息。4. 点击“保存”按钮。 | 用户成功执行添加设备操作,系统正确保存设备信息。 |
编辑设备信息:1. 进入设备管理界面。2. 找到要编辑的设备。3. 点击编辑按钮。4. 修改设备信息。5. 点击“保存”按钮。 | 用户成功执行编辑设备操作,系统正确更新设备信息。 | |||
测试设备通信:1. 确保设备已正确添加到系统中。2. 向设备发送指令。3. 检查设备响应指令是否正确。 | 用户成功与设备进行通信,并且设备正确响应指令。 | |||
日志管理 | 确保日志管理功能能够查看、删除操作日志 | 用户已登录,并具有足够的权限查看日志 | 查看系统操作日志:1. 进入日志管理界面。 | 用户能够成功查看设备更改日志,正确展示操作日志。 |
删除日志:1. 进入日志管理界面。2. 选择要删除的日志3. 点击“删除”按钮。 | 用户能够成功删除日志。 |
5.2测试分析
本次测试针对物联网管理平台的功能进行了全面的测试,包括用户管理、设备管理、日志管理等核心功能,验证了系统的稳定性、可靠性和性能。测试中表现稳定可靠,核心功能均通过了测试、符合预期。用户能够顺利进行用户管理、设备管理和日志管理操作,系统能够正确响应用户的请求并记录操作日志。然而,仍有一些改进空间,如改进用户界面设计,提升用户体验、进一步优化设备通信功能,确保通信稳定性和实时性。
此次测试结果表明,智能家居管理系统的用户登录机制设计得当,能够满足用户登录时的基本安全和操作需求。
在本论文中,我成功地开发出了一个功能简洁、用户友好的智能家居管理平台。该系统集成了多种智能设备的控制与管理,包括但不限于灯光控制、温度调节、光照传感器等,通过一体化的界面为用户提供了便捷的操作体验。通过对系统的综合测试,证明了其稳定性和高效性,达到了预期的设计目标。
虽然在智能家居管理系统的应用与开发方面取得了一定的成果,但还存在一些需要改进的地方。系统的智能化程度需要提高,系统缺乏对用户行为学习和预测的功能,未来可以通过引入更先进的机器学习算法来改进这一点,实现更加个性化的智能服务。系统的兼容性和扩展性也需要着重改进,随着智能家居设备种类的增多,如何确保系统能够兼容更多类型的设备,以及如何方便地增加新的功能,将是未来研究的关键。最后,安全性问题也很重要。智能家居系统涉及用户的个人隐私和家庭安全,因此需要进一步加强通信数据加密和隐私保护措施,确保用户信息的安全。
更多推荐
所有评论(0)