版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第五章智慧家居传感器数据采集与展示系统技能目标能够安装和配置VSCode,并能够使用VSCode进行编程。能够安装和部署Flask环境并进行基础编程。能够安装和配置MySQL并通过编写SQL语句操作数据库。能够采集、存储智慧家居数据并使用机器学习算法处理传感器数据。能够对传感器数据进行可视化展示。本章任务学习本章,读者需要完成以下任务。设计并实现一个智慧家居传感器数据采集与展示系统,旨在通过传感器采集家庭环境中的数据,并对这些数据进行分析和展示,以帮助用户了解家居环境的状态。该系统将包括传感器数据采集、存储、处理和展示四个部分。任务5.1安装和配置VSCode并掌握使用方法。任务5.2Flask环境部署与基础编程。任务5.3MySQL安装配置与基础操作。任务5.4智慧家居数据采集与处理。任务5.5数据可视化展示。任务1安装和配置VSCode并掌握使用方法01【任务描述】安装和配置VSCode,并通过示例操作掌握其基本使用方法。任务1安装和配置VSCode并掌握使用方法01【关键步骤】(1)安装和配置VSCode。(2)掌握VSCode基本使用方法。(1)下载VSCode安装包。首先前往VSCode官网下载对应平台安装包。本小节下载Ubuntu平台下的deb安装包,如图5-1-1所示。(2)安装VSCode。5.1.1
安装和配置VSCode(3)配置VSCode。新安装的VSCode的默认语言环境是英语,要切换到中文环境,最简单的方式是安装中文插件。如图所示,点击左侧栏的插件安装图标进入插件安装界面,搜索中文简体,点击安装语言包即可。5.1.1
安装和配置VSCode(1)新建项目工作空间。使用命令mkdirworkspace&&cdworkspace新建一个名为workspace的工作空间并进入,如图所示。5.1.2
VSCode基本使用方法(2)使用VSCode打开项目工作空间。如图所示,点击“打开文件夹”按钮,选择需要打开的项目文件夹。此处以home目录中的workspace为例,选择workspace后会打开相应文件夹。(3)新建项目文件并编写测试代码。在workspace文件夹中安装Python扩展,如图所示。新建一个名为main.py的文件,并编写测试代码。5.1.2
VSCode基本使用方法(4)运行代码查看结果。如图所示,点击操作页面右上角的运行命令,可以查看代码运行结果。任务2Flask环境部署与基础编程02【任务描述】安装Flask,并通过编程实践了解和掌握Flask的基本使用方法。任务2Flask环境部署与基础编程02【关键步骤】(1)安装Python3。(2)安装Flask。(3)Flask基本使用方法。5.2.1
安装Python3推荐使用最新版本的Python。Flask支持Python3.6及其以上的版本。若要用到contextvars.ContextVar,则需要Python3.7以上的版本。Ubuntu22.04默认安装了Python3,因此用户不需要手动安装。除此之外,用户还需要安装Python包管理工具pip,使用以下命令即可完成安装。(1)安装pip。sudoaptupdatesudoaptinstallpython3-pip(2)配置Python虚拟环境。在Ubuntu22.04环境下配置Python虚拟环境,如图所示。sudoaptinstallvirtualenvsudoaptinstallvirtualenvwrapper5.2.1
安装Python3(3)配置当前用户的环境变量。在命令行中输入以下命令进行环境配置,环境变量如图所示。vim~/.bashrcexportVIRTUALENVWRAPPER_PYTHON=/usr/bin/python3exportWORKON_HOME=~/virtualenvssource/usr/share/virtualenvwrapper/virtualenvwrapper.sh(4)刷新配置文件。使用以下命令刷新配置文件,如图所示。source~/.bashrc5.2.1
安装Python3(5)使用虚拟环境。用户可以使用以下命令进行虚拟环境的创建、查询、进入、退出及删除操作。①创建虚拟环境。命令格式:mkvirtualenv[虚拟环境名称]。如图所示,使用mkvirtualenvdemo命令创建虚拟环境,其中,demo是为演示需要而设置的虚拟环境名称。②查询虚拟环境。命令格式:workon。如图所示,使用workon查询虚拟环境。③进入虚拟环境。命令格式:workon[虚拟环境名称]。④退出虚拟环境。命令格式:deactivate。⑤删除虚拟环境。命令格式:rmvirtualenv[虚拟环境名称]。5.2.2
安装Flask建议在开发环境和生产环境下都使用虚拟环境来管理项目的依赖。随着Python项目越来越多,用户会发现不同项目需要不同版本的Python库。虚拟环境可以为每一个项目安装独立的Python库,这样就可以隔离不同项目之间的Python库,也可以隔离项目与操作系统之间的Python库。Python内置了用于创建虚拟环境的venv模块。(1)创建一个虚拟环境。使用以下命令创建一个项目文件夹,然后创建一个虚拟环境。创建完成后,项目文件夹中会有一个flaskvenv文件夹,如图所示。mkdirmyproject#创建一个项目文件夹cdmyproject#进入创建的项目文件夹python-mvenvflaskvenv#创建一个虚拟环境,其中,flaskvenv为虚拟环境的名称5.2.2
安装Flask(2)激活虚拟环境。在开始工作前,先使用以下命令激活相应的虚拟环境:通过cdflaskvenv命令进入flaskvenv目录,通过source执行其bin目录中的activate命令,激活虚拟环境,如图所示。(3)安装Flask。通过以下操作更新pip清华源,如图所示。在已激活的虚拟环境中可以使用如下命令安装Flask:pipinstallFlask在Ubuntu22.04环境下使用Python虚拟环境安装Flask,如图所示。5.2.3
Flask基本使用方法(1)部署一个简单的Web项目。在Visualstudiocode中选择“文件”→“打开文件夹”,选择打开5.2.2节中创建的myproject文件夹,如图所示。在打开的myproject文件夹中新建一个文件flaskdemo.py,如图所示,并输入以下Flask应用代码。点击VSCode界面右上角的运行按钮,启动Flask应用,然后在浏览器中输入localhost:5000,即可看到Web应用返回的界面,如图所示。5.2.3
Flask基本使用方法(2)通过浏览器向服务端传递参数。很多时候,需要通过URL传递参数、进行数据筛选等,示例代码如下所示。重新启动,然后在浏览器中输入“localhost:5000/info?id=123456789”,即可显示效果,如图所示。5.2.3
Flask基本使用方法(3)在浏览器显示静态HTML页面。在放置Python脚本的文件夹下新建一个templates文件夹,将所有想调用的HTML文件都放在这个文件夹里面。下面以一个简单的HTML文件为例进行演示。①创建一个名为simpledemo.html的文件,并在文件中编辑以下代码。此时,Flask项目的文件夹结构如图所示。②修改Python脚本。③重新运行脚本。在浏览器中输入地址,调用HTML页面,如图所示。5.2.3
Flask基本使用方法(4)在HTML页面中显示URL传递的参数。①修改Python脚本。修改Python脚本代码,使其可以接收URL传递的参数,示例代码如下所示。代码中的“userid”是传入simpledemo.html模板的值,当然,也可以有第二个、第三个参数值传入。②修改simpledemo.html文件。修改HTML页面代码,使其接收并显示传入的参数值,示例代码如下所示。5.2.3
Flask基本使用方法“{{userid}}”就是通过浏览器传递的参数值。③重启,在浏览器中输入URL,HTML页面显示URL参数(5)在HTML页面中显示图片。①新建文件夹并存在图片。在放置Python脚本的文件夹下新建一个static文件夹,然后在static文件夹中新建一个images文件夹。将需要在HTML页面中显示的图片存放在images文件夹中。文件夹的层次关系如图所示。②修改simpledemo.html文件。修改HTML页面代码,使其显示图片,示例代码如下所示。5.2.3
Flask基本使用方法③重启,在浏览器中输入URL,HTML页面显示图片如图所示。(6)在HTML中显示ECharts图表。①下载echarts.js。在ECharts官方网站下载echarts.js,并将其存放入Flask项目的static目录下,如图所示。5.2.3
Flask基本使用方法②修改Python脚本。修改脚本代码,使其渲染模板EChartsDemo.html,示例代码如下所示。③编写EChartsDemo.html。在Flask项目的templates目录中新建EChartsDemo.html,并编写代码,如下所示。④启动Flask应用。任务3MySQL安装配置与基础操作03【任务描述】安装和配置MySQL,并通过SQL操作示例了解和掌握MySQL的基本使用方法。任务3MySQL安装配置与基础操作03【关键步骤】(1)安装配置MySQL。(2)MySQL基础操作。5.3.1安装配置MySQL使用sudoaptinstallmysql-server安装MySQL,如图所示。使用apt方式安装MySQL时,通常会安装MySQL的最新版本,且能够自动配置服务和环境变量。安装完成后,MySQL会自动启动,可以使用以下命令测试MySQL的安装情况,如图所示,表明MySQL已正常启动。使用MySQL安全配置向导mysql_secure_installation配置MySQL安全选项,如图所示。对于在配置过程中出现的问题,可以从主流搜索引擎中寻找解决方案。5.3.2MySQL基础操作(1)创建数据库。在登录MySQL服务后,使用
create
命令创建数据库,语法如下:CREATEDATABASE数据库名;图5-3-4演示了创建数据库的过程,数据库名为newsdb。(2)选择数据库。在用户连接到MySQL数据库后,可能存在多个数据库,因此需要选择目标数据库。用户可以使用SQL命令(use数据库名;)来选择指定的数据库。图5-3-5所示为选择数据库newsdb的过程。5.3.2MySQL基础操作(3)创建数据表。创建MySQL数据表需要的信息包括表名、表字段名、定义每个表字段。以下为创建MySQL数据表的SQL通用语法:CREATETABLEtable_name(column_namecolumn_type);具体而言,可以通过以下SQL语句在newsdb数据库中创建数据表news。5.3.2MySQL基础操作(4)插入数据。在MySQL表中使用
INSERTINTO语句来插入数据。向MySQL数据表插入数据的SQL语法如下所示:INSERTINTOtableName(field1,field2,...fieldn)VALUES(value1,value2,...valuen);如果是字符型数据,那么必须使用单引号或双引号,如"value"。图5-3-7展示了如何使用以下语句向news数据表插入1条数据,代码如下所示:INSERTINTOnews(title,author,date)
VALUES("news1","author1",NOW());如图5-3-7所示,箭头标记“->”不是SQL语句的一部分,它仅表示新行,如果一条SQL语句较长,那么可以通过回车键创建新行来编写SQL语句,SQL语句的命令结束符为英文格式的分号。5.3.2MySQL基础操作(5)查询数据。MySQL数据库使用SELECT语句来查询数据。查询数据通用的SELECT语法如下所示:5.3.2MySQL基础操作(6)分组。GROUPBY语句根据一个或多个列对结果集进行分组。在分组的列上可以使用COUNT、SUM、AVG等函数,其语法如下所示:通过GROUPBY语句对authors表中的数据按名称进行分组,并统计每位作者有多少条记录通过select*fromauthors;语句查看数据任务4智慧家居数据采集与处理04【任务描述】采集传感器数据并上传至EMQXBroker代理服务器;订阅EMQXBroker数据并将数据写入Kafka;使用Flink流计算作业将读取到的Kafka数据写入关系数据库MySQL中;使用Python编写程序,将MySQL中的数据写入分布式文件系统HDFS,进行持久化存储;使用机器学习算法对写入MySQL的数据进行建模和预测。任务4智慧家居数据采集与处理04【关键步骤】(1)采集传感器数据并上传至EMQXBroker代理服务器。(2)订阅EMQXBroker数据并写入Kafka。(3)将数据存储至关系数据库MySQL。(4)将数据存储至分布式文件系统。(5)应用机器学习算法进行数据趋势预测。5.4.1采集传感器数据并上传至EMQXBroker代理服务器在任务2.1中已练习了如何组建物联网环境。读者可以根据部署智慧家居的实际情况来在智慧家居环境中增加传感器的类型和数量。通过USB线将NodeMCU与计算机相连,此时可以使用计算机的设备管理器查看NodeMCU设备驱动是否正常,如果发现无法驱动,下载cp2101驱动并安装即可。正常烧录代码需要安装相关arduino库,使用ArduinoIDE可直接下载安装,所需的库分别是PubSubClient、ArduinoJson、DFRobot_DHT11。5.4.1采集传感器数据并上传至EMQXBroker代理服务器5.4.1采集传感器数据并上传至EMQXBroker代理服务器NodeMCU在将传感器数据上传到EMQXBroker代理服务器前,需要提前安装并运行EMQXBroker代理服务器(详见任务2.2)。在Windows操作系统上也可以安装和部署EMQXBroker代理服务器,其过程与Linux操作系统下的过程类似。5.4.2订阅EMQXBroker数据并写入Kafka由于EMQXBroker无法将数据直接推送到Kafka中,此处需要通过Python编程订阅EMQXBroker的传感器数据并发送到Kafka中。此处代码使用Python3编写,用到的库分别为paho-mqtt和kafka-python。可以通过“pipinstallpaho-mqtt==1.6.1”和“pipinstallkafka-python==2.0.2”命令安装。5.4.2订阅EMQXBroker数据并写入Kafka使用VSCode运行代码后会启动一个Kafka消费者进程。从图中可以看到传感器数据正在不断被发送到Kafka中。5.4.3将数据存储至关系数据库MySQL从EMQXBroker订阅传感器数据并送入Kafka缓存后,数据暂时保存在Kafka中,等待处理。此时运行Flink流计算作业,不断读取数据,并将处理结果写入MySQL进行持久化存储,为数据可视化做准备。使用IntelliJIDEA创建Flink流计算项目,点击“文件”→“新建”→“项目”,具体操作如3.4.4节所示,此处不再赘述。5.4.3将数据存储至关系数据库MySQL5.4.3将数据存储至关系数据库MySQL5.4.3将数据存储至关系数据库MySQL此处的Flink代码的作用是读取Kafka中缓存的传感器数据,将其转化为Java中的实体对象,然后通过Jdbc操作数据库将实体写入MySQL。在运行程序前,通过mysql-uroot-p进入MySQL后,通过以下命令创建数据库和数据表,如图所示。5.4.3将数据存储至关系数据库MySQL5.4.4MySQL数据存储至分布式文件系统本小节实现的功能是读取MySQL中的传感器数据并将其写入分布式文件系统HDFS,进行持久化存储。在VSCode中新建MySQL2HDFS.py文件。在VSCode的终端使用pipinstallhdfs安装hdfs包,如图所示。成功安装hdfs包后,开始编写Python程序,如下所示。其功能是连接MySQL数据库,读取sensor_data表中的数据,并转换数据格式,然后连接HadoopHDFS,最后将数据写入HDFS。5.4.4MySQL数据存储至分布式文件系统成功安装hdfs包后,开始编写Python程序,如下所示。其功能是连接MySQL数据库,读取sensor_data表中的数据,并转换数据格式,然后连接HadoopHDFS,最后将数据写入HDFS。在运行MySQL2HDFS.py前,首先在VSCode终端执行hadoopfs-ls/data命令,查看分布式文件系统/data目录下是否存在文件。然后运行MySQL2HDFS.py。程序运行结束后,再次执行hadoopfs-ls/data命令,查看分布式文件系统/data目录下是否存在文件,如图5-4-5所示,/data目录下出现了一个由MySQL2HDFS.py新建的文件sensor_data.txt。5.4.5应用机器学习算法进行数据趋势预测在5.4.3节已将采集到的温湿度传感器数据、人体红外传感器数据存储到了MySQL数据库中。本节以温度数据为例,采用机器学习算法中的线性回归算法对其进行趋势预测,并保存至MySQL数据库。如图所示,在本项目的数据库ds0中通过以下SQL语句新建一个名为temp_prediction的数据表。5.4.5应用机器学习算法进行数据趋势预测任务5数据可视化展示05【任务描述】完成传感器数据的持久化存储后,即可对数据进行可视化展示。对数据进行可视化展示的方案有很多种。例如,可以使用5.2节介绍的Flask实现一个读取MySQL数据并调用ECharts进行展示的Web应用系统。本小节以Grafana为例对传感器数据进行可视化展示。任务5数据可视化展示05【关键步骤】(1)安装与配置Grafana。(2)数据可视化展示。5.5.1安装与配置Grafana(1)下载并安装Grafana。(2)配置自动启动。通过以下命令配置自动启动Grafana:sudo/bin/systemctldaemon-reloadsudo/bin/systemctlenablegrafana-serversudo/bin/systemctlstartgrafana-server(3)通过Web访问Grafana。打开浏览器并输入Grafana服务器的URLhttp://grafana-ip:3000。默认用户名和密码均为admin。进入系统之后,系统将提示更改默认密码。Grafana界面如图所示。5.5.1安装与配置Grafana(4)设置数据源。在Grafana设置中选择Datasources选项卡,添加数据源。填写MySQL相关配置信息,完成数据源的添加操作,如图所示。(5)创建Dashboard。如图所示,点击“BuildaDashboard”按钮创建Dashboard。点击方框中的设置按钮,将Dashboard重新命名为SmartHomeData,并点击“Savedashboard”按钮保存。5.5.2数据可视化展示(1)创建“温度”panel。在对数据进行可视化前,需要先创建panel。如图所示,在重命名为SmartHomeData的Dashboard中点击框迭按钮后出现一个新的页面。如图所示,点击“Addanewpane
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 定音鼓市场发展预测和趋势分析
- 办公用胶产业深度调研及未来发展现状趋势
- 人教版英语八年级上册单元基础过关Units 4-5练习
- 工业用竹篮产业规划专项研究报告
- 壁炉炉钳市场需求与消费特点分析
- 家用切肉机产业规划专项研究报告
- 巴拉克拉瓦头套产业运行及前景预测报告
- 具有空气净化功能的防尘口罩市场需求与消费特点分析
- 外科用羊肠线产业深度调研及未来发展现状趋势
- 心脏内导管产业运行及前景预测报告
- 蓝色高考加油高考心里减压辅导培训PPT模板
- 纤维素的分子结构课件
- 种子市场细分目标市场的选择与定位讲义
- 国家基本药物目录
- 国家自然科学基金项目申请课件
- 抑郁症和抑郁情绪课件
- 四年级上册第十课美化我的文字《美化我的文字》课标版四年级上册
- 经期延长1课件
- 生物医学传感-生物传感器课件
- 安全警示标示牌整方案
- 《思想道德与法治》 课件 第六章 学习法治思想 提升法治素养
评论
0/150
提交评论