【版本】
当前版本号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_historyflyway执行历史记录表
任务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/showTempEmojiAPI,获取温度和表情。/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/showTempEmojiAPI。
- 完善 
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
 
