Part 2 - 设备端项目构建和开发

2022-04-28
4分钟阅读时长

【版本】

当前版本号v20230222

版本修改说明
v20220417更新了实验2.2的实验要求
v20230222更新 Mosquito 为 EMQX,更新了项目的截图
v20220428初始化版本

任务2.1 - 构建设备端项目表情温度计(iot-thermometer-init)

【任务目的】

  • 掌握 Maven 项目的导入和配置
  • 掌握使用 Flyway 来构建数据库

【任务环境】

  • 内存:至少4G
  • 硬盘:至少空余40G
  • 操作系统: Windows 系统。

【任务资源】

实验资源下载

【任务要求】

  1. 构建表情温度计项目的数据库。
  2. 能够运行表情温度计应用。访问http://localhost:8100/ 能够查看应用首页。

【任务步骤】

  1. 解压iot-thermometer-init.zip项目,并使用 IDEA 打开项目。

  2. 进入IDEA 菜单, File->Settings,修改为你的Maven的安装路径和settings.xml的路径。

  3. 使用 HeidiSQL 运行脚本src/main/resources/V000__CREATE_DB_AND_USER.sql,创建数据库iotthermo、数据库用户和授权。

  4. 利用 Flyway 进行数据迁移,按顺序执行 src/main/resources/db/migration 下的 SQL 脚本。创建的表如下描述:

  • config 设备端的配置表
  • tempemoji 温度对应的表情表
  • emoji 表情表
  • flyway_schema_history flyway执行历史记录表
  1. 使用 HeidiSQL 访问数据库iotthermo,检查是否存在以上表。

  2. 启动 EMQX。

  3. 启动IoTThermometerApplication,访问。测试是否能够正常访问。

任务2.2 - 完成表情温度计温度更新功能

【任务目的】

  • 掌握使用 Spring、SpringMVC、MyBatis 进行开发
  • 掌握使用 Postman 调试 HTTP 协议 API

【任务环境】

  • 内存:至少4G
  • 硬盘:至少空余40G
  • 操作系统: Windows 系统。

【任务资源】

实验资源下载

【任务要求】

  1. 打开iot-thermometer-init项目,完善首页的更新温度功能。在首页输入温度,点击更新温度,可以在首页查看到温度和表情,具体效果请参考以下实验效果。
  2. 在数据库表tempemoji中,每一行的数据表示一个温度范围对应的表情名称,例如以下数据表示当前温度大于等于18度(mint),小于28度(maxt)时,显示名称为comfort的表情。
idmintmaxtemoji_nameupt_time
11828comfort2022-04-28 09:56:33
  1. tempemoji表中mint为空,表示温度无下限。同理,maxt为空则表示温度无上限。

【任务效果】

  1. 访问首页http://localhost:8100/,输入温度值,并且点击更新温度按钮,会显示输入的温度和温度对应的表情。

【任务步骤】

  1. 完善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。

  1. 完善 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

扫码或长按识别访问