【版本】
当前版本号v20230222
版本 | 修改说明 |
---|---|
v20220417 | 更新了实验2.2的实验要求 |
v20230222 | 更新 Mosquito 为 EMQX,更新了项目的截图 |
v20220428 | 初始化版本 |
任务2.1 - 构建设备端项目表情温度计(iot-thermometer-init)
【任务目的】
- 掌握 Maven 项目的导入和配置
- 掌握使用 Flyway 来构建数据库
【任务环境】
- 内存:至少4G
- 硬盘:至少空余40G
- 操作系统: Windows 系统。
【任务资源】
【任务要求】
- 构建
表情温度计
项目的数据库。 - 能够运行
表情温度计
应用。访问http://localhost:8100/ 能够查看应用首页。
【任务步骤】
解压
iot-thermometer-init.zip
项目,并使用 IDEA 打开项目。进入IDEA 菜单,
File
->Settings
,修改为你的Maven
的安装路径和settings.xml
的路径。使用 HeidiSQL 运行脚本
src/main/resources/V000__CREATE_DB_AND_USER.sql
,创建数据库iotthermo
、数据库用户和授权。利用 Flyway 进行数据迁移,按顺序执行
src/main/resources/db/migration
下的 SQL 脚本。创建的表如下描述:
config
设备端的配置表tempemoji
温度对应的表情表emoji
表情表flyway_schema_history
flyway执行历史记录表
任务2.2 - 完成表情温度计温度更新功能
【任务目的】
- 掌握使用 Spring、SpringMVC、MyBatis 进行开发
- 掌握使用 Postman 调试 HTTP 协议 API
【任务环境】
- 内存:至少4G
- 硬盘:至少空余40G
- 操作系统: Windows 系统。
【任务资源】
【任务要求】
- 打开
iot-thermometer-init
项目,完善首页的更新温度功能。在首页输入温度,点击更新温度
,可以在首页查看到温度和表情,具体效果请参考以下实验效果。 - 在数据库表
tempemoji
中,每一行的数据表示一个温度范围对应的表情名称,例如以下数据表示当前温度大于等于18度(mint),小于28度(maxt)时,显示名称为comfort
的表情。
id | mint | maxt | emoji_name | upt_time |
---|---|---|---|---|
1 | 18 | 28 | comfort | 2022-04-28 09:56:33 |
- 当
tempemoji
表中mint为空,表示温度无下限。同理,maxt为空则表示温度无上限。
【任务效果】
- 访问首页http://localhost:8100/,输入温度值,并且点击
更新温度
按钮,会显示输入的温度和温度对应的表情。
【任务步骤】
- 完善
http://localhost:8100/showTempEmoji
API,获取温度和表情。/showTempEmoji
路径对应TempController.showTempEmoji
方法。以下为调用该 API 的实例。
- (1)当用户输入温度 10,并点击
更新温度
按钮。前端会向后端发起http://localhost:8100/showTempEmoji?temp=10 请求。其中参数temp
表示需要更新的温度。 - (2)正常的返回值如下所示。
{
"errcode":"0",
"errmsg":"更新温度成功",
"data":{
"temp":10,
"emoji":"(⊙﹏⊙)"
}
}
提示1:可以调用
TempEmojiServiceImpl.getFaceByTemp()
方法来获取温度对应表情。
提示2:可以使用 Postman 来调试
http://localhost:8100/showTempEmoji
API。
- 完善
TempEmojiMapper.xml
下的 SQL 语句的编写。
提示:当 SQL 语句中出现大于号或者小于号的时候,会和 XML 格式冲突导致解析错误。有2种处理方法:
(1)把大于号和小于号转码,大于号可以用
>
代替,小于号可以用<
代替。(2)用 CDATA 标签包围 SQL 语句。例如
<![CDATA[ SQL语句 ]]>
(3)查询
tempemoji
表时,条件有3种情况,
- mint≤当前温度<maxt
- 当前温度<maxt,mint is null
- 当前温度﹥mint,maxt is null