【非常小白的后端学习笔记二】设计一个简单的智能家居管理系统(已更新效果图)

经过上一篇文章中对后端发展技术的总结,我认为我可以根据这个发展过程逐步增加自己项目中的技术点。因此,我需要设计一个具体的项目,不断往这个项目中增加内容。
以下内容是我在gpt老师的帮助下共同完成的,内容很多,且目前还没设计完成,我将把笔记分成多个博客上传,下面上传的是到今天为止已经完成的部分。
另外,我把实验过程上传到CSDN,一方面是为了督促自己学习,另一方面是为了方便查看笔记,所以会有自己的侧重点,也可能会有出错的地方,这是不够完美的笔记,请不要介意。以及,如发现错误,欢迎批评指正,感恩~

简介

我设计了一个智能家居管理系统,这一版本的功能比较简单,版本号命名为1.0。

引言

在现代社会,科技的飞速发展正在深刻地改变着我们的生活方式。智能家居管理系统正是在这一大背景下应运而生的创新产品。它不仅代表着居家生活的未来趋势,而且彰显了科技带来的便利和舒适。本系统的核心理念是通过高度集成的智能化解决方案,将家庭成员的日常生活与科技无缝对接,从而提升生活品质,增强家居安全,实现能源效率的最大化。

用户可以做什么

在目前的初步设计下,用户可以通过本系统实现以下功能:

  1. 家庭管理: 用户可以添加并管理自己的家,无论是一个还是多个,每个家都有一个独立的识别ID和详细信息。

  2. 访客管理: 系统提供了访客记录功能,使得用户可以查看所有访问者的信息,包括到访时间,确保家庭安全。

  3. 健康与环境监测: 实时监控空气质量、温度和湿度,为家庭成员提供健康舒适的居住环境。

  4. 能源监控: 对家中的用电、用水、燃气和网络使用情况进行监测,帮助用户合理规划能源使用,降低开支。

  5. 智能家居控制: 无论用户身在何处,都可以通过系统远程控制家中的智能设备,包括灯光、暖气等。

  6. 售后服务: 用户可以方便地查询家电的购买和保修信息,系统还将与商家连接,为用户提供便捷的售后服务。

相关技术

本系统将采用Java语言搭配Spring Boot框架进行后端开发,利用MySQL数据库管理数据。前端将应用现代网页技术,包括但不限于HTML, CSS, JavaScript等,来构建一个直观、响应式的用户界面。

在开发过程中,由于对前端部分不够了解,我将利用gpt共同完成。另外,在这个过程中,我预期实现的目标包括:

  1. 深入理解并应用Spring Boot框架处理请求,实现业务逻辑和响应数据,掌握其依赖注入、安全性、数据管理等核心功能。
  2. 采用MyBatis操作MySQL数据库,通过编写SQL语句和Mapper接口,采用了动态SQL和XML映射文件等技术,实现基本的增删查改等功能。
  3. 除了数据库的基本操作以外,还将涉及更复杂的操作,包括分页查询、预编译SQL、查询优化、事务管理、触发器等。
  4. 了解前端开发技能,包括构建动态网页和用户界面(非我的学习重点)。
  5. 使用Maven对项目进行依赖管理和构建。
  6. 学习使用版本控制工具如Git来进行代码管理。

下面开始我的的项目设计。由于项目目前还没有设计完成,且内容比较多,后续我将继续更新,写成多篇笔记。

一、概念结构设计

1.1 E-R图

1.1.1 实体与属性

  1. 用户(user):
    用户ID(user_id)、用户名(username)、密码(password)、电话号码(phone_num)。
  2. 家(home):
    家ID(home_id)、地址(address)、家的名称(name)。
  3. 访客管理系统(visitor_management):
    记录ID(record_id)、家ID(home_id,外键)、访客ID(visitor_id)、访问时间(visit_time)。
  4. 健康和环境监测系统(health_environment_monitoring):
    记录ID(record _id)、家ID(home_id,外键)、监测时间(monitoring_time)、空气质量(air_quality)、温度(temperature)、湿度(humidity)。
  5. 能源监控系统(energy_monitoring):
    记录ID(record_id)、家ID(home_id,外键)、监测时间(monitoring_time)、用电量(electricity_usage)、用水量(water_usage)、燃气使用量(gas_usage)、网络使用情况(internet_usage)。
  6. 家电(appliance):
    设备ID(device_id)、家ID(home_id,外键)、家电类型ID(type_id,外键)、当前模式(current_mode, 外键)、产品名称(product_name)、购买时间(purchase_date)、保修期(warranty_period)、商家ID(vendor_id,外键)。
  7. 家电类型(device_type):
    类型ID(type_id)、家电类型名称(type_name)。
  8. 智能模式(mode):
    模式ID(mode_id)、模式所属类型ID(type_id,外键)、模式名称(mode_name)、模式描述(mode_description)。
  9. 商家(vendor):
    商家ID(vendor_id)、商家名称(vendor_name)、电话号码(phone_num)。

1.1.2 完整的E-R图

在这里插入图片描述
联系说明:

  1. 用户与家:多对多关系(需多建立一张对应表)。
  2. 家与访客管理系统:一对多关系。
  3. 家与健康和环境监测系统:一对多关系。
  4. 家与能源监控系统:一对多关系。
  5. 家与家电:一对多关系。
  6. 家电与商家:一对多关系。
  7. 家电类型与家电:一对多关系。
  8. 家电类型与智能模式:一对多关系。
  9. 家电与智能模式:多对多关系(需多建立一张对应表)。

1.2 数据字典:

1.	用户(user)
•	user_id:整型(INT),主键。
•	username:字符串(VARCHAR),用户的名字。
•	password:字符串(VARCHAR),加密的密码。
•	phone_num:字符串(VARCHAR),联系方式。
2.	家(home)
•	home_id:整型(INT),主键。
•	address:字符串(VARCHAR),地址。
•	name:字符串(VARCHAR),家的名称。
3.	用户-家的对应表(user_home)
•	user_id:整型(INT),外键,指向用户表。
•	home_id:整型(INT),外键,指向家表。
4.	访客管理系统(visitor_management)
•	record_id:整型(INT),主键。
•	home_id:整型(INT),外键,指向家表。
•	visitor_id:整型(INT),访客的标识。
•	visit_time:日期时间(DATETIME),访问时间。
5.	环境监测系统(health_environment_monitoring)
•	record_id:整型(INT),主键。
•	home_id:整型(INT),外键,指向家表。
•	monitoring_time:日期时间(DATETIME),监测时间。
•	air_quality:字符串(VARCHAR),空气质量。
•	temperature:浮点型(FLOAT),温度。
•	humidity:浮点型(FLOAT),湿度。
6.	能源监控系统(energy_monitoring)
•	record_id:整型(INT),主键。
•	home_id:整型(INT),外键,指向家表。
•	monitoring_time:日期时间(DATETIME),监测时间。
•	electricity_usage:浮点型(FLOAT),用电量。
•	water_usage:浮点型(FLOAT),用水量。
•	gas_usage:浮点型(FLOAT),燃气使用量。
•	internet_usage:字符串(VARCHAR),网络使用情况。
7.	家电(appliance)
•	device_id:整型(INT),主键。
•	home_id:整型(INT),外键,指向家表。
•	type_id:整型(INT),外键,指向家电类型表。
•	current_mode:整型(INT),外键,指向智能模式表。
•	product_name:字符串(VARCHAR),产品名称。
•	purchase_date:日期(DATE),购买时间。
•	warranty_period:字符串(VARCHAR),保修期。
•	vendor_id:整型(INT),外键,指向商家表。
8.	商家(vendor)
•	vendor_id:整型(INT),主键。
•	vendor_name:字符串(VARCHAR),商家名称。
•	phone_num:字符串(VARCHAR),电话号码。
9.	家电类型(device_type)
•	type_id:整型(INT),主键。
•	type_name:字符串(VARCHAR),家电类型名称。
10.	智能模式(mode)
•	mode_id:整型(INT),主键。
•	mode_name:字符串(VARCHAR),模式名称。
•	mode_description:字符串(VARCHAR),模式描述。
•	type_id:整型(INT),外键,指向家电类型表。
11.	家电与智能模式的对应表(appliance_mode)
•	device_id:整型(INT),外键,指向家电表。
•	mode_id:整型(INT),外键,指向智能模式表。

二、逻辑结构设计

2.1 关系模式:

1.	user(user_id, username, password, phone_num)
•	主码:user_id
•	外码:无
•	满足的范式:3NF
2.	home(home_id, address, name)
•	主码:home_id
•	外码:无
•	满足的范式:3NF
3.	user_home(user_id, home_id)
•	主码:(user_id, home_id)
•	外码:user_id 引用 user(user_id),home_id 引用 home(home_id)
•	满足的范式:3NF
4.	visitor_management(record_id, home_id, visitor_id, visit_time)
•	主码:record_id
•	外码:home_id 引用 home(home_id)
•	满足的范式:3NF
5.	health_environment_monitoring(record_id, home_id, monitoring_time, air_quality, temperature, humidity)
•	主码:record_id
•	外码:home_id 引用 home(home_id)
•	满足的范式:3NF
6.	energy_monitoring(record_id, home_id, monitoring_time, electricity_usage, water_usage, gas_usage, internet_usage)
•	主码:record_id
•	外码:home_id 引用 home(home_id)
•	满足的范式:3NF
7.	appliance(device_id, home_id, type_id, current_mode, product_name, purchase_date, warranty_period, vendor_id)
•	主码:device_id
•	外码:home_id 引用 home(home_id),type_id 引用 device_type(type_id),vendor_id 引用 vendor(vendor_id),current_mode 引用 mode(mode_id)
•	满足的范式:3NF
8.	vendor(vendor_id, vendor_name, phone_num)
•	主码:vendor_id
•	外码:无
•	满足的范式:3NF
9.	device_type(type_id, type_name)
•	主码:type_id
•	外码:无
•	满足的范式:3NF
10.	mode(mode_id, mode_name, mode_description, type_id)
•	主码:mode_id
•	外码:type_id 引用 device_type(type_id)
•	满足的范式:3NF
11.	appliance_mode(device_id, mode_id)
•	主码:(device_id, mode_id)
•	外码:device_id 引用 appliance(device_id),mode_id 引用 mode(mode_id)
•	满足的范式:3NF

三、系统功能模块图

3.1 功能设计

整体效果:
整体效果

能源监测系统:
能源监测效果
访客管理系统:
在这里插入图片描述
健康与环境监测系统:
在这里插入图片描述
家电系统:
在这里插入图片描述

3.2 效果图(部分)

登录:主界面
在这里插入图片描述

注册:点击登录界面下方的“立即注册”进入注册界面,注册完成后会自动跳转到登录界面,或直接点返回
在这里插入图片描述

家选项界面:登陆后进入家选项界面,右侧将根据后端查询的结果,显示对应数量的家居号和编号
在这里插入图片描述
家信息修改界面:点击左下角,可管理当前账号的家
在这里插入图片描述
家界面:在家选项界面的右侧,点击家居号,可进入具体的家居管理界面,界面包括主要的四个功能
在这里插入图片描述
能源监测:点击能源监测,进入当前监测界面,可选择具体的监测内容
在这里插入图片描述
以电界面为例:左侧显示当前数据,右侧显示具体的变化曲线
在这里插入图片描述
水、燃气、网效果相同,不再展示,。

访客管理系统包括三个主要功能:
在这里插入图片描述
监控:这里用暂时用本地摄像头模拟。
在这里插入图片描述
访客列表和信任列表均展示表格,且做了添加/移除信任的操作:
在这里插入图片描述

在这里插入图片描述
健康与环境系统和能源监测系统类似,这里不再展示。

最后是家电界面,为了减轻前端部分的工作量,我简化了网页内容,涉及的内容如下:

  1. 照明类:吊灯、台灯、地灯、智能LED灯、智能灯带、其他
  2. 窗帘类:遮光帘、透光帘、其他
  3. 空调类:中央空调、普通空调、空气净化器、加湿器、除湿器、暖气片、其他
  4. 机器人类:扫地机器人、助理机器人、宠物机器人、教育辅助机器人、其他
  5. 厨房类:智能冰箱、智能水龙头、智能料理机、其他
  6. 娱乐类:智能电视、游戏机、家庭影院系统、数字音乐播放器、智能音箱、其他
  7. 安防类:智能门锁、智能车库门控制器、其他
  8. 健康类:智能健康监测设备、其他
  9. 家居自动化类:智能插座、自动宠物喂食器、智能浇花系统、其他

在第一个下拉栏中选择设备类型(如照明类)、在第二个下拉栏中选择具体设备(如台灯),表格将展示屋内所有已录入的设备类(如全部台灯,不同台灯有着不同编号/名称等)。
如下图所示:
在这里插入图片描述
点击智能模式的修改,出现悬浮窗,可更改模式,具体设备可选择的模式不同,这里需要读取后端的智能模式(mode)表,查询当前类型设备可选模式,图中为效果样例:
在这里插入图片描述
上述效果图的代码见我的GitHub,双击login进入主界面。

后续内容将在下一篇笔记中说明。

四、详细设计

4.1 环境准备
4.1.1 sql建表语句:
4.1.2 数据准备
4.1.3 springboot等开发环境准备
4.2 接口文档
4.3 前端准备
4.4 后端(详细)

五、系统实现与设计

  • 21
    点赞
  • 33
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
本文首发于DF创客社区作者:2877137721 原文链接: DIY属于你的智能家居系统,zigbee,esp8266,51单片机 DIY家庭智能家居控制系统(2)51,zigbee,esp8266 相关附件于原文下方下载 【介绍】 随着微功耗处理器以及通讯芯片的发展,以往较为耗能的有线通讯方式越来越阻碍了通讯网络的发展,于是一大批的无线通讯方案应运而生,例如NBIOT,蓝牙4.0,zigbee等等。同时微功耗无线处理器的流行使得传统家电带上了智能的色彩,智能家居必将是未来家庭的必备。某些高科技企业也在揶揄这块市场,纷纷推出了自家的智能家居解决方案,比较知名的有米家方案以及阿里智能的解决方案。但是回到现实的使用上来说,每个家庭的条件环境其实不一样,同样的产品未必在每个家庭上都可以使用方便,所以个性化的定制产品才可以更好的方便我们的生活。 于是在暑假期间,萌生了DIY一套智能家居方案的想法,具有各种智能开关和传感器等节点,并且对接物联平台实现联网控制以及数据的上传。由于家庭中将会使用到的智能设备种类繁多,所以我将采用模块化的设计思路,即采用核心板加外围功能部分的思路,像搭积木一样的构建各个智能设备。大家有同样想制作的想法可以参考。 截至发帖前,我完成了智能网关,智能墙壁开关,无线遥控开关以及无线气象站的设计制作,之后有新的设备加入的话,我会及时的更新。 【准备事项】 完成这个涉及到多方面的项目,需要的硬件设备以及开发环境较多,所以我先大概给出一个列表: 软件篇: ArduinoIDE:用于给ESP8266编程使用 KEIL uVision5 :用于给51单片机编程使用 串口调试器:用于监控单片机输出数据 lceda设计软件:绘制电路原理图,设计PCB电路板 硬件篇: NodeMCU开发板一块 亿佰特zigbee模块若干(视节点数量而定) STC8F2系列单片机若干 核心的主要控制器件在此列出,其他元器件会在制作过程中一一说明。 【制作过程】 我构想了一张智能家庭的网络拓扑图,大家可以欣赏以下,后期图上的设备都将加入进来: 由于涉及到多个设备的设计制作,所以本个报名贴先奉上智能家居核心板,智能网关以及无线气象站的制作过程: #制作过程之核心板篇# >>>本项目使用zigbee网络进行智能家居之间的通信。 好早之前就接触过zigbee组网,对于这种低成本低功耗的网络还是抱有很大信心的。这里讲解选择这个网络的几大理由: mesh结构的网络很适合智能家居的控制结构,在入网的任何一个节点都可以访问到所有节点的数据,这点很适合网关控制各个设备。 低功耗使得终端设备甚至可以采用电池供电,使得所有的模组都尽量可能的无线化。 多跳传输,无线方案中最大的问题就是数据发送的不稳定以及障碍物对信号的遮挡导致数据无法正确传输,而ZigBee的多跳恰好解决了这个问题,节点会自动选择优质的传输路线多跳传输,保证信号质量。 总结一下:zigbee网络确实是好,但是对于我这种比较懒惰的人并不想去学习那复杂的传输理论以及zigbee通讯芯片的编程,于是我选择上网购买ZigBee模块,最后选择了一种小型的串口转zigbee模块,比较方便单片机通讯。 说到模块化,那么就需要核心的控制板。本质来说就是将单片机以及购买的zigbee模块集成到一张电路板上,并且预留各种接口,方便后期移植到各种设备上,这样一张电路板就可以适用各种智能家居设备了。 在保证功能足够的同时,体积也是我需要考虑的问题,如果核心板做的过大,会导致无法安装到某些空间狭小的智能设备中,所以小体积是我所着重考虑的。 基于多方面考虑之后,stc8F2k08s2进入了我的视线,小巧的sop16封装以及简单的外围电路,足够的IO口(14个)。这款芯片成为了核心板的控制单片机。于是一番绘制原理图以及PCB之后,成品大概明朗了: 焊接好的成品如下: 这将会成为以后所有我的智能家居方案的核心控制板。 #制作过程之智能网关篇# 完成了核心板的制作,网关成为了下一个比较关注的对象,因为家中的所有智能设备的控制以及通讯都会由他来完成,包括链接到互联网上传数据,所以说对于网关的硬件选取也是重中之重。上联互联网,下接zigbee小型通讯网,网关担任了一个家庭控制中心的角色,对于它的选择我认为esp8266是个不错的方案,可以支持arduino ide编程,这对于不太了解网络通讯协议的我来说是个好消息,因为在arduino的编程中,我可以借助强大的库函数来完成我想要的功能。 ESP8266是一个拥有了近80Mhz的主频的32位处理器,内置了wifi模组省去了网线,并且拥有丰富的外设以及较高的性能,可以胜任智能网关的工作。当然,近期乐鑫发布的ESP32系列芯片也会是个好的选择,更高的主频以及wifi蓝牙双模的设计让其拥有更加方便的接
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值